diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/COPYING.LESSER b/COPYING.LESSER new file mode 100644 index 0000000..fc8a5de --- /dev/null +++ b/COPYING.LESSER @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/Pickles.php b/Pickles.php index 0b76cf1..cbc4184 100755 --- a/Pickles.php +++ b/Pickles.php @@ -17,17 +17,19 @@ /** * @todo Allow users to override the timezone from their configuration file. */ +// Sets the timezone to avoid Smarty warnings if (ini_get('date.timezone') == '') { - date_default_timezone_set('America/New_York'); + ini_set('date.timezone', 'America/New_York'); } -/** - * @todo Change the TEMP_PATH to be named more accordingly (Smarty-centric) - * and ditch sys_get_temp_dir() and point to a directory inside the - * PICKLES path. - */ -define('PICKLES_PATH', (phpversion() < 5.3 ? dirname(__FILE__) : __DIR__) . '/'); -define('TEMP_PATH', sys_get_temp_dir() . '/pickles/smarty/' . $_SERVER['SERVER_NAME'] . '/'); +// Establishes our paths +define('SITE_PATH', getcwd() . '/'); +define('PICKLES_PATH', dirname(__FILE__) . '/'); +define('TEMP_PATH', PICKLES_PATH . 'tmp/'); +define('SMARTY_PATH', TEMP_PATH . 'smarty/' . $_SERVER['SERVER_NAME'] . '/'); + +// Loads the appropriately named configuration file +Config::load(SITE_PATH . '../config.xml'); /** * Magic function to automatically load classes @@ -39,15 +41,24 @@ define('TEMP_PATH', sys_get_temp_dir() . '/pickles/smarty/' . $_SERVER['SERVE * @return boolean Return value of require_once() or false (default) */ function __autoload($class) { - $class_file = PICKLES_PATH . 'classes/' . str_replace('_', '/', $class) . '.php'; - $model_file = PICKLES_PATH . 'models/' . str_replace('_', '/', $class) . '.php'; + $filename = str_replace('_', '/', $class) . '.php'; + $class_file = PICKLES_PATH . 'classes/' . $filename; + $model_file = PICKLES_PATH . 'models/' . $filename; + + // Loads the class file if (file_exists($class_file)) { return require_once $class_file; } + // Loads the shared model else if (file_exists($model_file)) { return require_once $model_file; } + // Loads Smarty + else if ($class == 'Smarty') { + return require_once 'contrib/smarty/libs/Smarty.class.php'; + } + // Loads nothing else { return false; } diff --git a/classes/Config.php b/classes/Config.php index 11e0437..aee4de3 100755 --- a/classes/Config.php +++ b/classes/Config.php @@ -1,27 +1,49 @@ . * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @todo Add the ability to load in multiple configuration files. + */ + +/** + * Config Class + * + * Handles loading a configuration file and parsing the data for + * any public nodes that need to be made available to the viewer. + * + * @usage $config = Config::getInstance(); + *$config->node; // Returns SimpleXML object */ class Config extends Singleton { /** * Private instance of the Config class */ - private static $instance; + private static $_instance; /** - * Private collection of data to be loaded by the viewer + * Private collection of public config data */ - private $viewer_data; + private $_public; /** * Private constructor @@ -31,19 +53,19 @@ class Config extends Singleton { /** * Gets an instance of the configuration object * - * Determines if a Config object has already been instantiated, if so it - * will use it. If not, it will create one. + * Determines if a Config object has already been instantiated, + * if so it will use it. If not, it will create one. * * @return An instace of the Config class */ public static function getInstance() { $class = __CLASS__; - if (!self::$instance instanceof $class) { - self::$instance = new $class(); + if (!self::$_instance instanceof $class) { + self::$_instance = new $class(); } - return self::$instance; + return self::$_instance; } /** @@ -52,57 +74,109 @@ class Config extends Singleton { * Handles the potential loading of the configuration file and * sanitizing the boolean strings into actual boolean values. * - * @param string $file File name of the config file to be loaded - * @return boolean Based on the success or failure of the file load - * @todo Either get rid of or make better use of the Error object + * @param string $file Filename of the XML file to be loaded + * @return boolean Success of the load process + * @todo Add the ability to load in multiple configuration files. */ - public function load($file) { + public static function load($file) { + $config = Config::getInstance(); + if (file_exists($file)) { - $this->file = $file; - /** - * @todo LIBXML_NOCDATA is 5.1+ and I want PICKLES to be 5.0+ - * compatible. Potential fix is to read the file in as - * a string, and if it has CDATA, throw an internal - * warning. + * @todo LIBXML_NOCDATA is 5.1+ and I want PICKLES to + * be 5.0+ compatible. Potential fix is to read + * the file in as a string, and if it has CDATA, + * throw an internal warning. */ - $this->data = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA); + $data = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA); // Loops through the top level nodes to find public nodes - $variables = get_object_vars($this->data); + $variables = get_object_vars($data); if (is_array($variables)) { foreach ($variables as $key => $value) { if (is_object($value) && isset($value->attributes()->public) && $value->attributes()->public == true) { - $this->viewer_data[$key] = $value; + $config->_public[$key] = $value; } + + $config->$key = $value; } } return true; } - else { - Error::addError('Unable to load the configuration file'); - return false; + } + + /** + * Gets the authentication value + * + * @return boolean The model's authentication setting or false + */ + public function getAuthentication() { + if (isset($this->models->authentication) && $this->models->authentication == 'true') { + return true; } + + return false; } /** - * Alias for $config->models->default + * Alias for $config->models->default with string cast * * @return Returns the default model set or null - * @todo Need to add a PICKLES fallback model just in case */ public function getDefaultModel() { - if (isset($this->data->models->default)) { - return (string)$this->data->models->default; + if (isset($this->models->default)) { + return (string)$this->models->default; + } + + return 'home'; + } + + /** + * Gets active status of the site + * + * @return boolean The site's disabled setting or false + */ + public function getDisabled() { + if (isset($this->models->disabled) && $this->models->disabled == 'true') { + return true; + } + + return false; + } + + /** + * Alias for $config->_public + * + * @return Returns the variable value or null if no variable. + */ + public function getPublicData() { + if (isset($this->_public)) { + return $this->_public; } return null; } - /** + /** + * Gets the session value * + * @return boolean The model's session setting or false + */ + public function getSession() { + if (isset($this->models->session) && $this->models->session == 'true') { + return true; + } + + return false; + } + + /** + * Gets the shared model + * + * @param string $requested_model The model being requested + * @return string The name of the shared model or null */ public function getSharedModel($requested_model) { @@ -113,8 +187,8 @@ class Config extends Singleton { $additional = '/' . $additional; } - if (isset($this->data->models->shared->model)) { - foreach ($this->data->models->shared->model as $shared_model) { + if (isset($this->models->shared->model)) { + foreach ($this->models->shared->model as $shared_model) { if (isset($shared_model->alias)) { if ($requested_model == $shared_model->alias) { return (string)$shared_model->name . $additional; @@ -128,33 +202,20 @@ class Config extends Singleton { } } - return null; + return 'home'; } - /** - * Alias for $config->viewer_data + /** + * Gets the viewer value * - * @return Returns either the variable value or null if no variable. + * @return boolean The model's viewer setting or false */ - public function getViewerData() { - if (isset($this->viewer_data)) { - return $this->viewer_data; + public function getViewer() { + if (isset($this->models->viewer) && $this->models->viewer == 'true') { + return true; } - return null; - } - - public function __get($node) { - if (isset($this->data->$node) && $this->data->$node != '') { - if (in_array($this->data->$node, array('true', 'false'))) { - return (bool)$this->data->$node; - } - else if (is_object($this->data->$node)) { - return $this->data->$node; - } - } - - return null; + return false; } } diff --git a/classes/Controller.php b/classes/Controller.php index 0b891d5..7e24495 100755 --- a/classes/Controller.php +++ b/classes/Controller.php @@ -1,64 +1,77 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Controller Class * * The heavy lifter of PICKLES, makes the calls to get the session and - * configuration loaded. Loads models, serves up user authentication when the - * model asks for it, and loads the viewer that the model has requested. Default - * values are present to make things easier on the user. + * configuration loaded. Loads models, serves up user authentication when + * the model asks for it, and loads the viewer that the model has requested. + * Default values are present to make things easier on the user. * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @usage new Controller(); or new Controller('/path/to/config.xml'); - * @todo Possibly remove the conditionals for the CLI view + * @usage new Controller(); */ class Controller extends Object { - /** - * Private objects - */ - private $model = null; - private $viewer = null; - - /* - protected $config = null; - private $controller = null; - */ - /** * Constructor * * To make life a bit easier when using PICKLES, the Controller logic is * executed automatically via use of a constructor. - * - * @params string $file File name of the configuration file to be loaded - * @params string $controller Type of controller to create (Web or CLI) - * @todo Need to internally document the process better */ - public function __construct($file = '../config.xml', $controller = 'Web') { + public function __construct() { parent::__construct(); // Load the config for the site passed in $config = Config::getInstance(); - $config->load($file); // Generate a generic "site down" message - if ($config->disabled === true) { + if ($config->getDisabled()) { exit("

{$_SERVER['SERVER_NAME']} is currently down for maintenance

"); } // Grab the passed in model or use the default $model_name = isset($_REQUEST['model']) ? str_replace('-', '_', $_REQUEST['model']) : $config->getDefaultModel(); + /** + * @todo Maybe the logout shouldn't be an internal thing, what if the + * user wanted to call the logout page something else? or better + * yet, they want to next it, like /users/logout? + */ if ($model_name == 'logout') { - Security::logout(); + Security::logout(); } else { - // Load the model + // Loads the requested model's information $model_file = '../models/' . $model_name . '.php'; + /** + * @todo Rename "section" to something like "current" or "selected" + * @todo Figure out WTF "event" is being used for + */ if (strpos($model_name, '/') === false) { $class = $model_name; $section = $model_name; @@ -69,75 +82,70 @@ class Controller extends Object { list($section, $event) = split('/', $model_name); } + // Establishes the shared model information $shared_model_name = $config->getSharedModel($model_name); $shared_model_file = PICKLES_PATH . 'models/' . $shared_model_name . '.php'; + // Tries to load the site level model if (file_exists($model_file)) { require_once $model_file; if (class_exists($class)) { - $this->model = new $class; + $model = new $class; } } + // Tries to load the shared model else if (file_exists($shared_model_file) && $shared_model_name != false) { if (strpos($shared_model_name, '/') === false) { $class = $shared_model_name; - //$section = $shared_model_name; - //$event = null; } else { $class = str_replace('/', '_', $shared_model_name); - //list($section, $event) = split('/', $shared_model_name); } if (class_exists($class)) { - $this->model = new $class; + $model = new $class; } } + // Loads the stock model else { - $this->model = new Model(); + $model = new Model(); } - if ($this->model != null) { - // Start the session if it's not started already - if ($this->model->getSession() === true) { + // Checks if we loaded a model file and no class was present + if ($model != null) { + + // Potentially starts the session if it's not started already + if ($model->getSession() === true) { if (ini_get('session.auto_start') == 0) { session_start(); } } - if ($this->model->getAuthentication() === true && $controller != 'CLI') { + // Potentially requests use authentication + if ($model->getAuthentication() === true) { Security::authenticate(); } - $this->model->set('name', $model_name); - $this->model->set('shared_name', $shared_model_name); - $this->model->set('section', $section); - - // Execute the model's logic - if (method_exists($this->model, '__default')) { - $this->model->__default(); + // Potentially executes the model's logic + if (method_exists($model, '__default')) { + $model->__default(); } - // Load the viewer - $this->viewer = Viewer::factory($this->model); - $this->viewer->display(); + // Creates a new viewer object + $viewer = Viewer::factory($model->getViewer()); + + // Sets the viewers properties + $viewer->model_name = $model_name; + $viewer->shared_name = $shared_model_name; + $viewer->section = $section; + $viewer->data = $model->getData(); + + // Runs the requested viewer's display function + $viewer->display(); } } } - - /* - - if ((isset($_REQUEST['section']) && $_REQUEST['section'] == 'admin')) { - } - - // Check if we're accessing an admin sub section and load the logic script - if (isset($_REQUEST['section']) && $_REQUEST['section'] != 'admin' && $is_admin) { - if ($_REQUEST['section'] == 'admin.logout') { - Session::logout(); - } - - */ } ?> diff --git a/classes/DB.php b/classes/DB.php index 2c9e2c5..7f55b69 100755 --- a/classes/DB.php +++ b/classes/DB.php @@ -1,15 +1,37 @@ db). Because the - * database object can execute raw SQL, there should be no limitations. + * PICKLES is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * PICKLES is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with PICKLES. If not, see + * . * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman + */ + +/** + * Database Abstraction Layer for MySQL + * + * All database usage inside PICKLES-based sites should be done + * via the database object that is a part of every model ($this->db). + * Because the database object can execute raw SQL, there should be + * no limitations. + * * @todo Internally document the functions better. * @todo Potentially switch to PDO to be able to easily accomodate * different database types. diff --git a/classes/Error.php b/classes/Error.php index 0725ba7..b730dd7 100755 --- a/classes/Error.php +++ b/classes/Error.php @@ -1,5 +1,29 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + /** * Error handling class * @@ -9,9 +33,6 @@ * add logic to appropriately report the errors, perhaps as a variable in the * model data array. * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman * @todo Internally document the functions better. * @todo Convert the class to extend Singleton. * @todo Quite possibly revamp the class entirely as it is still left over diff --git a/classes/ImageUtils.php b/classes/ImageUtils.php index 5217405..6d7c6f0 100755 --- a/classes/ImageUtils.php +++ b/classes/ImageUtils.php @@ -1,5 +1,29 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + /** * Incomplete collection of image manipulation utilities * @@ -11,10 +35,7 @@ * processing, it seems there's an ImageMagick module that can utilized, that may * end up being the route that is taken. Until then, this class is useless shit. * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @todo Make the class usable. + * @todo Make the class usable. */ class ImageUtils { diff --git a/classes/Mail.php b/classes/Mail.php index f84e383..9c378d1 100755 --- a/classes/Mail.php +++ b/classes/Mail.php @@ -1,5 +1,29 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + /** * Small collection of mail utilities * @@ -7,15 +31,12 @@ * I have built PICKLES based around my own needs, this has been the only * function I have felt the need to add. * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @todo Just so it doesn't seem so bare, I need to come up and implement a - * few more mail functions. - * @todo Still thinking about making this an instantiated object instead of - * a static class. Perhaps I should add a mail (rename it to mailer - * maybe) object to each model so it's ready to be loaded, and if it - * is loaded, then go ahead and automatically send it?!? Loves it. + * @todo Just so it doesn't seem so bare, I need to come up and implement a + * few more mail functions. + * @todo Still thinking about making this an instantiated object instead of + * a static class. Perhaps I should add a mail (rename it to mailer + * maybe) object to each model so it's ready to be loaded, and if it + * is loaded, then go ahead and automatically send it?!? Loves it. */ class Mail { diff --git a/classes/Model.php b/classes/Model.php index 193d9ed..695d2a9 100644 --- a/classes/Model.php +++ b/classes/Model.php @@ -1,15 +1,36 @@ . * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman + */ + +/** + * Model Class + * + * Every model in PICKLES at both the core and site levels need to extend + * this class. It handles the getting of common model variables (auth, data + * and view) as well as making sure that every model has a database object + * available. */ class Model extends Object { @@ -18,6 +39,11 @@ class Model extends Object { */ protected $data = array(); + /** + * Config object + */ + protected $config = null; + /** * Database object */ @@ -35,60 +61,65 @@ class Model extends Object { /** * Constructor * - * Handles calling the parent constructor and sets up the model's internal - * database object + * Handles calling the parent constructor and sets up the model's + * internal config and database object */ public function __construct() { parent::__construct(); - $this->db = DB::getInstance(); + $this->config = Config::getInstance(); + $this->db = DB::getInstance(); } /** * Gets the authenticate value * - * @todo Add in configuration level override - * @return boolean Whether or not the model requires user authentication to use + * Order of precedence: Model, Config, Guess (guess is always false) + * + * @return boolean Whether or not the model requires user authentication */ public function getAuthentication() { - // Order of precedence: Model, Config, Guess - if ($this->authentication == null) { - return false; - } - else { + if ($this->authentication != null) { return $this->authentication; } + else if (is_bool($this->config->getAuthentication())) { + return $this->config->getAuthentication(); + } + + return false; } /** * Gets the session value * - * @todo Add in configuration level override + * Order of precedence: Auth On, Model, Config, Guess (guess is always false) + * * @return boolean Whether or not the session needs to be started */ public function getSession() { - // Order of precedence: Auth On, Model, Config, Guess if ($this->authentication === true) { return true; } - else { - if ($this->session == null) { - return false; - } - else { - return $this->session; - } + else if ($this->session != null) { + return $this->session; } + else if (is_bool($this->config->getSession())) { + return $this->config->getSession(); + } + + return false; } /** * Gets the requested Viewer * - * @todo Add in configuration level override + * Order of precedence: Model, Config, Guess (guess is always Smarty) + * * @return string The viewer that the model has requested to be used + * @todo Guess shouldn't be Smarty, it should be the dummy PHP template. + * @todo Use the config override value to help determine. */ public function getViewer() { - // Order of precedence: Model, Config, Guess if ($this->viewer == null) { return isset($argv) ? 'CLI' : 'Smarty'; } @@ -110,6 +141,10 @@ class Model extends Object { return null; } + public function __set($variable, $value) { + $this->data[$variable] = $value; + } + /** * Destructor * @@ -122,11 +157,12 @@ class Model extends Object { /** * Default function * - * This function is overloaded by the model. The __default() function is - * where any code that needs to be executed at run time needs to be placed. - * It's not in the constructor as the model needs to be instantiated first - * so that the authorization requirements can be checked without running - * code it's potentially not supposed to have run. + * This function is overloaded by the model. The __default() function + * is where any code that needs to be executed at run time needs to be + * placed. It's not in the constructor as the model needs to be + * instantiated first so that the authorization requirements can be + * checked without running code it's potentially not supposed to have + * been executed. */ public function __default() { } } diff --git a/classes/Object.php b/classes/Object.php index 856e0c4..a0ffcb6 100644 --- a/classes/Object.php +++ b/classes/Object.php @@ -1,16 +1,37 @@ . * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman + */ + +/** + * Object Class + * + * Every non-Singleton-based class needs to extend this class. + * Any models will extend the Model class which entends the Object + * class already. This class handles getting an instance of the + * Config object so that it's available. Also provides a getter + * and setter for variables. */ class Object { @@ -33,44 +54,6 @@ class Object { */ public function __destruct() { } - /* - // @todo maybe later - public function __get($variable) { - if (!isset($this->data[$variable])) { - $this->data[$variable] = null; - } - - return $this->data[$variable]; - } - */ - - /** - * Gets a variable - * - * @return Returns either the variable value or false if no variable. - * @todo Returning false could be misleading, especially if you're - * expecting a boolean value to begin with. Perhaps an error should - * be thrown? - */ - /* - public function get($variable, $array_element = null) { - if (isset($this->$variable)) { - if (isset($array_element)) { - $array = $this->$variable; - - if (isset($array[$array_element])) { - return $array[$array_element]; - } - } - else { - return $this->$variable; - } - } - - return false; - } - */ - public function __get($variable) { if (isset($this->$variable)) { return $this->$variable; @@ -84,6 +67,7 @@ class Object { * * @param string $variable Name of the variable to be set * @param mixed $value Value to be assigned to the passed variable + * @todo Not sure we need this at all, grep to check if it's being used. */ public function set($variable, $value) { $this->$variable = $value; diff --git a/classes/Security.php b/classes/Security.php index 21353ba..a6e2ef8 100644 --- a/classes/Security.php +++ b/classes/Security.php @@ -1,32 +1,54 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Security Class * * Handles authenticating a user via an Apache login box. * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @todo Make the SQL less specific, right now you have to use a table - * named users, and use the email as the username. I will need to - * move this to the configuration and allow the user to specify which - * table to authenticate against, and what column names to use for the - * username and password. + * @todo Make the SQL less specific, right now you have to use a table + * named users, and use the email as the username. I will need + * to move this to the configuration and allow the user to + * specify which table to authenticate against, and what column + * names to use for the username and password. */ class Security extends Object { /** * Authenticates the user * - * Checks for the authentication variables to be passed in the $_SERVER super - * global and attempts to authenticate the user against MySQL. If the user - * cannot successfully they will be presented with a 401 Unauthorized page. + * Checks for the authentication variables to be passed in the $_SERVER + * super global and attempts to authenticate the user against MySQL. If + * the user cannot successfully they will be presented with a 401 + * Unauthorized page. * - * @todo I'm sure someone will find the access denied message offensive, so - * this will need to be made more generic. May also want to add in the - * ability for someone to add a custom message and/or landing page in - * the configuration as well. + * @todo I'm sure someone will find the access denied message offensive, + * so this will need to be made more generic. May also want to + * add in the ability for someone to add a custom message and/or + * landing page in the configuration as well. */ static function authenticate() { $db = DB::getInstance(); diff --git a/classes/Singleton.php b/classes/Singleton.php index a982f9c..55d9e91 100644 --- a/classes/Singleton.php +++ b/classes/Singleton.php @@ -1,16 +1,36 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Singleton Class * * This is the file that you include on the page you're instantiating the * controller from (typically index.php). The path to the PICKLES code base * is established as well as the path that Smarty will use to store the * compiled pages. - * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman */ class Singleton { diff --git a/classes/Viewer.php b/classes/Viewer.php index fcb28a4..b57bc75 100644 --- a/classes/Viewer.php +++ b/classes/Viewer.php @@ -1,14 +1,34 @@ . * - * @package PICKLES - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Viewer Class + * + * Uses the factory design pattern to create a new Viewer object + * based on what viewer the model says it wants to use. */ class Viewer { @@ -22,15 +42,15 @@ class Viewer { * * Creates an instance of the Viewer type that the model requests. * - * @param object $model The model to be displayed + * @param string $tye The type of viewer to produce * @return object An instance of the viewer, loaded with the passed model * @todo Create constants to correspond with each viewer type so it's * potentially easier to reference from the model (since the * constants would each be uppercase instead of mixedcase. */ - public static function factory(Model $model) { - $class = 'Viewer_' . $model->getViewer(); - return new $class($model); + public static function factory($type) { + $class = 'Viewer_' . $type; + return new $class(); } } diff --git a/classes/Viewer/Common.php b/classes/Viewer/Common.php index 7894bab..475cc64 100644 --- a/classes/Viewer/Common.php +++ b/classes/Viewer/Common.php @@ -1,33 +1,62 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Common Viewer Class * * This is the class that each viewer class should be extending from. - * - * @package PICKLES - * @subpackage Viewer - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman */ abstract class Viewer_Common extends Object { - /** - * Protected model object - */ - protected $model = null; - /** * Constructor * * Runs the parent's constructor and adds the model to the object. * * @param object $model Object for the model we're loading - * @todo Need better validation of the passed model. */ - public function __construct(Model $model) { + public function __construct() { parent::__construct(); - $this->model = $model; + + /** + * @todo This may need to be flipped on only for Smarty and PHP templates + */ + // Obliterates any passed in PHPSESSID (thanks Google) + if (stripos($_SERVER['REQUEST_URI'], '?PHPSESSID=') !== false) { + list($request_uri, $phpsessid) = split('\?PHPSESSID=', $_SERVER['REQUEST_URI'], 2); + header('HTTP/1.1 301 Moved Permanently'); + header('Location: ' . $request_uri); + exit(); + } + + // XHTML compliancy stuff + ini_set('arg_separator.output', '&'); + ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,fieldset='); + + header('Content-type: text/html; charset=UTF-8'); } /** diff --git a/classes/Viewer/Debug.php b/classes/Viewer/Debug.php index f34f1a8..039d146 100644 --- a/classes/Viewer/Debug.php +++ b/classes/Viewer/Debug.php @@ -1,14 +1,33 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Debugging Viewer * * Displays debugging information on the screen. - * - * @package PICKLES - * @subpackage Viewer - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman */ class Viewer_Debug extends Viewer_Common { diff --git a/classes/Viewer/JSON.php b/classes/Viewer/JSON.php index 7a508f8..447191e 100644 --- a/classes/Viewer/JSON.php +++ b/classes/Viewer/JSON.php @@ -1,15 +1,38 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * JSON Viewer + * + * Displays data in JavaScript Object Notation. Requires PHP 5 >= 5.2.0 or + * PECL json 1.2.0 or 1.2.1 * - * @package PICKLES - * @subpackage Viewer - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman * @link http://json.org/ + * @link http://us.php.net/json_encode + * @link http://pecl.php.net/package/json */ class Viewer_JSON extends Viewer_Common { @@ -17,12 +40,10 @@ class Viewer_JSON extends Viewer_Common { * Displays the data in JSON format */ public function display() { - header('Content-type: application/json; charset=utf-8'); - if (!function_exists('json_encode')) { echo '{ "type" : "error", "message" : "json_encode() not found" }'; } else { - echo json_encode($this->model->getData()); + echo json_encode($this->data); } } } diff --git a/classes/Viewer/PHP.php b/classes/Viewer/PHP.php new file mode 100644 index 0000000..27393fe --- /dev/null +++ b/classes/Viewer/PHP.php @@ -0,0 +1,86 @@ +. + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * PHP Viewer + * + * Displays the associated PHP templates for the Model. This is for all you + * folks that would prefer not to user the Smarty templating engine. Your + * PHP templates are just PHP code, plain and simple. + */ +class Viewer_PHP extends Viewer_Common { + + /** + * Displays the Smarty generated pages + */ + public function display() { + + $smarty->template_dir = '../templates/'; + + /** + * @todo Resurrect my buffer clean up code + */ + $smarty->load_filter('output','trimwhitespace'); + + // Pass all of our controller values to Smarty + $smarty->assign('section', $this->model->section); + $smarty->assign('model', $this->model->name); + $smarty->assign('template', $template); + + // Loads the data from the config + $data = $this->config->getViewerData(); + + if (isset($data) && is_array($data)) { + $smarty->assign('config', $data); + } + + // Loads the data from the model + $data = $this->model->getData(); + + if (isset($data) && is_array($data)) { + foreach ($data as $variable => $value) { + $smarty->assign($variable, $value); + } + } + + // Load it up! + header('Content-type: text/html; charset=UTF-8'); + + // If the index.tpl file is present, load it, else load the template directly + /** + * @todo Should there be additional logic to allow the model or the + * template to determine whether or not the index should be loaded? + */ + if ($smarty->template_exists('index.tpl')) { + $smarty->display('index.tpl'); + } + else { + $smarty->display($template); + } + } +} + +?> diff --git a/classes/Viewer/RSS.php b/classes/Viewer/RSS.php index ff996ed..83cdd8c 100644 --- a/classes/Viewer/RSS.php +++ b/classes/Viewer/RSS.php @@ -1,19 +1,39 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * RSS Viewer * * Displays data in RSS version 2.0 format. * - * @package PICKLES - * @subpackage Viewer - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman - * @link http://cyber.law.harvard.edu/rss/rss.html - * @todo Need to add support for RSS v1.0 as well as ATOM feeds. This may - * result in my abstracting out these classes a bit more (Probably a - * Feed viewer that would take a parameter to determine which type of - * of feed to use). + * @link http://cyber.law.harvard.edu/rss/rss.html + * @todo Need to add support for RSS v1.0 as well as ATOM feeds. This may + * result in my abstracting out these classes a bit more (Probably a + * Feed viewer that would take a parameter to determine which type of + * of feed to use). */ class Viewer_RSS extends Viewer_Common { diff --git a/classes/Viewer/Smarty.php b/classes/Viewer/Smarty.php index 32748c7..528f05f 100644 --- a/classes/Viewer/Smarty.php +++ b/classes/Viewer/Smarty.php @@ -1,14 +1,34 @@ . + * + * @author Joshua John Sherman + * @copyright Copyright 2007, 2008 Joshua John Sherman + * @link http://phpwithpickles.org + * @license http://www.gnu.org/copyleft/lesser.html + * @package PICKLES + */ + +/** + * Smarty Viewer * * Displays the associated Smarty templates for the Model. * - * @package PICKLES - * @subpackage Viewer - * @author Joshua Sherman - * @copyright 2007-2008 Joshua Sherman * @link http://smarty.net/ */ class Viewer_Smarty extends Viewer_Common { @@ -18,33 +38,13 @@ class Viewer_Smarty extends Viewer_Common { */ public function display() { - // Obliterates any passed in PHPSESSID (thanks Google) - if (stripos($_SERVER['REQUEST_URI'], '?PHPSESSID=') !== false) { - list($request_uri, $phpsessid) = split('\?PHPSESSID=', $_SERVER['REQUEST_URI'], 2); - header('HTTP/1.1 301 Moved Permanently'); - header('Location: ' . $request_uri); - exit(); - } - - // XHTML compliancy stuff - ini_set('arg_separator.output', '&'); - ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,fieldset='); - - /** - * @todo Create a wrapper so that we can auto load this - */ - require_once 'contrib/smarty/libs/Smarty.class.php'; - $smarty = new Smarty(); - /** - * @todo Perhaps the templates directory would be better suited as a - * config variable? - */ - $smarty->template_dir = '../templates/'; + // Establishes our paths + $smarty->template_dir = SITE_PATH . '../templates/'; - $cache_dir = TEMP_PATH . 'cache'; - $compile_dir = TEMP_PATH . 'compile'; + $cache_dir = SMARTY_PATH . 'cache'; + $compile_dir = SMARTY_PATH . 'compile'; if (!file_exists($cache_dir)) { mkdir($cache_dir, 0777, true); } if (!file_exists($compile_dir)) { mkdir($compile_dir, 0777, true); } @@ -52,9 +52,10 @@ class Viewer_Smarty extends Viewer_Common { $smarty->cache_dir = $cache_dir ; $smarty->compile_dir = $compile_dir; + // Loads the trim whitespace filter $smarty->load_filter('output','trimwhitespace'); - // Include custom Smarty functions + // Includes the PICKLES custom Smarty functions $directory = PICKLES_PATH . 'smarty/functions/'; if (is_dir($directory)) { @@ -70,11 +71,9 @@ class Viewer_Smarty extends Viewer_Common { } } - /** - * @todo Maybe the template path should be part of the configuration? - */ - $template = '../templates/' . $this->model->name . '.tpl'; - $shared_template = getcwd() . '/templates/' . $this->model->shared_name . '.tpl'; + // Establishes the template names + $template = SITE_PATH . '../templates/' . $this->model_name . '.tpl'; + $shared_template = PICKLES_PATH . 'templates/' . $this->shared_name . '.tpl'; /** * @todo There's a bug with the store home page since it's a redirect @@ -86,22 +85,20 @@ class Viewer_Smarty extends Viewer_Common { } // Pass all of our controller values to Smarty - $smarty->assign('section', $this->model->section); - $smarty->assign('model', $this->model->name); + $smarty->assign('section', $this->section); + $smarty->assign('model', $this->model_name); $smarty->assign('template', $template); // Loads the data from the config - $data = $this->config->getViewerData(); + $data = $this->config->getPublicData(); if (isset($data) && is_array($data)) { $smarty->assign('config', $data); } - // Loads the data from the model - $data = $this->model->getData(); - - if (isset($data) && is_array($data)) { - foreach ($data as $variable => $value) { + // Loads the model's data + if (isset($this->data) && is_array($this->data)) { + foreach ($this->data as $variable => $value) { $smarty->assign($variable, $value); } } @@ -122,9 +119,6 @@ class Viewer_Smarty extends Viewer_Common { } */ - // Load it up! - header('Content-type: text/html; charset=UTF-8'); - // If the index.tpl file is present, load it, else load the template directly /** * @todo Should there be additional logic to allow the model or the diff --git a/models/home.php b/models/home.php new file mode 100644 index 0000000..00d04b0 --- /dev/null +++ b/models/home.php @@ -0,0 +1,8 @@ +\n\t\n\t\tlocalhost\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\thome\n\t\t\n\t\t\tHome\n\t\t\tAbout\n\t\t\tContact\n\t\t\n\t\n"); + + // public/.htaccess + file_put_contents($path . 'public/.htaccess', "# Alias the static libraries\n#Alias /static/ {$pickles_path}static/\n\n# Set the PHP include path\nphp_value include_path \".:{$pickles_path}\"\n\n# Prevent session IDs from appearing\nphp_value session.use_only_cookies 1\nphp_value session.use_trans_sid 0\n\n# Sets up the mod_rewrite engine\nRewriteEngine on\n\n# Sets the base path (document root)\nRewriteBase /\n\n# Strips the trailing slash\nRewriteRule ^(.+)/$ $1 [R]\n\n# Redirects /section/action to index.php?section=&action=\nRewriteRule ^([a-z-]+)$ index.php?model=$1 [NC,QSA]\nRewriteRule ^([a-z-]+)/([a-z-]+)$ index.php?model=$1/$2 [NC,QSA]\n\n# Set up the error documents\nErrorDocument 400 /\nErrorDocument 401 /\nErrorDocument 403 /\nErrorDocument 404 /\nErrorDocument 500 /\n\n# Blocks access to .htaccess\n\n\torder allow,deny\n\tdeny from all\n"); + + // public/index.php + file_put_contents($path . 'public/index.php', ""); + + // models/home.php + file_put_contents($path . 'models/home.php', "db->getField('SELECT ...');\n\t\t// \$this->db->getRow('SELECT ...');\n\t\t// \$this->db->getArray('SELECT ...');\n\n\t\t\$this->data['message'] = \"You have successfully set up a site with PICKLES!\";\n\t}\n}\n\n?>"); + + // templates/index.tpl + file_put_contents($path . 'templates/index.tpl', "\n\t\n\t\tCongratulations\n\t\n\t\n\t\t{include file=\"\$template\"}\n\t\n"); + + // templates/home.tpl + file_put_contents($path . 'templates/home.tpl', "

Congratulations!

\n

{\$message}

"); +} + +?> diff --git a/smarty/templates/ajax.tpl b/smarty/templates/ajax.tpl deleted file mode 100644 index 0ba68e9..0000000 --- a/smarty/templates/ajax.tpl +++ /dev/null @@ -1 +0,0 @@ -{$type}|{$message} diff --git a/static/contrib/fckeditor b/static/contrib/fckeditor new file mode 120000 index 0000000..348f8cb --- /dev/null +++ b/static/contrib/fckeditor @@ -0,0 +1 @@ +fckeditor-2.6.3/ \ No newline at end of file diff --git a/static/fckeditor/_documentation.html b/static/contrib/fckeditor-2.6.3/_documentation.html similarity index 86% rename from static/fckeditor/_documentation.html rename to static/contrib/fckeditor-2.6.3/_documentation.html index ec28555..2bfcc25 100644 --- a/static/fckeditor/_documentation.html +++ b/static/contrib/fckeditor-2.6.3/_documentation.html @@ -1,7 +1,7 @@ + + + FCKeditor - Adobe AIR Sample + + + + + + + +

+ FCKeditor - Adobe AIR Sample +

+
+ This sample loads FCKeditor with full features enabled. +
+
+ + + diff --git a/static/contrib/fckeditor-2.6.3/_samples/adobeair/sample01_cert.pfx b/static/contrib/fckeditor-2.6.3/_samples/adobeair/sample01_cert.pfx new file mode 100755 index 0000000..ba81d1e Binary files /dev/null and b/static/contrib/fckeditor-2.6.3/_samples/adobeair/sample01_cert.pfx differ diff --git a/static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa b/static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa new file mode 100755 index 0000000..99d0306 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa @@ -0,0 +1 @@ + diff --git a/static/fckeditor/_samples/afp/fck.afpa.code b/static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa.code old mode 100644 new mode 100755 similarity index 95% rename from static/fckeditor/_samples/afp/fck.afpa.code rename to static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa.code index 401ee90..f101541 --- a/static/fckeditor/_samples/afp/fck.afpa.code +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/fck.afpa.code @@ -1,5 +1,5 @@ * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -163,4 +163,3 @@ RETURN (tcString) ENDDEFINE - diff --git a/static/fckeditor/_samples/afp/sample01.afp b/static/contrib/fckeditor-2.6.3/_samples/afp/sample01.afp old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/_samples/afp/sample01.afp rename to static/contrib/fckeditor-2.6.3/_samples/afp/sample01.afp index 6b770b3..2450e0d --- a/static/fckeditor/_samples/afp/sample01.afp +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/sample01.afp @@ -1,6 +1,6 @@ <% * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -38,7 +38,7 @@ sBasePath="../../../fckeditor/" && Change this to your local path - lcText=[This is some sample text. You are using ] + lcText=[

This is some sample text. You are using ] lcText=lcText+[FCKeditor.] oFCKeditor = CREATEOBJECT("FCKeditor") diff --git a/static/fckeditor/_samples/afp/sample02.afp b/static/contrib/fckeditor-2.6.3/_samples/afp/sample02.afp old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/_samples/afp/sample02.afp rename to static/contrib/fckeditor-2.6.3/_samples/afp/sample02.afp index cbf8dc8..e1baf72 --- a/static/fckeditor/_samples/afp/sample02.afp +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/sample02.afp @@ -1,6 +1,6 @@ <% * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -17,7 +17,7 @@ * http://www.mozilla.org/MPL/MPL-1.1.html * * == END LICENSE == - * + * * This page is a basic Sample for FCKeditor integration in the AFP script language (www.afpages.de) * %> @@ -97,7 +97,7 @@ oFCKeditor.aconfig[2,2]=lcLanguage ENDIF - lcText=[This is some sample text. You are using ] + lcText=[

This is some sample text. You are using ] lcText=lcText+[FCKeditor.] oFCKeditor.BasePath = sBasePath diff --git a/static/fckeditor/_samples/afp/sample03.afp b/static/contrib/fckeditor-2.6.3/_samples/afp/sample03.afp old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/_samples/afp/sample03.afp rename to static/contrib/fckeditor-2.6.3/_samples/afp/sample03.afp index 3d7fd17..a219e74 --- a/static/fckeditor/_samples/afp/sample03.afp +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/sample03.afp @@ -1,6 +1,6 @@ <% * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -75,7 +75,7 @@ oFCKeditor.ToolbarSet=lcToolbar ENDIF - lcText=[This is some sample text. You are using ] + lcText=[

This is some sample text. You are using ] lcText=lcText+[FCKeditor.] oFCKeditor.BasePath = sBasePath diff --git a/static/fckeditor/_samples/afp/sample04.afp b/static/contrib/fckeditor-2.6.3/_samples/afp/sample04.afp old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/_samples/afp/sample04.afp rename to static/contrib/fckeditor-2.6.3/_samples/afp/sample04.afp index fb878b8..a9d62d7 --- a/static/fckeditor/_samples/afp/sample04.afp +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/sample04.afp @@ -1,6 +1,6 @@ <% * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -82,7 +82,7 @@ oFCKeditor.aconfig[1,2]="/fckeditor/editor/skins/"+lcSkin+"/" && <-- Change this to your local path ENDIF - lcText=[This is some sample text. You are using ] + lcText=[

This is some sample text. You are using ] lcText=lcText+[FCKeditor.] oFCKeditor.BasePath = sBasePath diff --git a/static/fckeditor/_samples/afp/sampleposteddata.afp b/static/contrib/fckeditor-2.6.3/_samples/afp/sampleposteddata.afp old mode 100644 new mode 100755 similarity index 76% rename from static/fckeditor/_samples/afp/sampleposteddata.afp rename to static/contrib/fckeditor-2.6.3/_samples/afp/sampleposteddata.afp index c3464f6..d1ab578 --- a/static/fckeditor/_samples/afp/sampleposteddata.afp +++ b/static/contrib/fckeditor-2.6.3/_samples/afp/sampleposteddata.afp @@ -1,6 +1,6 @@ <% * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -27,17 +27,20 @@ FCKeditor - AFP - Samples - Posted Data - +

FCKeditor - Samples - Posted Data

This page lists all data posted by the form.
- - - - - +
Field Name  Value
+ + + + + + + <% lcForm=REQUEST.Form() lcForm=STRTRAN(lcForm,"&",CHR(13)+CHR(10)) @@ -51,7 +54,7 @@ lcWert=STRTRAN(lcWert,"<","<") lcWert=STRTRAN(lcWert,">",">") && ... if wanted remove/translate HTML Chars ... - ? [] + ? [] ENDIF NEXT %> diff --git a/static/fckeditor/_samples/asp/sample01.asp b/static/contrib/fckeditor-2.6.3/_samples/asp/sample01.asp old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/_samples/asp/sample01.asp rename to static/contrib/fckeditor-2.6.3/_samples/asp/sample01.asp index e3026bc..533e91c --- a/static/fckeditor/_samples/asp/sample01.asp +++ b/static/contrib/fckeditor-2.6.3/_samples/asp/sample01.asp @@ -2,7 +2,7 @@ <% Option Explicit %> + + + + + + FCKeditor - Sample + + + + + +

FCKeditor - ColdFusion - Sample 1

+ +This sample displays a normal HTML form with a FCKeditor with full features enabled. +
+ +
+
+ + + + + + + +
+ +
+ + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample01_mx.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample01_mx.cfm new file mode 100755 index 0000000..4828741 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample01_mx.cfm @@ -0,0 +1,67 @@ + + + + + + + + FCKeditor - Sample + + + + + +

FCKeditor - ColdFusion Component (CFC) - Sample 1

+ +This sample displays a normal HTML form with a FCKeditor with full features enabled. +
+ +
+
+ + +
This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.
+ +
+ + + // Calculate basepath for FCKeditor. It's in the folder right above _samples + basePath = Left( cgi.script_name, FindNoCase( '_samples', cgi.script_name ) - 1 ) ; + + fckEditor = createObject( "component", "#basePath#fckeditor" ) ; + fckEditor.instanceName = "myEditor" ; + fckEditor.value = '

This is some sample text. You are using FCKeditor.

' ; + fckEditor.basePath = basePath ; + fckEditor.Create() ; // create the editor. +
+ + +
+ +
+ + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02.cfm new file mode 100755 index 0000000..26c70c1 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02.cfm @@ -0,0 +1,110 @@ + + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion - Sample 2

+This sample shows the editor in all its available languages. +
+
Field NameValue
]+lcVariable+[ =]+lcWert+[
]+lcVariable+[ =
]+lcWert+[
+ + + + +
+ Select a language:  + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02_mx.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02_mx.cfm new file mode 100755 index 0000000..51afccc --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample02_mx.cfm @@ -0,0 +1,114 @@ + + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion Component (CFC) - Sample 2

+This sample shows the editor in all its available languages. +
+
+ +
This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.
+ +
+ + + + + + +
+ Select a language:  + + +
+
+
+ + + // Calculate basepath for FCKeditor. It's in the folder right above _samples + basePath = Left( cgi.script_name, FindNoCase( '_samples', cgi.script_name ) - 1 ) ; + + fckEditor = createObject( "component", "#basePath#fckeditor" ) ; + fckEditor.instanceName = "myEditor" ; + fckEditor.value = '

This is some sample text. You are using FCKeditor.

' ; + fckEditor.basePath = basePath ; + if ( isDefined( "URL.Lang" ) ) + { + fckEditor.config["AutoDetectLanguage"] = false ; + fckEditor.config["DefaultLanguage"] = HTMLEditFormat( URL.Lang ) ; + } + else + { + fckEeditor.config["AutoDetectLanguage"] = true ; + fckEeditor.config["DefaultLanguage"] = 'en' ; + } + fckEditor.create() ; // create the editor. +
+ +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03.cfm new file mode 100755 index 0000000..758b48c --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03.cfm @@ -0,0 +1,95 @@ + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion - Sample 3

+ This sample shows how to change the editor toolbar. +
+ + + + + +
+ Select the toolbar to load:  + + +
+
+
+ + + + + + + + + + + + + + +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03_mx.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03_mx.cfm new file mode 100755 index 0000000..1ad28af --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample03_mx.cfm @@ -0,0 +1,95 @@ + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion Component (CFC) - Sample 3

+ This sample shows how to change the editor toolbar. +
+
+ +
This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.
+ +
+ + + + + + +
+ Select the toolbar to load:  + + +
+
+
+ + + // Calculate basepath for FCKeditor. It's in the folder right above _samples + basePath = Left( cgi.script_name, FindNoCase( '_samples', cgi.script_name ) - 1 ) ; + + fckEditor = createObject( "component", "#basePath#fckeditor" ) ; + fckEditor.instanceName = "myEditor" ; + fckEditor.value = '

This is some sample text. You are using FCKeditor.

' ; + fckEditor.basePath = basePath ; + if ( isDefined( "URL.Toolbar" ) ) + { + fckEditor.ToolbarSet = HTMLEditFormat( URL.Toolbar ) ; + } + fckEditor.create() ; // create the editor. +
+ +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04.cfm new file mode 100755 index 0000000..fa0f643 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04.cfm @@ -0,0 +1,100 @@ + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion - Sample 4

+ This sample shows how to change the editor skin. +
+ + + + + +
+ Select the skin to load:  + + +
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04_mx.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04_mx.cfm new file mode 100755 index 0000000..ac5eb2c --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sample04_mx.cfm @@ -0,0 +1,101 @@ + + + + + + + FCKeditor - Sample + + + + + + +

FCKeditor - ColdFusion Component (CFC) - Sample 4

+ This sample shows how to change the editor skin. +
+
+ +
This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.
+ +
+ + + + + + +
+ Select the skin to load:  + + +
+
+
+ + + // Calculate basepath for FCKeditor. It's in the folder right above _samples + basePath = Left( cgi.script_name, FindNoCase( '_samples', cgi.script_name ) - 1 ) ; + + fckEditor = createObject( "component", "#basePath#fckeditor" ) ; + fckEditor.instanceName = "myEditor" ; + fckEditor.value = '

This is some sample text. You are using FCKeditor.

' ; + fckEditor.basePath = basePath ; + if ( isDefined( "URL.Skin" ) ) + { + fckEditor.config['SkinPath'] = basePath & 'editor/skins/' & HTMLEditFormat( URL.Skin ) & '/' ; + } + fckEditor.create() ; // create the editor. +
+ +
+ + + + +
+ diff --git a/static/contrib/fckeditor-2.6.3/_samples/cfm/sampleposteddata.cfm b/static/contrib/fckeditor-2.6.3/_samples/cfm/sampleposteddata.cfm new file mode 100755 index 0000000..a463a44 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/cfm/sampleposteddata.cfm @@ -0,0 +1,68 @@ + + + + + FCKeditor - Samples - Posted Data + + + + + +

FCKeditor - Samples - Posted Data

+ This page lists all data posted by the form. +
+ + + +
+ + + + + + + + + + + + + + + + + + +
Field NameValue
FieldNames#FORM.fieldNames#
#key#
#HTMLEditFormat( evaluate( "FORM.#key#" ) )#
+
+
+ + +
+ + + + diff --git a/static/fckeditor/_samples/default.html b/static/contrib/fckeditor-2.6.3/_samples/default.html similarity index 82% rename from static/fckeditor/_samples/default.html rename to static/contrib/fckeditor-2.6.3/_samples/default.html index eccc75c..23f734f 100644 --- a/static/fckeditor/_samples/default.html +++ b/static/contrib/fckeditor-2.6.3/_samples/default.html @@ -1,7 +1,8 @@ - + @@ -58,7 +58,7 @@ oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ; oFCKeditor.BasePath = sBasePath ; oFCKeditor.Height = 100 ; oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ; -oFCKeditor.Value = 'This is some sample text. You are using FCKeditor.' ; +oFCKeditor.Value = '

This is some sample text<\/strong>. You are using FCKeditor<\/a>.<\/p>' ; oFCKeditor.Create() ; //--> diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.config.js b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.config.js new file mode 100755 index 0000000..0eeade1 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.config.js @@ -0,0 +1,121 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Configuration settings used by the XHTML 1.1 sample page (sample14.html). + */ + +// Our intention is force all formatting features to use CSS classes or +// semantic aware elements. + +// Load our custom CSS files for this sample. +// We are using "BasePath" just for this sample convenience. In normal +// situations it would be just pointed to the file directly, +// like "/css/myfile.css". +FCKConfig.EditorAreaCSS = FCKConfig.BasePath + '../_samples/html/assets/sample14.styles.css' ; + +/** + * Core styles. + */ +FCKConfig.CoreStyles.Bold = { Element : 'span', Attributes : { 'class' : 'Bold' } } ; +FCKConfig.CoreStyles.Italic = { Element : 'span', Attributes : { 'class' : 'Italic' } } ; +FCKConfig.CoreStyles.Underline = { Element : 'span', Attributes : { 'class' : 'Underline' } } ; +FCKConfig.CoreStyles.StrikeThrough = { Element : 'span', Attributes : { 'class' : 'StrikeThrough' } } ; + +/** + * Font face + */ +// List of fonts available in the toolbar combo. Each font definition is +// separated by a semi-colon (;). We are using class names here, so each font +// is defined by {Class Name}/{Combo Label}. +FCKConfig.FontNames = 'FontComic/Comic Sans MS;FontCourier/Courier New;FontTimes/Times New Roman' ; + +// Define the way font elements will be applied to the document. The "span" +// element will be used. When a font is selected, the font name defined in the +// above list is passed to this definition with the name "Font", being it +// injected in the "class" attribute. +// We must also instruct the editor to replace span elements that are used to +// set the font (Overrides). +FCKConfig.CoreStyles.FontFace = + { + Element : 'span', + Attributes : { 'class' : '#("Font")' }, + Overrides : [ { Element : 'span', Attributes : { 'class' : /^Font(?:Comic|Courier|Times)$/ } } ] + } ; + +/** + * Font sizes. + */ +FCKConfig.FontSizes = 'FontSmaller/Smaller;FontLarger/Larger;FontSmall/8pt;FontBig/14pt;FontDouble/Double Size' ; +FCKConfig.CoreStyles.Size = + { + Element : 'span', + Attributes : { 'class' : '#("Size")' }, + Overrides : [ { Element : 'span', Attributes : { 'class' : /^Font(?:Smaller|Larger|Small|Big|Double)$/ } } ] + } ; + +/** + * Font colors. + */ +FCKConfig.EnableMoreFontColors = false ; +FCKConfig.FontColors = 'ff9900/FontColor1,0066cc/FontColor2,ff0000/FontColor3' ; +FCKConfig.CoreStyles.Color = + { + Element : 'span', + Attributes : { 'class' : '#("Color")' }, + Overrides : [ { Element : 'span', Attributes : { 'class' : /^FontColor(?:1|2|3)$/ } } ] + } ; + +FCKConfig.CoreStyles.BackColor = + { + Element : 'span', + Attributes : { 'class' : '#("Color")BG' }, + Overrides : [ { Element : 'span', Attributes : { 'class' : /^FontColor(?:1|2|3)BG$/ } } ] + } ; + +/** + * Indentation. + */ +FCKConfig.IndentClasses = [ 'Indent1', 'Indent2', 'Indent3' ] ; + +/** + * Paragraph justification. + */ +FCKConfig.JustifyClasses = [ 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull' ] ; + +/** + * Styles combo. + */ +FCKConfig.StylesXmlPath = '' ; +FCKConfig.CustomStyles = + { + 'Strong Emphasis' : { Element : 'strong' }, + 'Emphasis' : { Element : 'em' }, + + 'Computer Code' : { Element : 'code' }, + 'Keyboard Phrase' : { Element : 'kbd' }, + 'Sample Text' : { Element : 'samp' }, + 'Variable' : { Element : 'var' }, + + 'Deleted Text' : { Element : 'del' }, + 'Inserted Text' : { Element : 'ins' }, + + 'Cited Work' : { Element : 'cite' }, + 'Inline Quotation' : { Element : 'q' } + } ; diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.styles.css b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.styles.css new file mode 100755 index 0000000..cb64d5b --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample14.styles.css @@ -0,0 +1,228 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Styles used by the XHTML 1.1 sample page (sample14.html). + */ + +/** + * Basic definitions for the editing area. + */ +body +{ + background-color: #ffffff; + padding: 5px 5px 5px 5px; + margin: 0px; +} + +body, td +{ + font-family: Arial, Verdana, sans-serif; + font-size: 12px; +} + +a[href] +{ + color: #0000FF !important; /* For Firefox... mark as important, otherwise it becomes black */ +} + +/** + * Core styles. + */ + +.Bold +{ + font-weight: bold; +} + +.Italic +{ + font-style: italic; +} + +.Underline +{ + text-decoration: underline; +} + +.StrikeThrough +{ + text-decoration: line-through; +} + +.Subscript +{ + vertical-align: sub; + font-size: smaller; +} + +.Superscript +{ + vertical-align: super; + font-size: smaller; +} + +/** + * Font faces. + */ + +.FontComic +{ + font-family: 'Comic Sans MS'; +} + +.FontCourier +{ + font-family: 'Courier New'; +} + +.FontTimes +{ + font-family: 'Times New Roman'; +} + +/** + * Font sizes. + */ + +.FontSmaller +{ + font-size: smaller; +} + +.FontLarger +{ + font-size: larger; +} + +.FontSmall +{ + font-size: 8pt; +} + +.FontBig +{ + font-size: 14pt; +} + +.FontDouble +{ + font-size: 200%; +} + +/** + * Font colors. + */ +.FontColor1 +{ + color: #ff9900; +} + +.FontColor2 +{ + color: #0066cc; +} + +.FontColor3 +{ + color: #ff0000; +} + +.FontColor1BG +{ + background-color: #ff9900; +} + +.FontColor2BG +{ + background-color: #0066cc; +} + +.FontColor3BG +{ + background-color: #ff0000; +} + +/** + * Indentation. + */ + +.Indent1 +{ + margin-left: 40px; +} + +.Indent2 +{ + margin-left: 80px; +} + +.Indent3 +{ + margin-left: 120px; +} + +/** + * Alignment. + */ + +.JustifyLeft +{ + text-align: left; +} + +.JustifyRight +{ + text-align: right; +} + +.JustifyCenter +{ + text-align: center; +} + +.JustifyFull +{ + text-align: justify; +} + +/** + * Other. + */ + +code +{ + font-family: courier, monospace; + background-color: #eeeeee; + padding-left: 1px; + padding-right: 1px; + border: #c0c0c0 1px solid; +} + +kbd +{ + padding: 0px 1px 0px 1px; + border-width: 1px 2px 2px 1px; + border-style: solid; +} + +blockquote +{ + color: #808080; +} diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample15.config.js b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample15.config.js new file mode 100755 index 0000000..a2f533c --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample15.config.js @@ -0,0 +1,92 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Configuration settings used by the XHTML 1.1 sample page (sample14.html). + */ + +// Our intention is force all formatting features to use CSS classes or +// semantic aware elements. + +/** + * Core styles. + */ +FCKConfig.CoreStyles.Bold = { Element : 'b' } ; +FCKConfig.CoreStyles.Italic = { Element : 'i' } ; +FCKConfig.CoreStyles.Underline = { Element : 'u' } ; +FCKConfig.CoreStyles.StrikeThrough = { Element : 'strike' } ; + +/** + * Font face + */ +// Define the way font elements will be applied to the document. The "span" +// element will be used. When a font is selected, the font name defined in the +// above list is passed to this definition with the name "Font", being it +// injected in the "class" attribute. +// We must also instruct the editor to replace span elements that are used to +// set the font (Overrides). +FCKConfig.CoreStyles.FontFace = + { + Element : 'font', + Attributes : { 'face' : '#("Font")' } + } ; + +/** + * Font sizes. + */ +FCKConfig.FontSizes = '1/xx-small;2/x-small;3/small;4/medium;5/large;6/x-large;7/xx-large' ; +FCKConfig.CoreStyles.Size = + { + Element : 'font', + Attributes : { 'size' : '#("Size")' } + } ; + +/** + * Font colors. + */ +FCKConfig.EnableMoreFontColors = true ; +FCKConfig.CoreStyles.Color = + { + Element : 'font', + Attributes : { 'color' : '#("Color")' } + } ; + +FCKConfig.CoreStyles.BackColor = + { + Element : 'font', + Styles : { 'background-color' : '#("Color","color")' } + } ; + +/** + * Styles combo. + */ +FCKConfig.StylesXmlPath = '' ; +FCKConfig.CustomStyles = + { + 'Computer Code' : { Element : 'code' }, + 'Keyboard Phrase' : { Element : 'kbd' }, + 'Sample Text' : { Element : 'samp' }, + 'Variable' : { Element : 'var' }, + + 'Deleted Text' : { Element : 'del' }, + 'Inserted Text' : { Element : 'ins' }, + + 'Cited Work' : { Element : 'cite' }, + 'Inline Quotation' : { Element : 'q' } + } ; diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.config.js b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.config.js new file mode 100755 index 0000000..840b678 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.config.js @@ -0,0 +1,92 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Configuration settings used by the XHTML 1.1 sample page (sample14.html). + */ + +// Our intention is force all formatting features to use CSS classes or +// semantic aware elements. + +/** + * Core styles. + */ +FCKConfig.CoreStyles.Bold = { Element : 'b' } ; +FCKConfig.CoreStyles.Italic = { Element : 'i' } ; +FCKConfig.CoreStyles.Underline = { Element : 'u' } ; + +/** + * Font face + */ +// Define the way font elements will be applied to the document. The "span" +// element will be used. When a font is selected, the font name defined in the +// above list is passed to this definition with the name "Font", being it +// injected in the "class" attribute. +// We must also instruct the editor to replace span elements that are used to +// set the font (Overrides). +FCKConfig.CoreStyles.FontFace = + { + Element : 'font', + Attributes : { 'face' : '#("Font")' } + } ; + +/** + * Font sizes. + * The CSS part of the font sizes isn't used by Flash, it is there to get the + * font rendered correctly in FCKeditor. + */ +FCKConfig.FontSizes = '8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px' ; +FCKConfig.CoreStyles.Size = + { + Element : 'font', + Attributes : { 'size' : '#("Size")' }, + Styles : { 'font-size' : '#("Size","fontSize")' } + } ; + +/** + * Font colors. + */ +FCKConfig.EnableMoreFontColors = true ; +FCKConfig.CoreStyles.Color = + { + Element : 'font', + Attributes : { 'color' : '#("Color")' } + } ; +/** + * Styles combo. + */ +FCKConfig.StylesXmlPath = '' ; +FCKConfig.CustomStyles = + { + } ; + +/** + * Toolbar set for Flash HTML editing. + */ +FCKConfig.ToolbarSets['Flash'] = [ + ['Source','-','Bold','Italic','Underline','-','UnorderedList','-','Link','Unlink'], + ['FontName','FontSize','-','About'] +] ; + +/** + * Flash specific formatting settings. + */ +FCKConfig.EditorAreaStyles = 'p, ol, ul {margin-top: 0px; margin-bottom: 0px;}' ; +FCKConfig.FormatSource = false ; +FCKConfig.FormatOutput = false ; diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.fla b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.fla new file mode 100755 index 0000000..e37ff4e Binary files /dev/null and b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.fla differ diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.swf b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.swf new file mode 100755 index 0000000..9c9c175 Binary files /dev/null and b/static/contrib/fckeditor-2.6.3/_samples/html/assets/sample16.swf differ diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/assets/swfobject.js b/static/contrib/fckeditor-2.6.3/_samples/html/assets/swfobject.js new file mode 100755 index 0000000..ef6d3b7 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/assets/swfobject.js @@ -0,0 +1,18 @@ +/** + * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/ + * + * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + */ +/* +Copyright (c) 2007 Geoff Stearns + +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. + */ +/*jsl:ignoreall*/ +if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="";_19+="";var _1d=this.getParams();for(var key in _1d){_19+="";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="";}_19+="";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.majorfv.major){return true;}if(this.minorfv.minor){return true;}if(this.rev=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject; diff --git a/static/fckeditor/_samples/html/sample01.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample01.html old mode 100644 new mode 100755 similarity index 80% rename from static/fckeditor/_samples/html/sample01.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample01.html index c093856..ab55f7d --- a/static/fckeditor/_samples/html/sample01.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample01.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample02.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample02.html old mode 100644 new mode 100755 similarity index 79% rename from static/fckeditor/_samples/html/sample02.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample02.html index 316114b..f42b858 --- a/static/fckeditor/_samples/html/sample02.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample02.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample04.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample04.html old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/_samples/html/sample04.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample04.html index 5ccfaf2..43ca07c --- a/static/fckeditor/_samples/html/sample04.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample04.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample05.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample05.html old mode 100644 new mode 100755 similarity index 85% rename from static/fckeditor/_samples/html/sample05.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample05.html index 92b546b..fcb4073 --- a/static/fckeditor/_samples/html/sample05.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample05.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample06.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample06.html old mode 100644 new mode 100755 similarity index 83% rename from static/fckeditor/_samples/html/sample06.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample06.html index 37f04cd..d68e029 --- a/static/fckeditor/_samples/html/sample06.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample06.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample07.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample07.html old mode 100644 new mode 100755 similarity index 76% rename from static/fckeditor/_samples/html/sample07.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample07.html index 7fb0bf7..8af901c --- a/static/fckeditor/_samples/html/sample07.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample07.html @@ -1,7 +1,7 @@ diff --git a/static/fckeditor/_samples/html/sample08.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample08.html old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/html/sample08.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample08.html index d3470c8..a536a8a --- a/static/fckeditor/_samples/html/sample08.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample08.html @@ -1,7 +1,7 @@ @@ -148,17 +148,17 @@ function ResetIsDirty() at runtime.


-
+ diff --git a/static/fckeditor/_samples/html/sample09.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample09.html old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/_samples/html/sample09.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample09.html index a099a56..ff07747 --- a/static/fckeditor/_samples/html/sample09.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample09.html @@ -1,7 +1,7 @@ @@ -89,7 +89,7 @@ oFCKeditor = new FCKeditor( 'FCKeditor_Default' ) ; oFCKeditor.Config['ToolbarStartExpanded'] = false ; oFCKeditor.BasePath = sBasePath ; -oFCKeditor.Value = 'This is some sample text. You are using FCKeditor.' ; +oFCKeditor.Value = '

This is some sample text<\/strong>. You are using FCKeditor<\/a>.<\/p>' ; oFCKeditor.Create() ; //--> diff --git a/static/fckeditor/_samples/html/sample10.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample10.html old mode 100644 new mode 100755 similarity index 79% rename from static/fckeditor/_samples/html/sample10.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample10.html index b61409d..0015a52 --- a/static/fckeditor/_samples/html/sample10.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample10.html @@ -1,7 +1,7 @@ @@ -68,7 +68,7 @@ oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ; oFCKeditor.BasePath = sBasePath ; oFCKeditor.Height = 100 ; oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:xToolbar' ; -oFCKeditor.Value = 'This is some sample text. You are using FCKeditor.' ; +oFCKeditor.Value = '

This is some sample text<\/strong>. You are using FCKeditor<\/a>.<\/p>' ; oFCKeditor.Create() ; //--> diff --git a/static/fckeditor/_samples/html/sample11.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample11.html old mode 100644 new mode 100755 similarity index 87% rename from static/fckeditor/_samples/html/sample11.html rename to static/contrib/fckeditor-2.6.3/_samples/html/sample11.html index 3dc5323..ff1030c --- a/static/fckeditor/_samples/html/sample11.html +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample11.html @@ -1,7 +1,7 @@ @@ -76,13 +76,13 @@ function ChangeMode()
- + + + +

+ FCKeditor - JavaScript - Sample 14 +

+
+ This sample shows FCKeditor configured to produce XHTML 1.1 compliant + HTML. Deprecated elements or attributes, like the <font> and <u> elements + or the "style" attribute, are avoided. +
+
+ + +
+ + + + diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/sample15.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample15.html new file mode 100755 index 0000000..bcaa3b9 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample15.html @@ -0,0 +1,66 @@ + + + + + FCKeditor - Sample + + + + + + +

+ FCKeditor - JavaScript - Sample 15 +

+
+ This sample shows FCKeditor configured to produce a legacy HTML4 document. Traditional + HTML elements like <b>, <i>, and <font> are used in place of + <strong>, <em> and CSS styles. +
+
+
+ +
+ +
+ + diff --git a/static/contrib/fckeditor-2.6.3/_samples/html/sample16.html b/static/contrib/fckeditor-2.6.3/_samples/html/sample16.html new file mode 100755 index 0000000..5bbf01f --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/_samples/html/sample16.html @@ -0,0 +1,91 @@ + + + + + FCKeditor - Sample + + + + + + + + +

+ FCKeditor - JavaScript - Sample 16 +

+
+
+ + + + + +
+ + + +
+ + diff --git a/static/fckeditor/_samples/lasso/sample01.lasso b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample01.lasso old mode 100644 new mode 100755 similarity index 85% rename from static/fckeditor/_samples/lasso/sample01.lasso rename to static/contrib/fckeditor-2.6.3/_samples/lasso/sample01.lasso index 729fa00..f868069 --- a/static/fckeditor/_samples/lasso/sample01.lasso +++ b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample01.lasso @@ -1,7 +1,7 @@ [//lasso /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -43,7 +43,7 @@ var('myeditor') = fck_editor( -instancename='FCKeditor1', -basepath=$basepath, - -initialvalue='This is some sample text. You are using FCKeditor.' + -initialvalue='

This is some sample text. You are using FCKeditor.

' ); $myeditor->create; diff --git a/static/fckeditor/_samples/lasso/sample02.lasso b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample02.lasso old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/lasso/sample02.lasso rename to static/contrib/fckeditor-2.6.3/_samples/lasso/sample02.lasso index c33a75a..bd74329 --- a/static/fckeditor/_samples/lasso/sample02.lasso +++ b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample02.lasso @@ -1,7 +1,7 @@ [//lasso /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -97,7 +97,7 @@ function ChangeLanguage( languageCode ) -instancename='FCKeditor1', -basepath=$basepath, -config=$config, - -initialvalue='This is some sample text. You are using FCKeditor.' + -initialvalue='

This is some sample text. You are using FCKeditor.

' ); $myeditor->create; diff --git a/static/fckeditor/_samples/lasso/sample03.lasso b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample03.lasso old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/_samples/lasso/sample03.lasso rename to static/contrib/fckeditor-2.6.3/_samples/lasso/sample03.lasso index 11fadc9..6890dc9 --- a/static/fckeditor/_samples/lasso/sample03.lasso +++ b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample03.lasso @@ -1,7 +1,7 @@ [//lasso /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -71,7 +71,7 @@ function ChangeToolbar( toolbarName ) var('myeditor') = fck_editor( -instancename='FCKeditor1', -basepath=$basepath, - -initialvalue='This is some sample text. You are using FCKeditor.' + -initialvalue='

This is some sample text. You are using FCKeditor.

' ); if(action_param('Toolbar')); diff --git a/static/fckeditor/_samples/lasso/sample04.lasso b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample04.lasso old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/lasso/sample04.lasso rename to static/contrib/fckeditor-2.6.3/_samples/lasso/sample04.lasso index d218efb..0e39eb9 --- a/static/fckeditor/_samples/lasso/sample04.lasso +++ b/static/contrib/fckeditor-2.6.3/_samples/lasso/sample04.lasso @@ -1,7 +1,7 @@ [//lasso /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -77,7 +77,7 @@ function ChangeSkin( skinName ) var('myeditor') = fck_editor( -instancename='FCKeditor1', -basepath=$basepath, - -initialvalue='This is some sample text. You are using FCKeditor.' + -initialvalue='

This is some sample text. You are using FCKeditor.

' ); if(action_param('Skin')); diff --git a/static/fckeditor/_samples/lasso/sampleposteddata.lasso b/static/contrib/fckeditor-2.6.3/_samples/lasso/sampleposteddata.lasso old mode 100644 new mode 100755 similarity index 68% rename from static/fckeditor/_samples/lasso/sampleposteddata.lasso rename to static/contrib/fckeditor-2.6.3/_samples/lasso/sampleposteddata.lasso index 650285b..6d04ad4 --- a/static/fckeditor/_samples/lasso/sampleposteddata.lasso +++ b/static/contrib/fckeditor-2.6.3/_samples/lasso/sampleposteddata.lasso @@ -1,7 +1,7 @@ [//lasso /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -28,21 +28,24 @@ FCKeditor - Samples - Posted Data - +

FCKeditor - Samples - Posted Data

This page lists all data posted by the form.
- - - - - +
Field Name  Value
+ + + + + + + [iterate(client_postparams, local('this'))] - - + + [/iterate]
Field NameValue
[#this->first][#this->second][#this->first]
[#this->second]
diff --git a/static/fckeditor/_samples/perl/sample01.cgi b/static/contrib/fckeditor-2.6.3/_samples/perl/sample01.cgi old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/perl/sample01.cgi rename to static/contrib/fckeditor-2.6.3/_samples/perl/sample01.cgi index e64dbba..3b6debc --- a/static/fckeditor/_samples/perl/sample01.cgi +++ b/static/contrib/fckeditor-2.6.3/_samples/perl/sample01.cgi @@ -2,7 +2,7 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -84,7 +84,7 @@ _HTML_TAG_ $sBasePath = substr($sBasePath,0,index($sBasePath,"_samples")); &FCKeditor('FCKeditor1'); $BasePath = $sBasePath; - $Value = 'This is some sample text. You are using FCKeditor.'; + $Value = '

This is some sample text. You are using FCKeditor.

'; &Create(); print <<"_HTML_TAG_"; @@ -109,6 +109,8 @@ my $dir; $dir = $ENV{'PATH_INFO'}; } elsif($ENV{'FILEPATH_INFO'}) { $dir = $ENV{'FILEPATH_INFO'}; + } elsif($ENV{'REQUEST_URI'}) { + $dir = $ENV{'REQUEST_URI'}; } } return($dir); diff --git a/static/fckeditor/_samples/perl/sample02.cgi b/static/contrib/fckeditor-2.6.3/_samples/perl/sample02.cgi old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/_samples/perl/sample02.cgi rename to static/contrib/fckeditor-2.6.3/_samples/perl/sample02.cgi index cef97ce..dd7c26d --- a/static/fckeditor/_samples/perl/sample02.cgi +++ b/static/contrib/fckeditor-2.6.3/_samples/perl/sample02.cgi @@ -2,7 +2,7 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -149,7 +149,7 @@ _HTML_TAG_ $Config{'AutoDetectLanguage'} = "true"; $Config{'DefaultLanguage'} = 'en' ; } - $Value = 'This is some sample text. You are using FCKeditor.' ; + $Value = '

This is some sample text. You are using FCKeditor.

' ; &Create(); print <<"_HTML_TAG_"; @@ -174,6 +174,8 @@ my $dir; $dir = $ENV{'PATH_INFO'}; } elsif($ENV{'FILEPATH_INFO'}) { $dir = $ENV{'FILEPATH_INFO'}; + } elsif($ENV{'REQUEST_URI'}) { + $dir = $ENV{'REQUEST_URI'}; } } return($dir); diff --git a/static/fckeditor/_samples/perl/sample03.cgi b/static/contrib/fckeditor-2.6.3/_samples/perl/sample03.cgi old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/_samples/perl/sample03.cgi rename to static/contrib/fckeditor-2.6.3/_samples/perl/sample03.cgi index 681b808..ef9d723 --- a/static/fckeditor/_samples/perl/sample03.cgi +++ b/static/contrib/fckeditor-2.6.3/_samples/perl/sample03.cgi @@ -2,7 +2,7 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -134,7 +134,7 @@ _HTML_TAG_ if($FORM{'Toolbar'} ne "") { $ToolbarSet = &specialchar_cnv( $FORM{'Toolbar'} ); } - $Value = 'This is some sample text. You are using FCKeditor.' ; + $Value = '

This is some sample text. You are using FCKeditor.

' ; &Create(); print <<"_HTML_TAG_"; @@ -159,6 +159,8 @@ my $dir; $dir = $ENV{'PATH_INFO'}; } elsif($ENV{'FILEPATH_INFO'}) { $dir = $ENV{'FILEPATH_INFO'}; + } elsif($ENV{'REQUEST_URI'}) { + $dir = $ENV{'REQUEST_URI'}; } } return($dir); diff --git a/static/fckeditor/_samples/perl/sample04.cgi b/static/contrib/fckeditor-2.6.3/_samples/perl/sample04.cgi old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/_samples/perl/sample04.cgi rename to static/contrib/fckeditor-2.6.3/_samples/perl/sample04.cgi index c5e7b8e..4eb232c --- a/static/fckeditor/_samples/perl/sample04.cgi +++ b/static/contrib/fckeditor-2.6.3/_samples/perl/sample04.cgi @@ -2,7 +2,7 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -141,7 +141,7 @@ _HTML_TAG_ if($FORM{'Skin'} ne "") { $Config{'SkinPath'} = $sBasePath . 'editor/skins/' . &specialchar_cnv( $FORM{'Skin'} ) . '/' ; } - $Value = 'This is some sample text. You are using FCKeditor.' ; + $Value = '

This is some sample text. You are using FCKeditor.

' ; &Create() ; print <<"_HTML_TAG_"; @@ -166,6 +166,8 @@ my $dir; $dir = $ENV{'PATH_INFO'}; } elsif($ENV{'FILEPATH_INFO'}) { $dir = $ENV{'FILEPATH_INFO'}; + } elsif($ENV{'REQUEST_URI'}) { + $dir = $ENV{'REQUEST_URI'}; } } return($dir); diff --git a/static/fckeditor/_samples/perl/sampleposteddata.cgi b/static/contrib/fckeditor-2.6.3/_samples/perl/sampleposteddata.cgi old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/_samples/perl/sampleposteddata.cgi rename to static/contrib/fckeditor-2.6.3/_samples/perl/sampleposteddata.cgi index ba6b623..7702ad5 --- a/static/fckeditor/_samples/perl/sampleposteddata.cgi +++ b/static/contrib/fckeditor-2.6.3/_samples/perl/sampleposteddata.cgi @@ -2,7 +2,7 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -70,31 +70,33 @@ require '../../fckeditor.pl'; print "Content-type: text/html\n\n"; print <<"_HTML_TAG_"; - FCKeditor - Samples - Posted Data - +

FCKeditor - Samples - Posted Data

This page lists all data posted by the form.
- - - - - +
Field Name  Value
+ + + + + + + _HTML_TAG_ foreach $key (keys %FORM) { $postedValue = &specialchar_cnv($FORM{$key}); print <<"_HTML_TAG_"; - - + + _HTML_TAG_ } diff --git a/static/fckeditor/_samples/php/sample01.php b/static/contrib/fckeditor-2.6.3/_samples/php/sample01.php old mode 100644 new mode 100755 similarity index 86% rename from static/fckeditor/_samples/php/sample01.php rename to static/contrib/fckeditor-2.6.3/_samples/php/sample01.php index 1bbbcd3..eb1ccee --- a/static/fckeditor/_samples/php/sample01.php +++ b/static/contrib/fckeditor-2.6.3/_samples/php/sample01.php @@ -1,7 +1,7 @@ BasePath = $sBasePath ; -$oFCKeditor->Value = 'This is some sample text. You are using FCKeditor.' ; +$oFCKeditor->Value = '

This is some sample text. You are using FCKeditor.

' ; $oFCKeditor->Create() ; ?>
- \ No newline at end of file + diff --git a/static/fckeditor/_samples/php/sample02.php b/static/contrib/fckeditor-2.6.3/_samples/php/sample02.php old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/_samples/php/sample02.php rename to static/contrib/fckeditor-2.6.3/_samples/php/sample02.php index 91d6bca..3682b61 --- a/static/fckeditor/_samples/php/sample02.php +++ b/static/contrib/fckeditor-2.6.3/_samples/php/sample02.php @@ -1,7 +1,7 @@ Config['DefaultLanguage'] = 'en' ; } -$oFCKeditor->Value = 'This is some sample text. You are using FCKeditor.' ; +$oFCKeditor->Value = '

This is some sample text. You are using FCKeditor.

' ; $oFCKeditor->Create() ; ?>
- \ No newline at end of file + diff --git a/static/fckeditor/_samples/php/sample03.php b/static/contrib/fckeditor-2.6.3/_samples/php/sample03.php old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/php/sample03.php rename to static/contrib/fckeditor-2.6.3/_samples/php/sample03.php index 525b123..2768e02 --- a/static/fckeditor/_samples/php/sample03.php +++ b/static/contrib/fckeditor-2.6.3/_samples/php/sample03.php @@ -1,7 +1,7 @@ BasePath = $sBasePath ; if ( isset($_GET['Toolbar']) ) $oFCKeditor->ToolbarSet = htmlspecialchars($_GET['Toolbar']); -$oFCKeditor->Value = 'This is some sample text. You are using FCKeditor.' ; +$oFCKeditor->Value = '

This is some sample text. You are using FCKeditor.

' ; $oFCKeditor->Create() ; ?>
- \ No newline at end of file + diff --git a/static/fckeditor/_samples/php/sample04.php b/static/contrib/fckeditor-2.6.3/_samples/php/sample04.php old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/_samples/php/sample04.php rename to static/contrib/fckeditor-2.6.3/_samples/php/sample04.php index dcdd2e8..bed9e8b --- a/static/fckeditor/_samples/php/sample04.php +++ b/static/contrib/fckeditor-2.6.3/_samples/php/sample04.php @@ -1,7 +1,7 @@ BasePath = $sBasePath ; if ( isset($_GET['Skin']) ) $oFCKeditor->Config['SkinPath'] = $sBasePath . 'editor/skins/' . htmlspecialchars($_GET['Skin']) . '/' ; -$oFCKeditor->Value = 'This is some sample text. You are using FCKeditor.' ; +$oFCKeditor->Value = '

This is some sample text. You are using FCKeditor.

' ; $oFCKeditor->Create() ; ?>
- \ No newline at end of file + diff --git a/static/fckeditor/_samples/php/sampleposteddata.php b/static/contrib/fckeditor-2.6.3/_samples/php/sampleposteddata.php old mode 100644 new mode 100755 similarity index 73% rename from static/fckeditor/_samples/php/sampleposteddata.php rename to static/contrib/fckeditor-2.6.3/_samples/php/sampleposteddata.php index 46b3071..11b87fc --- a/static/fckeditor/_samples/php/sampleposteddata.php +++ b/static/contrib/fckeditor-2.6.3/_samples/php/sampleposteddata.php @@ -1,7 +1,7 @@ FCKeditor - Samples - Posted Data - +

FCKeditor - Samples - Posted Data

This page lists all data posted by the form.
-
Field NameValue
$key$postedValue$key
$postedValue
- - - - +
Field Name  Value
+ + + + + + + $value ) ?> - - + + sample text. You are using FCKeditor.""" + oFCKeditor.Value = """

This is some sample text. You are using FCKeditor.

""" print oFCKeditor.Create() except Exception, e: print e @@ -78,5 +78,3 @@ print """ """ - - diff --git a/static/fckeditor/_samples/py/sampleposteddata.py b/static/contrib/fckeditor-2.6.3/_samples/py/sampleposteddata.py old mode 100644 new mode 100755 similarity index 78% rename from static/fckeditor/_samples/py/sampleposteddata.py rename to static/contrib/fckeditor-2.6.3/_samples/py/sampleposteddata.py index 1b2e1ce..bc759d5 --- a/static/fckeditor/_samples/py/sampleposteddata.py +++ b/static/contrib/fckeditor-2.6.3/_samples/py/sampleposteddata.py @@ -2,7 +2,7 @@ """ FCKeditor - The text editor for Internet - http://www.fckeditor.net -Copyright (C) 2003-2007 Frederico Caldeira Knabben +Copyright (C) 2003-2008 Frederico Caldeira Knabben == BEGIN LICENSE == @@ -53,19 +53,22 @@ print """

FCKeditor - Samples - Posted Data

This page lists all data posted by the form.
-
Field NameValue
- - - - +
Field Name  Value
+ + + + + + + """ for key in form.keys(): try: value = form[key].value print """ - - + + """ % (key, value) except Exception, e: diff --git a/static/fckeditor/_samples/sample.css b/static/contrib/fckeditor-2.6.3/_samples/sample.css similarity index 51% rename from static/fckeditor/_samples/sample.css rename to static/contrib/fckeditor-2.6.3/_samples/sample.css index 8ec05f5..f23fe05 100644 --- a/static/fckeditor/_samples/sample.css +++ b/static/contrib/fckeditor-2.6.3/_samples/sample.css @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -21,7 +21,7 @@ * Styles used in the samples pages. */ -body, td, input, select, textarea +body, td, th, input, select, textarea { font-size: 12px; font-family: Arial, Verdana, Sans-Serif; @@ -36,15 +36,39 @@ h1 form { - margin: 0px 0px 0px 0px; - padding: 0px 0px 0px 0px; + margin: 0; + padding: 0; +} + +#outputSample +{ + table-layout: fixed; + width: 100%; } pre { - margin:0px; - padding:0px; - white-space: pre-wrap; /* css-3 */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ -} \ No newline at end of file + margin: 0; + padding: 0; + + white-space: pre; /* CSS2 */ + white-space: -moz-pre-wrap; /* Mozilla*/ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ + word-wrap: break-word; /* IE */ +} + +#outputSample thead th +{ + color: #dddddd; + background-color: #999999; + padding: 4px; + white-space: nowrap; +} + +#outputSample tbody th +{ + vertical-align: top; + text-align: left; +} diff --git a/static/fckeditor/_samples/sampleslist.html b/static/contrib/fckeditor-2.6.3/_samples/sampleslist.html similarity index 84% rename from static/fckeditor/_samples/sampleslist.html rename to static/contrib/fckeditor-2.6.3/_samples/sampleslist.html index 3abc825..65ec5ec 100644 --- a/static/fckeditor/_samples/sampleslist.html +++ b/static/contrib/fckeditor-2.6.3/_samples/sampleslist.html @@ -1,7 +1,8 @@ - + - +FCKeditor - Sample Selection - - - + + + - +
Field NameValue
%s%s%s
%s
@@ -62,55 +63,51 @@ function OpenSample( sample ) - - + + + + - - + - - + - - + - - + - - + - - + diff --git a/static/fckeditor/_upgrade.html b/static/contrib/fckeditor-2.6.3/_upgrade.html similarity index 74% rename from static/fckeditor/_upgrade.html rename to static/contrib/fckeditor-2.6.3/_upgrade.html index bf73f04..d38e3a9 100644 --- a/static/fckeditor/_upgrade.html +++ b/static/contrib/fckeditor-2.6.3/_upgrade.html @@ -1,7 +1,7 @@ + + + FCKeditor ChangeLog - What's New? + + + + +

+ FCKeditor ChangeLog - What's New?

+

+ Version 2.6.3

+

+ Fixed Bugs:

+
    +
  • [#2412] FCK.InsertHtml() + is now properly removing selected contents after content insertion in Firefox.
  • +
  • [#2420] Spelling + mistake corrections made by the spell checking dialog are now undoable.
  • +
  • [#2411] Insert + anchor was not working for non-empty selections.
  • +
  • [#2426] It was + impossible to switch between editor areas with a single click.
  • +
  • Language file updates for the following languages: +
      +
    • Canadian French
    • +
    • [#2402] Catalan +
    • +
    • [#2400] Chinese + (Simplified and Traditional)
    • +
    • [#2401] Croatian
    • +
    • [#2422] Czech
    • +
    • [#2417] Dutch
    • +
    • [#2428] French
    • +
    • German
    • +
    • [#2427] Hebrew
    • +
    • [#2410] Hindi
    • +
    • [#2405] Japanese
    • +
    • [#2409] Norwegian + and Norwegian Bokmål
    • +
    • [#2429] Spanish
    • +
    • [#2406] Vietnamese
    • +
    +
  • +
+

+ This version has been sponsored by Data Illusion + survey software solutions.

+

+ Version 2.6.3 Beta

+

+ New Features and Improvements:

+
    +
  • [#439] Added a + new context menu option for opening links in the editor.
  • +
  • [#2220] + Email links from the Link dialog are now encoded by default + to prevent being harvested by spammers. (Kudos to asuter for proposing the patch) +
  • +
  • [#2234] Added + the ability to create, modify and remove DIV containers.
  • +
  • [#2247] The + SHIFT+SPACE keystroke will now produce a &nbsp; character. +
  • +
  • [#2252] It's + now possible to enable the browsers default menu using the configuration file (FCKConfig.BrowserContextMenu + option).
  • +
  • [#2032] Added + HTML samples for legacy HTML and Flash HTML.
  • +
  • [#234] Introduced + the "PreventSubmitHandler" setting, which makes it possible to instruct the editor + to not handle the hidden field update on form submit events.
  • +
+

+ Fixed Bugs:

+
    +
  • [#2319] On Opera + and Firefox 3, the entire page was scrolling on SHIFT+ENTER, or when EnterMode='br'.
  • +
  • [#2321] On Firefox + 3, the entire page was scrolling when inserting block elements with the FCK.InsertElement + function, used by the Table and Horizontal Rule buttons..
  • +
  • [#692] Added some + hints in editor/css/fck_editorarea.css on how to handle style items that would break + the style combo.
  • +
  • [#2263] Fixed + a JavaScript error in IE which occurs when there are placeholder elements in the + document and the user has pressed the Source button.
  • +
  • [#2314] Corrected + mixed up Chinese translations for the blockquote command.
  • +
  • [#2323] Fixed + the issue where the show blocks command loses the current selection from the view + area when editing a long document.
  • +
  • [#2322] Fixed + the issue where the fit window command loses the current selection and scroll position + in the editing area.
  • +
  • [#1917] Fixed + the issue where the merge down command for tables cells does not work in IE for + more than two cells.
  • +
  • [#2320] Fixed + the issue where the Find/Replace dialog scrolls the entire page.
  • +
  • [#1645] Added + warning message about Firefox 3's strict origin policy.
  • +
  • [#2272] Improved + the garbage filter in Paste from Word dialog.
  • +
  • [#2327] Fixed + invalid HTML in the Paste dialog.
  • +
  • [#1907] Fixed + sporadic "FCKeditorAPI is not defined" errors in Firefox 3.
  • +
  • [#2356] Fixed + access denied error in IE7 when FCKeditor is launched from local filesystem.
  • +
  • [#1150] Fixed + the type="_moz" attribute that sometimes appear in <br> tags in non-IE browsers.
  • +
  • [#1229] Converting + multiple contiguous paragraphs to Formatted will now be merged into a single <PRE> + block.
  • +
  • [#2363] There + were some sporadic "Permission Denied" errors with IE on some situations.
  • +
  • [#2135] Fixed + a data loss bug in IE when there are @import statements in the editor's CSS files, + and IE's cache is set to "Check for newer versions on every visit".
  • +
  • [#2376] FCK.InsertHtml() + will now insert to the last selected position after the user has selected things + outside of FCKeditor, in IE.
  • +
  • [#2368] Fixed + broken protect source logic for comments in IE.
  • +
  • [#2387] Fixed + JavaScript error with list commands when the editable document is selected with + Ctrl-A.
  • +
  • [#2390] Fixed + the issue where indent styles in JavaScript-generated <p> blocks are erased + in IE.
  • +
  • [#2394] Fixed + JavaScript error with the "split vertically" command in IE when attempting to split + cells in the last row of a table.
  • +
  • [#2316] The sample + posted data page has now the table fixed at 100% width.
  • +
  • [#2396] SpellerPages + was causing a "Permission Denied" error in some situations.
  • +
+

+ See previous versions history

+ + diff --git a/static/fckeditor/_whatsnew.html b/static/contrib/fckeditor-2.6.3/_whatsnew_history.html similarity index 75% rename from static/fckeditor/_whatsnew.html rename to static/contrib/fckeditor-2.6.3/_whatsnew_history.html index c28439a..30e1ada 100644 --- a/static/fckeditor/_whatsnew.html +++ b/static/contrib/fckeditor-2.6.3/_whatsnew_history.html @@ -1,7 +1,7 @@ - FCKeditor - What's New? + FCKeditor ChangeLog - What's New? +

+ FCKeditor ChangeLog - What's New?

+

+ Version 2.6.2

+

+ New Features and Improvements:

+
    +
  • [#2043] The debug + script is not any more part of the compressed files. If FCKeditor native debugging + features (FCKDebug) are required, the _source folder must be present in your installation.
  • +
+

+ Fixed Bugs:

+
    +
  • [#2248] Calling + FCK.InsertHtml( 'nbsp;') was inserting a plain space instead of a non breaking space + character.
  • +
  • [#2273] The dragresizetable + plugin now works in Firefox 3 as well.
  • +
  • [#2254] Minor + fix in FCKSelection for nodeTagName object.
  • +
  • [#1614] Unified + FCKConfig.FullBasePath with FCKConfig.BasePath.
  • +
  • [#2127] Changed + floating dialogs to use fixed positioning so that they are no longer affected by + scrolling.
  • +
  • [#2018] Reversed + the fix for #183 + which broke FCKeditorAPI's cleanup logic. A new configuration directive MsWebBrowserControlCompat + has been added for those who wish to force the #183 fix to be enabled.
  • +
  • [#2276] [#2279] On Opera + and Firefox 3, the entire page was scrolling on ENTER.
  • +
  • [#2149] CSS urls + with querystring parameters were not being accepted for CSS values in the configuration + file (like EditorAreaCSS).
  • +
  • [#2287] On some + specific cases, with Firefox 2, some extra spacing was appearing in the final HTML + on posting, if inserting two successive tables.
  • +
  • [#2287] Block + elements (like tables or horizontal rules) will be inserted correctly now when the + cursor is at the start or the end of blocks. No extra paragraphs will be included + in this operation.
  • +
  • [#2197] The TAB + key will now have the default browser behavior if TabSpaces=0. It will move the + focus out of the editor (expect on Safari).
  • +
  • [#2296] Fixed + permission denied error on clicking on files in the file browser.
  • +
+

+ Version 2.6.1

+

+ New Features and Improvements:

+
    +
  • [#2150] The searching + speed of the Find/Replace dialog has been vastly improved.
  • +
  • New language file for Gujarati (by Nilam Doctor).
  • +
  • A new TabIndex property has been added to the JavaScript integration files.
  • +
  • [#2215] Following + the above new feature, the ReplaceTextarea method will now copy the textarea.tabIndex + value if available.
  • +
  • [#2163] If the + FCKConfig.DocType setting points to a HTML DocType then the output won't generate + self-closing tags (it will output <img > instead of <img />).
  • +
  • [#2173] A throbber + will be shown in the Quick Uploads.
  • +
  • [#2142] HTML + samples will now use sampleposteddata.php in action parameter inside a form.
  • +
+

+ Fixed Bugs:

+
    +
  • [#768] It is no + longer possible for an image to have its width and height defined with both HTML + attributes and inline CSS styles in IE.
  • +
  • [#1426] Fixed + the error loading fckstyles.xml in servers which cannot return the correct content + type header for .xml files.
  • +
  • [#2102] Fixed + FCKConfig.DocType which stopped working in FCKeditor 2.6.
  • +
  • [#2039] Fixed + the locking up issue in the Find/Replace dialog.
  • +
  • [#2124] PHP File + Browser: fixed issue with resolving paths on Windows servers with PHP 5.2.4/5.2.5.
  • +
  • [#2059] Fixed + the error in the toolbar name in fckeditor.py.
  • +
  • [#2065] Floating + dialogs will now block the user from re-selecting the editing area by pressing Tab.
  • +
  • [#2114] Added + a workaround for an IE6 bug which causes floating dialogs to appear blank after + opening it for the first time.
  • +
  • [#2136] Fixed + JavaScript error in IE when opening the bullet list properties dialog.
  • +
  • [#1633] External + styles should no longer interfere with the appearance of the editor and floating + panels now.
  • +
  • [#2113] Fixed + unneeded <span class="Apple-style-span"> created after inserting + special characters.
  • +
  • [#2170] Fixed + Ctrl-Insert hotkey for copying.
  • +
  • [#2125] Fixed + the issue that FCK.InsertHtml() doesn't insert contents at the caret position when + dialogs are opened in IE.
  • +
  • [#1764] FCKeditor + will no longer catch focus in IE on load when StartupFocus is false and the initial + content is empty.
  • +
  • [#2126] Opening + and closing floating dialogs will no longer cause toolbar button states to become + frozen.
  • +
  • [#2159] Selection + are now correctly restored when undoing changes made by the Replace dialog.
  • +
  • [#2160] "Match + whole word" in the Find and Replace dialog will now find words next to punctuation + marks as well.
  • +
  • [#2162] If the + configuration is set to work including the <head> (FullPage), references to + stylesheets added by Firefox extensions won't be added to the output.
  • +
  • [#2168] Comments + won't generate new paragraphs in the output.
  • +
  • [#2184] Fixed + several validation errors in the File Browser.
  • +
  • [#1383] Fixed + an IE issue where pressing backspace may merge a hyperlink on the previous line + with the text on the current line.
  • +
  • [#1691] Creation + of links in Safari failed if there was no selection.
  • +
  • [#2188] PreserveSessionOnFileBrowser + is now removed as it was made obsolete with 2.6.
  • +
  • [#898] The styles + for the editing area are applied in the image preview dialog.
  • +
  • [#2056] Fixed + several validation errors in the dialogs.
  • +
  • [#2063] Fixed + some problems in asp related to the use of network paths for the location of the + uploaded files.
  • +
  • [#1593] The "Sample + Posted Data" page will now properly wrap the text.
  • +
  • [#2239] The PHP + code in sampleposteddata.php has been changed from "<?=" to "<? echo".
  • +
  • [#2241] Fixed + 404 error in floating panels when FCKeditor is installed to a different domain.
  • +
  • [#2066] Added + a workaround for a Mac Safari 3.1 browser bug which caused the Fit Window button + to give a blank screen.
  • +
  • [#2218] Improved + Gecko based browser detection to accept Epiphany/Gecko as well.
  • +
  • [#2193] Fixed + the issue where the caret cannot reach the last character of a paragraph in Opera + 9.50.
  • +
  • [#2264] Fixed + empty spaces that appear at the top of the editor in Opera 9.50.
  • +
  • [#2238] The <object> + placeholder was not being properly displayed in the compressed distribution version + and nightly builds.
  • +
  • [#2115] Fixed + JavaScript (permission denied) error in Firefox when file has been uploaded.
  • +
+

+ Version 2.6

+

+ No changes. The stabilization of the 2.6 RC was completed successfully, as expected.

+

+ Version 2.6 RC

+

+ New Features and Improvements:

+
    +
  • [#2017] The FCKeditorAPI.Instances + object can now be used to access all FCKeditor instances available in the page.
  • +
  • [#1980] Attention: By default, the editor now produces <strong> + and <em> instead of <b> and <i>.
  • +
+

+ Fixed Bugs:

+
    +
  • [#1924] The dialog + close button is now correctly positioned in IE in RTL languages.
  • +
  • [#1933] Placeholder + dialog will now display the placeholder value correctly in IE.
  • +
  • [#957] Pressing + Enter or typing after a placeholder with the placeholder plugin will no longer generate + colored text.
  • +
  • [#1952] Fixed + an issue in FCKTools.FixCssUrls that, other than wrong, was breaking Opera.
  • +
  • [#1695] Removed + Ctrl-Tab hotkey for Source mode and allowed Ctrl-T to work in Firefox.
  • +
  • [#1666] Fixed + permission denied errors during opening popup menus in IE6 under domain relaxation + mode.
  • +
  • [#1934] Fixed + JavaScript errors when calling Selection.EnsureSelection() in dialogs.
  • +
  • [#1920] Fixed + SSL warning message when opening image and flash dialogs under HTTPS in IE6.
  • +
  • [#1955] [#1981] [#1985] [#1989] + Fixed XHTML source formatting errors in non-IE browsers.
  • +
  • [#2000] The # + character is now properly encoded in file names returned by the File Browser.
  • +
  • [#1945] New folders + and file names are now properly sanitized against control characters.
  • +
  • [#1944] Backslash + character is now disallowed in current folder path.
  • +
  • [#1055] Added + logic to override JavaScript errors occurring inside the editing frame due to user + added JavaScript code.
  • +
  • [#1647] Hitting + ENTER on list items containing block elements will now create new list item elements, + instead of adding further blocks to the same list item.
  • +
  • [#1411] Label + only combos now get properly grayed out when moving to source view.
  • +
  • [#2009] Fixed + an important bug regarding styles removal on styled text boundaries, introduced + with the 2.6 Beta 1.
  • +
  • [#2011] Internal + CSS <style> tags where being outputted when FullPage=true.
  • +
  • [#2016] The Link + dialog now properly selects the first field when opening it to modify mailto or + anchor links. This problem was also throwing an error in IE.
  • +
  • [#2021] The caret + will no longer remain behind in the editing area when the placeholder dialog is + opened.
  • +
  • [#2024] Fixed + JavaScript error in IE when the user tries to open dialogs in Source mode.
  • +
  • [#1853] Setting + ShiftEnterMode to p or div now works correctly when EnterMode is br.
  • +
  • [#1838] Fixed + the issue where context menus sometimes don't disappear after selecting an option. +
  • +
  • [#2028] Fixed + JavaScript error when EnterMode=br and user tries to insert a page break.
  • +
  • [#2002] Fixed + the issue where the maximize editor button does not vertically expand the editing + area in Firefox.
  • +
  • [#1842] PHP integration: + fixed filename encoding problems in file browser.
  • +
  • [#1832] Calling + FCK.InsertHtml() in non-IE browsers would now activate the document processor as + expected.
  • +
  • [#1998] The native + XMLHttpRequest class is now used in IE, whenever it is available.
  • +
  • [#1792] In IE, + the browser was able to enter in an infinite loop when working with multiple editors + in the same page.
  • +
  • [#1948] Some + CSS rules are reset to dialog elements to avoid conflict with the page CSS.
  • +
  • [#1965] IE was + having problems with SpellerPages, causing some errors to be thrown when completing + the spell checking in some situations.
  • +
  • [#2042] The FitWindow + command was throwing an error if executed in an editor where its relative button + is not present in the toolbar.
  • +
  • [#922] Implemented + a generic document processor for <OBJECT> and <EMBED> tags.
  • +
  • [#1831] Fixed + the issue where the placeholder icon for <EMBED> tags does not always show + up in IE7.
  • +
  • [#2049] Fixed + a deleted cursor CSS attribute in the minified CSS inside fck_dialog_common.js.
  • +
  • [#1806] In IE, + the caret will not any more move to the previous line when selecting a Format style + inside an empty paragraph.
  • +
  • [#1990] In IE, + dialogs using API calls which deals with the selection, like InsertHtml now can + be sure the selection will be placed in the correct position.
  • +
  • [#1997] With + IE, the first character of table captions where being lost on table creation.
  • +
  • The selection and cursor position was not being properly handled when creating some + elements like forms and tables.
  • +
  • [#662] In the + Perl sample files, the GetServerPath function will now calculate the path properly.
  • +
  • [#2208] Added + missing translations in Italian language file.
  • +
  • [#2096] Added + the codepage to basexml file. Filenames with special chars should now display properly.
  • +
+

+ Version 2.6 Beta 1

+

+ New Features and Improvements:

+
    +
  • [#35] New + (and cool!) floating dialog system, avoiding problems with popup blockers + and enhancing the editor usability.
  • +
  • [#1886] + Adobe AIR compatibility.
  • +
  • [#123] Full support + for document.domain with automatic domain detection.
  • +
  • [#1622] New + inline CSS cache feature, making it possible to avoid downloading the CSS + files for the editing area and skins. For that, it is enough to set the EditorAreaCSS, + SkinEditorCSS and SkinDialogCSS to string values in the format "/absolute/path/for/urls/|<minified + CSS styles". All internal CSS links are already using this feature.
  • +
  • New language file for Canadian French.
  • +
+

+ Fixed Bugs:

+
    +
  • [#1643] Resolved + several "strict warning" messages in Firefox when running FCKeditor.
  • +
  • [#1522] The ENTER + key will now work properly in IE with the cursor at the start of a formatted block.
  • +
  • [#1503] It's + possible to define in the Styles that a Style (with an empty class) must be shown + selected only when no class is present in the current element, and selecting that + item will clear the current class (it does apply to any attribute, not only classes).
  • +
  • [#191] The scrollbars + are now being properly shown in Firefox Mac when placing FCKeditor inside a hidden + div.
  • +
  • [#503] Orphaned + <li> elements now get properly enclosed in a <ul> on output.
  • +
  • [#309] The ENTER + key will not any more break <button> elements at the beginning of paragraphs.
  • +
  • [#1654] The editor + was not loading on a specific unknown situation. The breaking point has been removed.
  • +
  • [#1707] The editor + no longer hangs when operating on documents imported from Microsoft Word.
  • +
  • [#1514] Floating + panels attached to a shared toolbar among multiple FCKeditor instances are no longer + misplaced when the editing areas are absolutely or relatively positioned.
  • +
  • [#1715] The ShowDropDialog + is now enforced only when ForcePasteAsPlainText = true.
  • +
  • [#1336] Sometimes + the autogrow plugin didn't work properly in Firefox.
  • +
  • [#1728] External + toolbars are now properly sized in Opera.
  • +
  • [#1782] Clicking + on radio buttons or checkboxes in the editor in IE will no longer cause lockups + in IE.
  • +
  • [#805] The FCKConfig.Keystrokes + commands where executed even if the command itself was disabled.
  • +
  • [#982] The button + to empty the box in the "Paste from Word" has been removed as it leads to confusion + for some users.
  • +
  • [#1682] Editing + control elements in Firefox, Opera and Safari now works properly.
  • +
  • [#1613] The editor + was surrounded by a <div> element that wasn't really needed.
  • +
  • [#676] If a form + control was moved in IE after creating it, then it did lose its name.
  • +
  • [#738] It wasn't + possible to change the type of an existing button.
  • +
  • [#1854] Indentation + now works inside table cells.
  • +
  • [#1717] The editor + was entering on looping on some specific cases when dealing with invalid source + markup.
  • +
  • [#1530] Pasting + text into the "Find what" fields in the Find and Replace dialog would now activate + the find and replace buttons.
  • +
  • [#1828] The Find/Replace + dialog will no longer display wrong starting positions for the match when there + are multiple and identical characters preceding the character at the real starting + point of the match.
  • +
  • [#1878] Fixed + a JavaScript error which occurs in the Find/Replace dialog when the user presses + "Find" or "Replace" after the "No match found" message has appeared.
  • +
  • [#1355] Line + breaks and spaces are now conserved when converting to and from the "Formatted" + format.
  • +
  • [#1670] Improved + the background color behind smiley icons and special characters in their corresponding + dialogs.
  • +
  • [#1693] Custom + error messages are now properly displayed in the file browser.
  • +
  • [#970] The text + and value fields in the selection box dialog will no longer extend beyond the dialog + limits when the user inputs a very long text or value for one of the selection options.
  • +
  • [#479] Fixed the + issue where pressing Enter in an <o:p> tag in IE does not generate line breaks.
  • +
  • [#481] Fixed the + issue where the image preview in image dialog sometimes doesn't display after selecting + the image from server browser.
  • +
  • [#1488] PHP integration: + the FCKeditor class is now more PHP5/6 friendly ("public" keyword is used instead + of depreciated "var").
  • +
  • [#1815] PHP integration: + removed closing tag: "?>", so no additional whitespace added when files are included.
  • +
  • [#1906] PHP file + browser: fixed problems with DetectHtml() function when open_basedir was set.
  • +
  • [#1871] PHP file + browser: permissions applied with the chmod command are now configurable.
  • +
  • [#1872] Perl + file browser: permissions applied with the chmod command are now configurable.
  • +
  • [#1873] Python + file browser: permissions applied with the chmod command are now configurable.
  • +
  • [#1572] ColdFusion + integration: fixed issues with setting the editor height.
  • +
  • [#1692] ColdFusion + file browser: it is possible now to define TempDirectory to avoid issues with GetTempdirectory() + returning an empty string.
  • +
  • [#1379] ColdFusion + file browser: resolved issues with OnRequestEnd.cfm breaking the file browser.
  • +
  • [#1509] InsertHtml() + in IE will no longer turn the preceding normal whitespace into &nbsp;.
  • +
  • [#958] The AddItem + method now has an additional fifth parameter "customData" that will be sent to the + Execute method of the command for that menu item, allowing a single command to be + used for different menu items..
  • +
  • [#1502] The RemoveFormat + command now also removes the attributes from the cleaned text. The list of attributes + is configurable with FCKConfig.RemoveAttributes.
  • +
  • [#1596] On Safari, + dialogs have now right-to-left layout when it runs a RTL language, like Arabic.
  • +
  • [#1344] Added + warning message on Copy and Cut operation failure on IE due to paste permission + settings.
  • +
  • [#1868] Links + to file browser has been changed to avoid requests containing double dots.
  • +
  • [#1229] Converting + multiple contiguous paragraphs to Formatted will now be merged into a single <PRE> + block.
  • +
  • [#1627] Samples + failed to load from local filesystem in IE7.
  • +
+

+ Version 2.5.1

+

+ New Features and Improvements:

+
    +
  • FCKeditor.Net 2.5 compatibility.
  • +
  • JavaScript integration file: +
      +
    • The new "FCKeditor.ReplaceAllTextareas" function is being introduced, + making it possible to replace many (or unknown) <textarea> elements in a single + call. The replacement can be also filtered by CSS class name, or by a custom function + evaluator.
    • +
    • It is now possible to set the default BasePath for all editor instances by setting + FCKeditor.BasePath. This is extremely useful when working with + the ReplaceAllTextareas function.
    • +
    +
  • +
+

+ Fixed Bugs:

+
    +
  • [#339] [#681] The SpellerPages + spell checker will now completely ignore the presence of HTML tags in the text. +
  • +
  • [#1643] Resolved + several "strict warning" messages in Firefox when running FCKeditor.
  • +
  • [#1603] Certain + specific markup was making FCKeditor entering in a loop, blocking its execution. +
  • +
  • [#1664] The ENTER + key will not any more swap the order of the tags when hit at the end of paragraphs. +
  • +
+

+ Version 2.5

+

+ New Features and Improvements:

+
    +
  • The heading options have been moved to the top, in the default settings for the + Format combo.
  • +
+

+ Fixed Bugs:

+
    +
  • The focus is now correctly set when working on Safari.
  • +
  • [#1436] Nested + context menu panels are now correctly closed on Safari.
  • +
  • Empty anchors are now properly created on Safari.
  • +
  • [#1359] FCKeditor + will no longer produce the strange visual effect of creating a selected space and + then deleting it in Internet Explorer.
  • +
  • [#1399] Removed + the empty entry in the language selection box of sample03.html.
  • +
  • [#1400] Fixed + the issue where the style selection box in sample14.html is not context sensitive.
  • +
  • [#1401] Completed + Hebrew translation of the user interface.
  • +
  • [#1409] Completed + Finnish translation of the user interface.
  • +
  • [#1414] Fixed + the issue where entity code words written inside a <pre> block in Source mode + are not converted to the corresponding characters after switching back to editor + mode.
  • +
  • [#1418] Fixed + the issue where a detached toolbar would flicker when FCKeditor is being loaded.
  • +
  • [#1419] Fixed + the issue where pressing Delete in the middle of two lists would incorrectly move + contents after the lists to the character position.
  • +
  • [#1420] Fixed + the issue where empty list items can become collapsed and uneditable when it has + one of more indented list items directly under it.
  • +
  • [#1431] Fixed + the issue where pressing Enter in a <pre> block in Internet Explorer would + move the caret one space forward instead of sending it to the next line.
  • +
  • [#1472] Completed + Arabic translation of the user interface.
  • +
  • [#1474] Fixed + the issue where reloading a page containing FCKeditor may provoke JavaScript errors + in Internet Explorer.
  • +
  • [#1478] Fixed + the issue where parsing fckstyles.xml fails if the file contains no <style> + nodes.
  • +
  • [#1491] Fixed + the issue where FCKeditor causes the selection to include an "end of line" character + in list items even though the list item is empty.
  • +
  • [#1496] Fixed + the issue where attributes under <area> and <map> nodes are destroyed + or left unprotected when switching to and from Source mode.
  • +
  • [#1500] Fixed + the issue where the function _FCK_PaddingNodeListener() is called excessively which + negatively affects performance.
  • +
  • [#1514] Fixed + the issue where floating menus are incorrectly positioned when the toolbar or the + editor frame are not static positioned.
  • +
  • [#1518] Fixed + the issue where excessive <BR> nodes are not removed after a paragraph is + split when creating lists.
  • +
  • [#1521] Fixed + JavaScript error and erratic behavior of the Replace dialog.
  • +
  • [#1524] Fixed + the issue where the caret jumps to the beginning or end of a list block and when + user is trying to select the end of a list item.
  • +
  • Completed Simplified Chinese translation of the user interface.
  • +
  • Completed Estonian translation of the user interface.
  • +
  • [#1406] Editor + was always "dirty" if flash is available in the contents.
  • +
  • [#1561] Non standard + elements are now properly applied if defined in the styles XML file.
  • +
  • [#1412] The _QuickUploadLanguage + value is now work properly for Perl.
  • +
  • Several compatibility fixes for Firefox 3 (Beta 1): +
      +
    • [#1558] Nested + context menu close properly when one of their options is selected.
    • +
    • [#1556] Dialogs + contents are now showing completely, without scrollbar.
    • +
    • [#1559] It is + not possible to have more than one panel opened at the same time.
    • +
    • [#1554] Links + now get underlined.
    • +
    • [#1557] The "Automatic" + and "More colors..." buttons were improperly styled in the color selector panels + (Opera too).
    • +
    • [#1462] The enter + key will not any more scroll the main window.
    • +
    +
  • +
  • [#1562] Fixed + the issue where empty paragraphs are added around page breaks each time the user + switches to Source mode.
  • +
  • [#1578] The editor + will now scroll correctly when hitting enter in front of a paragraph.
  • +
  • [#1579] Fixed + the issue where the create table and table properties dialogs are too narrow for + certain translations.
  • +
  • [#1580] Completed + Polish translation of the user interface.
  • +
  • [#1591] Fixed + JavaScript error when using the blockquote command in an empty document in IE.
  • +
  • [#1592] Fixed + the issue where attempting to remove a blockquote with an empty paragraph would + leave behind an empty blockquote IE.
  • +
  • [#1594] Undo/Redo + will now work properly for the color selectors.
  • +
  • [#1597] The color + boxes are now properly rendered in the color selector panels on sample14.html.
  • +
+

+ Version 2.5 Beta

+

+ New Features and Improvements:

+
    +
  • [#624] [#634] [#1300] [#1301] + Official compatibility support with Opera 9.50 and Safari 3 + (WebKit based browsers actually). These browsers are still in Beta, but we are confident + that we'll have amazing results as soon as they get stable. We are continuously + collaborating with Opera Software and Apple to bring a wonderful FCKeditor experience + over their browser platforms.
  • +
  • [#494] Introduced + the new Style System. We are not anymore relaying on browser features + to apply and remove styles, which guarantees that the editor will behave in + the same way in all browsers. It is an incredibly flexible system, + which aims to fit all developer's needs, from Flash content or HTML4 to XHTML 1.0 + Strict or XHTML 1.1: +
      +
    • All basic formatting features, like Bold and Italic, can be precisely controlled + by using the configuration file (CoreStyles setting). It means that now, + the Bold button, for example, can produce <b>, <strong>, <span class...>, + <span style...> or anything the developer prefers.
    • +
    • Again with the CoreStyles setting, each block format, font, size, and even + the color pickers can precisely reflect end developer's needs.
    • +
    • Because of the above changes, font sizes are much more flexible. Any kind of + font unit can be used, including a mix of units.
    • +
    • All styles, including toolbar bottom styles, are precisely controlled when being + applied to the document. FCKeditor uses an element table derived from the W3C XHTML + DTDs to precisely create the elements, guarantee standards compliant code.
    • +
    • No more <font> tags... well... actually, the system is so flexible + that it is up to you to use them or not.
    • +
    • It is possible to configure FCKeditor to produce a truly semantic aware and + XHTML 1.1 compliant code. Check out sample14.html.
    • +
    • It's also possible to precisely control which inline elements must be removed with + the "Remove All" button, by using the "RemoveFormatTags" + setting.
    • +
    • [#1231] [#160] Paragraph indentation + and justification now uses style attributes and don't create unnecessary + elements, and <blockquote> is not anymore used for it. Now, even CSS classes + can be used to indent or align text.
    • +
    • All paragraph formatting features work well when EnterMode=br.
    • +
    • [#172] All paragraph + formatting features work well when list items too.
    • +
    +
  • +
  • [#1197] [#132] The toolbar + now presents a new button for Blockquote. The indentation button + will not anymore be used for that.
  • +
  • [#125] Table's + columns size can now be changed by dragging on cell borders, with + the "dragresizetable" plugin.
  • +
  • The EditorAreaCSS config option can now also be set to a string of paths separated + by commas.
  • +
  • [#212] New "Show + Blocks" command button in toolbar to show block details in the editing + area.
  • +
  • [#915] The + undo/redo system has been revamped to work the same across Internet Explorer + and Gecko-based browsers (e.g. Firefox). A number of critical bugs in the undo/redo + system are also fixed.
  • +
  • [#194] The editor + now uses the Data Processor technology, which makes it possible + to handle different input formats. A sample of it may be found at "editor/plugins/bbcode/_sample", + that shows some simple BBCode support.
  • +
  • [#145] The "htaccess.txt" + file has been renamed to ".htaccess" as it doesn't bring security concerns, being + active out of the box.
  • +
  • File Browser and Quick Upload changes: +
      +
    • [#163] Attention: The default connector + in fckconfig.js has been changed from ASP to PHP. If you are using ASP remember + to change the _FileBrowserLanguage and _QuickUploadLanguage settings in your fckconfig.js. + [#454] The file + browser and upload connectors have been unified so they can reuse the same configuration + settings.
    • +
    • [#865] The ASP + and PHP connectors have been improved so it's easy to select the location of the + destination folder for each file type, and it's no longer necessary to use the "file", + "image", "flash" subfolders
      + Attention: The location of + all the connectors have been changed in the fckconfig.js file. Please check your + settings to match the current ones. Also review carefully the config file for your + server language.
    • +
    • [#688] Now the + Perl quick upload is available.
    • +
    • [#575] The Python + connector has been rewritten as a WSGI app to be fully compatible with the latest + python frameworks and servers. The QuickUpload feature has been added as well as + all the features available in the PHP connector. Thanks to Mariano Reingart.
    • +
    • [#561] The ASP + connector provides an AbsolutePath setting so it's possible to set the url to a + full domain or a relative path and specify that way the physical folder where the + files are stored..
    • +
    • [#333] The Quick + Upload now can use the same ServerPath parameter as the full connector.
    • +
    • [#199] The AllowedCommands + configuration setting is available in the asp and php connectors so it's possible + to disallow the upload of files (although the "select file" button will still be + available in the file browser).
    • +
    +
  • +
  • [#100] A new configuration + directive "FCKConfig.EditorAreaStyles" has been implemented to allow setting editing + area styles from JavaScript.
  • +
  • [#102] HTML code + generated by the "Paste As Plain Text" feature now obeys the EnterMode setting.
  • +
  • [#1266] Introducing + the HtmlEncodeOutput setting to instruct the editor to HTML-encode some characters + (&, < and >) in the posted data.
  • +
  • [#357] Added a + "Remove Anchor" option in the context menu for anchors.
  • +
  • [#1060] Compatibility + checks with Firefox 3.0 Alpha.
  • +
  • [#817] [#1077] New "Merge + Down/Right" commands for merging tables cells in non-Gecko browsers.
  • +
  • [#1288] The "More + Colors..." button in color selector popup has been made optional and configurable + by the EnableMoreFontColors option.
  • +
  • [#356] The + Find and Replace dialogs are now unified into a single dialog with tabs.
  • +
  • [#549] Added a + 'None' option to the FCKConfig.ToolbarLocation option to allow for hidden toolbars. +
  • +
  • [#1313] An XHTML + 1.1 target editor sample has been created as sample14.html.
  • +
  • The ASP, ColdFusion and PHP integration have been aligned to our standards.
  • +
+

+ Fixed Bugs:

+
    +
  • [#71] [#243] [#267] + The editor now takes care to not create invalid nested block elements, like creating + <form> or <hr> inside <p>.  
  • +
  • [SF + Patch 1511298] The CF Component failed on CFMX 6.0
  • +
  • [#639] If the + FCKConfig.DefaultLinkTarget setting was missing in fckconfig.js the links has target="undefined".
  • +
  • [#497] Fixed EMBED + attributes handling in IE.
  • +
  • [SF + Patch 1315722] Avoid getting a cached version of the folder contents after uploading + a file
  • +
  • [SF + Patch 1386086] The php connector has been protected so mkdir doesn't fail if + there are double slashes.
  • +
  • [#943] The PHP + connector now specifies that the included files are relative to the current path.
  • +
  • [#560] The PHP + connector will work better if the connector or the userfiles folder is a symlink.
  • +
  • [#784] Fixed a + non initialized $php_errormsg in the PHP connector.
  • +
  • [#802] The replace + dialog will now advance its searching position correctly and is able to search for + strings spanning across multiple inline tags.
  • +
  • [#944] The _samples + didn't work directly from the Mac filesystem.
  • +
  • [#946] Toolbar + images didn't show in non-IE browsers if the path contained a space.
  • +
  • [#291] [#395] [#932] Clicking outside the editor + it was possible to paste or apply formatting to the rest of the page in IE.
  • +
  • [#137] Fixed FCKConfig.TabSpaces + being ignored, and weird behaviors when pressing tab in edit source mode.
  • +
  • [#268] Fixed special + XHTML characters present in event attribute values being converted inappropriately + when switching to source view.
  • +
  • [#272] The toolbar + was cut sometimes in IE to just one row if there are multiple instances of the editor.
  • +
  • [#515] Tables + in Firefox didn't inherit font styles properly in Standards mode.
  • +
  • [#321] If FCKeditor + is initially hidden in Firefox it will no longer be necessary to call the oEditor.MakeEditable() + function.
  • +
  • [#299] The 'Browse + Server' button in the Image and Flash dialogs was a little too high.
  • +
  • [#931] The BodyId + and BodyClass configuration settings weren't applied in the preview window.
  • +
  • [#583] The "noWrap" + attribute for table cells was getting an empty value in Firefox. Thanks to geirhelge.
  • +
  • [#141] Fixed incorrect + startup focus in Internet Explorer after page reloads.
  • +
  • [#143] Fixed browser + lockup when the user writes <!--{PS..x}> into the editor in source mode.
  • +
  • [#174] Fixed incorrect + positioning of FCKeditor in full screen mode.
  • +
  • [#978] Fixed a + SpellerPages error with ColdFusion when no suggestions where available for a word.
  • +
  • [#977] The "shape" + attribute of <area> had its value changed to uppercase in IE.
  • +
  • [#996] "OnPaste" + event listeners will now get executed only once.
  • +
  • [#289] Removed + debugging popups from page load regarding JavaScript and CSS loading errors.
  • +
  • [#328] [#346] [#404] Fixed a number of problems + regarding <pre> blocks: +
      +
    1. Leading whitespaces and line breaks in <pre> blocks are trimmed when the user + switches between editor mode and source mode;
    2. +
    3. Pressing Enter inside a <pre> block would split the block into two, but the + expected behavior is simply inserting a line break;
    4. +
    5. Simple line breaks inside <pre> blocks entered in source mode are being turned + into <br> tags when the user switches to editor mode and back.
    6. +
    +
  • +
  • [#581] Fixed the + issue where the "Maximize the editor size" toolbar button stops working if any of + the following occurs: +
      +
    1. There exists a form input whose name or id is "style" in FCKeditor's host form;
    2. +
    3. There exists a form input whose name or id is "className" in FCKeditor's host form;
    4. +
    5. There exists a form and a form input whose name of id is "style" in the editing + frame.
    6. +
    +
  • +
  • [#183] Fixed the + issue when FCKeditor is being executed in a custom application with the WebBrowser + ActiveX control, hiding the WebBrowser control would incorrectly invoke FCKeditor's + cleanup routines, causing FCKeditor to stop working.
  • +
  • [#539] Fixed the + issue where right clicking on a table inside the editing frame in Firefox would + cause the editor the scroll to the top of the document.
  • +
  • [#523] Fixed the + issue where, under certain circumstances, FCKeditor would obtain focus at startup + even though FCKConfig.StartupFocus is set to false.
  • +
  • [#393] Fixed the + issue where if an inline tag is at the end of the document, the user would have + no way of escaping from the inline tag if he continues typing at the end of the + document. FCKeditor's behaviors regarding inline tags has been made to be more like + MS Word's: +
      +
    1. If the caret is moved to the end of a hyperlink by the keyboard, then hyperlink + mode is disabled.
    2. +
    3. If the caret is moved to the end of other styled inline tags by any key other than + the End key (like bold text or italic text), the original bold/italic/... modes + would continue to be effective.
    4. +
    5. If the caret is moved to the end of other styled inline tags by the End key, all + style tag modes (e.g. bold, italic, underline, etc.) would be canceled. This is + not consistent with MS Word, but provides a convenient way for the user to escape + the inline tag at the end of a line.
    6. +
    +
  • +
  • [#338] Fixed the + issue where the configuration directive FCKConfig.ForcePasteAsPlainText is ignored + when new contents are pasted into the editor via drag-and drop from outside of the + editor.
  • +
  • [#1026] Fixed + the issue where the cursor or selection positions are not restored with undo/redo + commands correctly in IE, under some circumstances.
  • +
  • [#1160] [#1184] Home, End + and Tab keys are working properly for numeric fields in dialogs.
  • +
  • [#68] The style + system now properly handles Format styles when EnterMode=br.
  • +
  • [#525] The union + of successive DIVs will work properly now if EnterMode!=div.
  • +
  • [#1227] The color + commands used an unnecessary temporary variable. Thanks to Matthias Miller
  • +
  • [#67] [#277] [#427] + [#428] [#965] [#1178] + [#1267] The list + insertion/removal/indent/outdent logic in FCKeditor has been rewritten, such that: +
      +
    1. Text separated by <br> will always be treated as separate items during list + insertion regardless of browser;
    2. +
    3. List removal will now always obey the FCKConfig.EnterMode setting;
    4. +
    5. List indentation will be XHTML 1.1 compliant - all child elements under an <ol> + or <ul> must be <li> nodes;
    6. +
    7. IE editor hacks like <ul type="1"> will no longer appear;
    8. +
    9. Excessive <div> nodes are no longer inserted into list items due to alignment + changes.
    10. +
    +
  • +
  • [#205] Fixed the + issue where visible <br> tags at the end of paragraphs are incorrectly removed + after switching to and from source mode.
  • +
  • [#1050] Fixed + a minor PHP/XML incompatibility bug in editor/dialog/fck_docprops.html.
  • +
  • [#462] Fixed an + algorithm bug in switching from source mode to WYSIWYG mode which causes the browser + to spin up and freeze for broken HTML code inputs.
  • +
  • [#1019] Table + command buttons are now disabled when the current selection is not inside a table.
  • +
  • [#135] Fixed the + issue where context menus are misplaced in FCKeditor when FCKeditor is created inside + a <div> node with scrolling.
  • +
  • [#1067] Fixed + the issue where context menus are misplaced in Safari when FCKeditor is scrolled + down.
  • +
  • [#1081] Fixed + the issue where undoing table deletion in IE7 would cause JavaScript errors.
  • +
  • [#1061] Fixed + the issue where backspace and delete cannot delete special characters in Firefox + under some circumstances.
  • +
  • [#403] Fixed the + issue where switching to and from source mode in full page mode under IE would add + excessive line breaks to <style> blocks.
  • +
  • [#121] Fixed the + issue where maximizing FCKeditor inside a frameset would resize FCKeditor to the + whole window's size instead of just the container frame's size.
  • +
  • [#1093] Fixed + the issue where pressing Enter inside an inline tag would not create a new paragraph + correctly.
  • +
  • [#1089] Fixed + the issue where pressing Enter inside a <pre> block do not generate visible + line breaks in IE.
  • +
  • [#332] Hitting + Enter when the caret is at the end of a hyperlink will no longer continue the link + at the new paragraph.
  • +
  • [#1121] Hitting + Enter with FCKConfig.EnterMode=br will now scroll the document correctly when the + new lines have exceeded the lower boundary of the editor frame.
  • +
  • [#1063] [#1084] [#1092] Fixed a few Norwegian + language translation errors.
  • +
  • [#1148] Fixed + the issue where the "Automatic" and "More Colors..." buttons + in the color selection panel are not centered in Safari.
  • +
  • [#1187] Fixed + the issue where the "Paste as plain text" command cannot be undone in + non-IE browsers.
  • +
  • [#1222] Ctrl-Backspace + operations will now save undo snapshots in all browsers.
  • +
  • [#1223] Fixed + the issue where the insert link dialog would save multiple undo snapshots for a + single operation.
  • +
  • [#247] Fixed the + issue where deleting everything in the document in IE would create an empty <p> + block in the document regardless of EnterMode setting.
  • +
  • [#1280] Fixed + the issue where opening a combo box will cause the editor frames to lose focus when + there are multiple editors in the same document.
  • +
  • [#363] Fixed the + issue where the Find dialog does not work under Opera.
  • +
  • [#50] Fixed the + issue where the Paste button is always disabled in Safari.
  • +
  • [#389] Pasting + text with comments from Word won't generate errors in IE, thanks to the idea from + Swift.
  • +
  • The pasting area in the Paste from Word dialog is focused on initial load
  • +
  • Some fixes related to html comment handling in the Word clean up routine
  • +
  • [#1303] <col> + is correctly treated as an empty element.
  • +
  • [#969] Removed + unused files (fcknumericfield.htc and moz-bindings.xml).
  • +
  • [#1166] Fixed + the issue where <meta> tags are incorrectly outputted with closing tags in + full page mode.
  • +
  • [#1200] Fixed + the issue where context menus sometimes disappear prematurely before the user can + click on any items in Opera.
  • +
  • [#1315] Fixed + the issue where the source view text area in Safari is displayed with an excessive + blue border.
  • +
  • [#1201] Fixed + the issue where hitting Backspace or Delete inside a table cell deletes the table + cell instead of its contents in Opera.
  • +
  • [#1311] Fixed + the issue where undoing and redoing a special character insertion would send the + caret to incorrect positions. (e.g. the beginning of document)
  • +
  • [#923] Font colors + are now properly applied on links.
  • +
  • [#1316] Fixed + the issue where the image dialog expands to a size too big in Safari.
  • +
  • [#1306] [#894] The undo system + can now undo text formatting steps like setting fonts to bold and italic.
  • +
  • [#95] Fixed the + issue where FCKeditor breaks <meta> tags in full page mode in some circumstances.
  • +
  • [#175] Fixed the + issue where entering an email address with a '%' sign in the insert link dialog + would cause JavaScript error.
  • +
  • [#180] Improved + backward compatibility with older PHP versions. FCKeditor can now work with PHP + versions down to 4.0.
  • +
  • [#192] Document + modifying actions from the FCKeditor JavaScript API will now save undo steps.
  • +
  • [#246] Using text + formatting commands in EnterMode=div will no longer cause tags to randomly disappear.
  • +
  • [#327] It is no + longer possible for the browser's back action to misfire when a user presses backspace + while an image is being selected in FCKeditor.
  • +
  • [#362] Ctrl-Backspace + now works in FCKeditor.
  • +
  • [#390] Text alignment + and justification commands now respects EnterMode=br paragraph rules.
  • +
  • [#534] Pressing + Ctrl-End while the document contains a list towards the end will no longer make + the cursor disappear.
  • +
  • [#906] It is now + possible to have XHTML 1.0 Strict compliant output from a document pasted from Word.
  • +
  • [#929] Pressing + the Enter key will now produce an undo step.
  • +
  • [#934] Fixed the + "Cannot execute code from a freed script" error in IE from editor dialogs.
  • +
  • [#942] Server + based spell checking with ColdFusion integration no longer breaks fir non en_US + languages.
  • +
  • [#1056] Deleting + everything in the editor document and moving the cursor around will no longer leave + the cursor hanging beyond the top of the editor document.
  • +
+

+ # This version has been partially sponsored + by the Council of Europe. +

Version 2.4.3

diff --git a/static/fckeditor/editor/_source/classes/fckcontextmenu.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckcontextmenu.js old mode 100644 new mode 100755 similarity index 54% rename from static/fckeditor/editor/_source/classes/fckcontextmenu.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckcontextmenu.js index 9cfca6d..1575c49 --- a/static/fckeditor/editor/_source/classes/fckcontextmenu.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckcontextmenu.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -26,7 +26,7 @@ var FCKContextMenu = function( parentWindow, langDir ) this.CtrlDisable = false ; var oPanel = this._Panel = new FCKPanel( parentWindow ) ; - oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ; + oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ; oPanel.IsContextMenu = true ; // The FCKTools.DisableSelection doesn't seems to work to avoid dragging of the icons in Mozilla @@ -47,13 +47,22 @@ FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow ) if ( !FCKBrowserInfo.IsIE ) { this._Document = mouseClickWindow.document ; + if ( FCKBrowserInfo.IsOpera && !( 'oncontextmenu' in document.createElement('foo') ) ) + { + this._Document.addEventListener( 'mousedown', FCKContextMenu_Document_OnMouseDown, false ) ; + this._Document.addEventListener( 'mouseup', FCKContextMenu_Document_OnMouseUp, false ) ; + } this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ; } } -FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) +/** + The customData parameter is just a value that will be send to the command that is executed, + so it's possible to reuse the same command for several items just by assigning different data for each one. +*/ +FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) { - var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled) ; + var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ; this._Redraw = true ; return oItem ; } @@ -76,12 +85,13 @@ FCKContextMenu.prototype.AttachToElement = function( element ) FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ; else element._FCKContextMenu = this ; - -// element.onmouseup = FCKContextMenu_AttachedElement_OnMouseUp ; } function FCKContextMenu_Document_OnContextMenu( e ) { + if ( FCKConfig.BrowserContextMenu ) + return true ; + var el = e.target ; while ( el ) @@ -93,19 +103,77 @@ function FCKContextMenu_Document_OnContextMenu( e ) FCKTools.CancelEvent( e ) ; FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ; + return false ; } el = el.parentNode ; } + return true ; +} + +var FCKContextMenu_OverrideButton ; + +function FCKContextMenu_Document_OnMouseDown( e ) +{ + if( !e || e.button != 2 ) + return false ; + + if ( FCKConfig.BrowserContextMenu ) + return true ; + + var el = e.target ; + + while ( el ) + { + if ( el._FCKContextMenu ) + { + if ( el._FCKContextMenu.CtrlDisable && ( e.ctrlKey || e.metaKey ) ) + return true ; + + var overrideButton = FCKContextMenu_OverrideButton ; + if( !overrideButton ) + { + var doc = FCKTools.GetElementDocument( e.target ) ; + overrideButton = FCKContextMenu_OverrideButton = doc.createElement('input') ; + overrideButton.type = 'button' ; + var buttonHolder = doc.createElement('p') ; + doc.body.appendChild( buttonHolder ) ; + buttonHolder.appendChild( overrideButton ) ; + } + + overrideButton.style.cssText = 'position:absolute;top:' + ( e.clientY - 2 ) + + 'px;left:' + ( e.clientX - 2 ) + + 'px;width:5px;height:5px;opacity:0.01' ; + } + el = el.parentNode ; + } + return false ; +} + +function FCKContextMenu_Document_OnMouseUp( e ) +{ + if ( FCKConfig.BrowserContextMenu ) + return true ; + + var overrideButton = FCKContextMenu_OverrideButton ; + + if ( overrideButton ) + { + var parent = overrideButton.parentNode ; + parent.parentNode.removeChild( parent ) ; + FCKContextMenu_OverrideButton = undefined ; + + if( e && e.button == 2 ) + { + FCKContextMenu_Document_OnContextMenu( e ) ; + return false ; + } + } + return true ; } function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el ) { -// var iButton = e ? e.which - 1 : event.button ; - -// if ( iButton != 2 ) -// return ; - - if ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) ) + if ( ( fckContextMenu.CtrlDisable && ( ev.ctrlKey || ev.metaKey ) ) || FCKConfig.BrowserContextMenu ) return true ; var eTarget = el || this ; @@ -121,16 +189,29 @@ function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el ) fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ; fckContextMenu._Redraw = false ; } - + // This will avoid that the content of the context menu can be dragged in IE // as the content of the panel is recreated we need to do it every time FCKTools.DisableSelection( fckContextMenu._Panel.Document.body ) ; - fckContextMenu._Panel.Show( - ev.pageX || ev.screenX, - ev.pageY || ev.screenY, - ev.currentTarget || null - ) ; + var x = 0 ; + var y = 0 ; + if ( FCKBrowserInfo.IsIE ) + { + x = ev.screenX ; + y = ev.screenY ; + } + else if ( FCKBrowserInfo.IsSafari ) + { + x = ev.clientX ; + y = ev.clientY ; + } + else + { + x = ev.pageX ; + y = ev.pageY ; + } + fckContextMenu._Panel.Show( x, y, ev.currentTarget || null ) ; return false ; } @@ -139,4 +220,4 @@ function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu ) { contextMenu._Panel.Hide() ; FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ; -} \ No newline at end of file +} diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdataprocessor.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdataprocessor.js new file mode 100755 index 0000000..c8726c5 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdataprocessor.js @@ -0,0 +1,119 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * The Data Processor is responsible for transforming the input and output data + * in the editor. For more info: + * http://dev.fckeditor.net/wiki/Components/DataProcessor + * + * The default implementation offers the base XHTML compatibility features of + * FCKeditor. Further Data Processors may be implemented for other purposes. + * + */ + +var FCKDataProcessor = function() +{} + +FCKDataProcessor.prototype = +{ + /* + * Returns a string representing the HTML format of "data". The returned + * value will be loaded in the editor. + * The HTML must be from to , including , and + * eventually the DOCTYPE. + * Note: HTML comments may already be part of the data because of the + * pre-processing made with ProtectedSource. + * @param {String} data The data to be converted in the + * DataProcessor specific format. + */ + ConvertToHtml : function( data ) + { + // The default data processor must handle two different cases depending + // on the FullPage setting. Custom Data Processors will not be + // compatible with FullPage, much probably. + if ( FCKConfig.FullPage ) + { + // Save the DOCTYPE. + FCK.DocTypeDeclaration = data.match( FCKRegexLib.DocTypeTag ) ; + + // Check if the tag is available. + if ( !FCKRegexLib.HasBodyTag.test( data ) ) + data = '' + data + '' ; + + // Check if the tag is available. + if ( !FCKRegexLib.HtmlOpener.test( data ) ) + data = '' + data + '' ; + + // Check if the tag is available. + if ( !FCKRegexLib.HeadOpener.test( data ) ) + data = data.replace( FCKRegexLib.HtmlOpener, '$&' ) ; + + return data ; + } + else + { + var html = + FCKConfig.DocType + + ' 0 && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) ) + html += ' style="overflow-y: scroll"' ; + + html += '>' + + '' + + data + + '' ; + + return html ; + } + }, + + /* + * Converts a DOM (sub-)tree to a string in the data format. + * @param {Object} rootNode The node that contains the DOM tree to be + * converted to the data format. + * @param {Boolean} excludeRoot Indicates that the root node must not + * be included in the conversion, only its children. + * @param {Boolean} format Indicates that the data must be formatted + * for human reading. Not all Data Processors may provide it. + */ + ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format ) + { + var data = FCKXHtml.GetXHTML( rootNode, !excludeRoot, format ) ; + + if ( ignoreIfEmptyParagraph && FCKRegexLib.EmptyOutParagraph.test( data ) ) + return '' ; + + return data ; + }, + + /* + * Makes any necessary changes to a piece of HTML for insertion in the + * editor selection position. + * @param {String} html The HTML to be fixed. + */ + FixHtml : function( html ) + { + return html ; + } +} ; diff --git a/static/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_gecko.js old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_gecko.js index f7c7b1b..992ec38 --- a/static/fckeditor/editor/_source/classes/fckdocumentfragment_gecko.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_gecko.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -39,8 +39,15 @@ FCKDocumentFragment.prototype = targetNode.appendChild( this.RootNode ) ; }, + AppendHtml : function( html ) + { + var eTmpDiv = this.RootNode.ownerDocument.createElement( 'div' ) ; + eTmpDiv.innerHTML = html ; + FCKDomTools.MoveChildren( eTmpDiv, this.RootNode ) ; + }, + InsertAfterNode : function( existingNode ) { FCKDomTools.InsertAfterNode( existingNode, this.RootNode ) ; } -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_ie.js old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_ie.js index 3ea539f..4a50cf4 --- a/static/fckeditor/editor/_source/classes/fckdocumentfragment_ie.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdocumentfragment_ie.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -55,4 +55,4 @@ FCKDocumentFragment.prototype = while( ( eLast = eRoot.lastChild ) ) FCKDomTools.InsertAfterNode( existingNode, eRoot.removeChild( eLast ) ) ; } -} ; \ No newline at end of file +} ; diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange.js new file mode 100755 index 0000000..7e032da --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange.js @@ -0,0 +1,935 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Class for working with a selection range, much like the W3C DOM Range, but + * it is not intended to be an implementation of the W3C interface. + */ + +var FCKDomRange = function( sourceWindow ) +{ + this.Window = sourceWindow ; + this._Cache = {} ; +} + +FCKDomRange.prototype = +{ + + _UpdateElementInfo : function() + { + var innerRange = this._Range ; + + if ( !innerRange ) + this.Release( true ) ; + else + { + // For text nodes, the node itself is the StartNode. + var eStart = innerRange.startContainer ; + + var oElementPath = new FCKElementPath( eStart ) ; + this.StartNode = eStart.nodeType == 3 ? eStart : eStart.childNodes[ innerRange.startOffset ] ; + this.StartContainer = eStart ; + this.StartBlock = oElementPath.Block ; + this.StartBlockLimit = oElementPath.BlockLimit ; + + if ( innerRange.collapsed ) + { + this.EndNode = this.StartNode ; + this.EndContainer = this.StartContainer ; + this.EndBlock = this.StartBlock ; + this.EndBlockLimit = this.StartBlockLimit ; + } + else + { + var eEnd = innerRange.endContainer ; + + if ( eStart != eEnd ) + oElementPath = new FCKElementPath( eEnd ) ; + + // The innerRange.endContainer[ innerRange.endOffset ] is not + // usually part of the range, but the marker for the range end. So, + // let's get the previous available node as the real end. + var eEndNode = eEnd ; + if ( innerRange.endOffset == 0 ) + { + while ( eEndNode && !eEndNode.previousSibling ) + eEndNode = eEndNode.parentNode ; + + if ( eEndNode ) + eEndNode = eEndNode.previousSibling ; + } + else if ( eEndNode.nodeType == 1 ) + eEndNode = eEndNode.childNodes[ innerRange.endOffset - 1 ] ; + + this.EndNode = eEndNode ; + this.EndContainer = eEnd ; + this.EndBlock = oElementPath.Block ; + this.EndBlockLimit = oElementPath.BlockLimit ; + } + } + + this._Cache = {} ; + }, + + CreateRange : function() + { + return new FCKW3CRange( this.Window.document ) ; + }, + + DeleteContents : function() + { + if ( this._Range ) + { + this._Range.deleteContents() ; + this._UpdateElementInfo() ; + } + }, + + ExtractContents : function() + { + if ( this._Range ) + { + var docFrag = this._Range.extractContents() ; + this._UpdateElementInfo() ; + return docFrag ; + } + return null ; + }, + + CheckIsCollapsed : function() + { + if ( this._Range ) + return this._Range.collapsed ; + + return false ; + }, + + Collapse : function( toStart ) + { + if ( this._Range ) + this._Range.collapse( toStart ) ; + + this._UpdateElementInfo() ; + }, + + Clone : function() + { + var oClone = FCKTools.CloneObject( this ) ; + + if ( this._Range ) + oClone._Range = this._Range.cloneRange() ; + + return oClone ; + }, + + MoveToNodeContents : function( targetNode ) + { + if ( !this._Range ) + this._Range = this.CreateRange() ; + + this._Range.selectNodeContents( targetNode ) ; + + this._UpdateElementInfo() ; + }, + + MoveToElementStart : function( targetElement ) + { + this.SetStart(targetElement,1) ; + this.SetEnd(targetElement,1) ; + }, + + // Moves to the first editing point inside a element. For example, in a + // element tree like "

Text

", the start editing point + // is "

^ Text

" (inside ). + MoveToElementEditStart : function( targetElement ) + { + var editableElement ; + + while ( targetElement && targetElement.nodeType == 1 ) + { + if ( FCKDomTools.CheckIsEditable( targetElement ) ) + editableElement = targetElement ; + else if ( editableElement ) + break ; // If we already found an editable element, stop the loop. + + targetElement = targetElement.firstChild ; + } + + if ( editableElement ) + this.MoveToElementStart( editableElement ) ; + }, + + InsertNode : function( node ) + { + if ( this._Range ) + this._Range.insertNode( node ) ; + }, + + CheckIsEmpty : function() + { + if ( this.CheckIsCollapsed() ) + return true ; + + // Inserts the contents of the range in a div tag. + var eToolDiv = this.Window.document.createElement( 'div' ) ; + this._Range.cloneContents().AppendTo( eToolDiv ) ; + + FCKDomTools.TrimNode( eToolDiv ) ; + + return ( eToolDiv.innerHTML.length == 0 ) ; + }, + + /** + * Checks if the start boundary of the current range is "visually" (like a + * selection caret) at the beginning of the block. It means that some + * things could be brefore the range, like spaces or empty inline elements, + * but it would still be considered at the beginning of the block. + */ + CheckStartOfBlock : function() + { + var cache = this._Cache ; + var bIsStartOfBlock = cache.IsStartOfBlock ; + + if ( bIsStartOfBlock != undefined ) + return bIsStartOfBlock ; + + // Take the block reference. + var block = this.StartBlock || this.StartBlockLimit ; + + var container = this._Range.startContainer ; + var offset = this._Range.startOffset ; + var currentNode ; + + if ( offset > 0 ) + { + // First, check the start container. If it is a text node, get the + // substring of the node value before the range offset. + if ( container.nodeType == 3 ) + { + var textValue = container.nodeValue.substr( 0, offset ).Trim() ; + + // If we have some text left in the container, we are not at + // the end for the block. + if ( textValue.length != 0 ) + return cache.IsStartOfBlock = false ; + } + else + currentNode = container.childNodes[ offset - 1 ] ; + } + + // We'll not have a currentNode if the container was a text node, or + // the offset is zero. + if ( !currentNode ) + currentNode = FCKDomTools.GetPreviousSourceNode( container, true, null, block ) ; + + while ( currentNode ) + { + switch ( currentNode.nodeType ) + { + case 1 : + // It's not an inline element. + if ( !FCKListsLib.InlineChildReqElements[ currentNode.nodeName.toLowerCase() ] ) + return cache.IsStartOfBlock = false ; + + break ; + + case 3 : + // It's a text node with real text. + if ( currentNode.nodeValue.Trim().length > 0 ) + return cache.IsStartOfBlock = false ; + } + + currentNode = FCKDomTools.GetPreviousSourceNode( currentNode, false, null, block ) ; + } + + return cache.IsStartOfBlock = true ; + }, + + /** + * Checks if the end boundary of the current range is "visually" (like a + * selection caret) at the end of the block. It means that some things + * could be after the range, like spaces, empty inline elements, or a + * single
, but it would still be considered at the end of the block. + */ + CheckEndOfBlock : function( refreshSelection ) + { + var isEndOfBlock = this._Cache.IsEndOfBlock ; + + if ( isEndOfBlock != undefined ) + return isEndOfBlock ; + + // Take the block reference. + var block = this.EndBlock || this.EndBlockLimit ; + + var container = this._Range.endContainer ; + var offset = this._Range.endOffset ; + var currentNode ; + + // First, check the end container. If it is a text node, get the + // substring of the node value after the range offset. + if ( container.nodeType == 3 ) + { + var textValue = container.nodeValue ; + if ( offset < textValue.length ) + { + textValue = textValue.substr( offset ) ; + + // If we have some text left in the container, we are not at + // the end for the block. + if ( textValue.Trim().length != 0 ) + return this._Cache.IsEndOfBlock = false ; + } + } + else + currentNode = container.childNodes[ offset ] ; + + // We'll not have a currentNode if the container was a text node, of + // the offset is out the container children limits (after it probably). + if ( !currentNode ) + currentNode = FCKDomTools.GetNextSourceNode( container, true, null, block ) ; + + var hadBr = false ; + + while ( currentNode ) + { + switch ( currentNode.nodeType ) + { + case 1 : + var nodeName = currentNode.nodeName.toLowerCase() ; + + // It's an inline element. + if ( FCKListsLib.InlineChildReqElements[ nodeName ] ) + break ; + + // It is the first
found. + if ( nodeName == 'br' && !hadBr ) + { + hadBr = true ; + break ; + } + + return this._Cache.IsEndOfBlock = false ; + + case 3 : + // It's a text node with real text. + if ( currentNode.nodeValue.Trim().length > 0 ) + return this._Cache.IsEndOfBlock = false ; + } + + currentNode = FCKDomTools.GetNextSourceNode( currentNode, false, null, block ) ; + } + + if ( refreshSelection ) + this.Select() ; + + return this._Cache.IsEndOfBlock = true ; + }, + + // This is an "intrusive" way to create a bookmark. It includes tags + // in the range boundaries. The advantage of it is that it is possible to + // handle DOM mutations when moving back to the bookmark. + // Attention: the inclusion of nodes in the DOM is a design choice and + // should not be changed as there are other points in the code that may be + // using those nodes to perform operations. See GetBookmarkNode. + // For performance, includeNodes=true if intended to SelectBookmark. + CreateBookmark : function( includeNodes ) + { + // Create the bookmark info (random IDs). + var oBookmark = + { + StartId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S', + EndId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'E' + } ; + + var oDoc = this.Window.document ; + var eStartSpan ; + var eEndSpan ; + var oClone ; + + // For collapsed ranges, add just the start marker. + if ( !this.CheckIsCollapsed() ) + { + eEndSpan = oDoc.createElement( 'span' ) ; + eEndSpan.style.display = 'none' ; + eEndSpan.id = oBookmark.EndId ; + eEndSpan.setAttribute( '_fck_bookmark', true ) ; + + // For IE, it must have something inside, otherwise it may be + // removed during DOM operations. +// if ( FCKBrowserInfo.IsIE ) + eEndSpan.innerHTML = ' ' ; + + oClone = this.Clone() ; + oClone.Collapse( false ) ; + oClone.InsertNode( eEndSpan ) ; + } + + eStartSpan = oDoc.createElement( 'span' ) ; + eStartSpan.style.display = 'none' ; + eStartSpan.id = oBookmark.StartId ; + eStartSpan.setAttribute( '_fck_bookmark', true ) ; + + // For IE, it must have something inside, otherwise it may be removed + // during DOM operations. +// if ( FCKBrowserInfo.IsIE ) + eStartSpan.innerHTML = ' ' ; + + oClone = this.Clone() ; + oClone.Collapse( true ) ; + oClone.InsertNode( eStartSpan ) ; + + if ( includeNodes ) + { + oBookmark.StartNode = eStartSpan ; + oBookmark.EndNode = eEndSpan ; + } + + // Update the range position. + if ( eEndSpan ) + { + this.SetStart( eStartSpan, 4 ) ; + this.SetEnd( eEndSpan, 3 ) ; + } + else + this.MoveToPosition( eStartSpan, 4 ) ; + + return oBookmark ; + }, + + // This one should be a part of a hypothetic "bookmark" object. + GetBookmarkNode : function( bookmark, start ) + { + var doc = this.Window.document ; + + if ( start ) + return bookmark.StartNode || doc.getElementById( bookmark.StartId ) ; + else + return bookmark.EndNode || doc.getElementById( bookmark.EndId ) ; + }, + + MoveToBookmark : function( bookmark, preserveBookmark ) + { + var eStartSpan = this.GetBookmarkNode( bookmark, true ) ; + var eEndSpan = this.GetBookmarkNode( bookmark, false ) ; + + this.SetStart( eStartSpan, 3 ) ; + + if ( !preserveBookmark ) + FCKDomTools.RemoveNode( eStartSpan ) ; + + // If collapsed, the end span will not be available. + if ( eEndSpan ) + { + this.SetEnd( eEndSpan, 3 ) ; + + if ( !preserveBookmark ) + FCKDomTools.RemoveNode( eEndSpan ) ; + } + else + this.Collapse( true ) ; + + this._UpdateElementInfo() ; + }, + + // Non-intrusive bookmark algorithm + CreateBookmark2 : function() + { + // If there is no range then get out of here. + // It happens on initial load in Safari #962 and if the editor it's hidden also in Firefox + if ( ! this._Range ) + return { "Start" : 0, "End" : 0 } ; + + // First, we record down the offset values + var bookmark = + { + "Start" : [ this._Range.startOffset ], + "End" : [ this._Range.endOffset ] + } ; + // Since we're treating the document tree as normalized, we need to backtrack the text lengths + // of previous text nodes into the offset value. + var curStart = this._Range.startContainer.previousSibling ; + var curEnd = this._Range.endContainer.previousSibling ; + + // Also note that the node that we use for "address base" would change during backtracking. + var addrStart = this._Range.startContainer ; + var addrEnd = this._Range.endContainer ; + while ( curStart && addrStart.nodeType == 3 ) + { + bookmark.Start[0] += curStart.length ; + addrStart = curStart ; + curStart = curStart.previousSibling ; + } + while ( curEnd && addrEnd.nodeType == 3 ) + { + bookmark.End[0] += curEnd.length ; + addrEnd = curEnd ; + curEnd = curEnd.previousSibling ; + } + + // If the object pointed to by the startOffset and endOffset are text nodes, we need + // to backtrack and add in the text offset to the bookmark addresses. + if ( addrStart.nodeType == 1 && addrStart.childNodes[bookmark.Start[0]] && addrStart.childNodes[bookmark.Start[0]].nodeType == 3 ) + { + var curNode = addrStart.childNodes[bookmark.Start[0]] ; + var offset = 0 ; + while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 ) + { + curNode = curNode.previousSibling ; + offset += curNode.length ; + } + addrStart = curNode ; + bookmark.Start[0] = offset ; + } + if ( addrEnd.nodeType == 1 && addrEnd.childNodes[bookmark.End[0]] && addrEnd.childNodes[bookmark.End[0]].nodeType == 3 ) + { + var curNode = addrEnd.childNodes[bookmark.End[0]] ; + var offset = 0 ; + while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 ) + { + curNode = curNode.previousSibling ; + offset += curNode.length ; + } + addrEnd = curNode ; + bookmark.End[0] = offset ; + } + + // Then, we record down the precise position of the container nodes + // by walking up the DOM tree and counting their childNode index + bookmark.Start = FCKDomTools.GetNodeAddress( addrStart, true ).concat( bookmark.Start ) ; + bookmark.End = FCKDomTools.GetNodeAddress( addrEnd, true ).concat( bookmark.End ) ; + return bookmark; + }, + + MoveToBookmark2 : function( bookmark ) + { + // Reverse the childNode counting algorithm in CreateBookmark2() + var curStart = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.Start.slice( 0, -1 ), true ) ; + var curEnd = FCKDomTools.GetNodeFromAddress( this.Window.document, bookmark.End.slice( 0, -1 ), true ) ; + + // Generate the W3C Range object and update relevant data + this.Release( true ) ; + this._Range = new FCKW3CRange( this.Window.document ) ; + var startOffset = bookmark.Start[ bookmark.Start.length - 1 ] ; + var endOffset = bookmark.End[ bookmark.End.length - 1 ] ; + while ( curStart.nodeType == 3 && startOffset > curStart.length ) + { + if ( ! curStart.nextSibling || curStart.nextSibling.nodeType != 3 ) + break ; + startOffset -= curStart.length ; + curStart = curStart.nextSibling ; + } + while ( curEnd.nodeType == 3 && endOffset > curEnd.length ) + { + if ( ! curEnd.nextSibling || curEnd.nextSibling.nodeType != 3 ) + break ; + endOffset -= curEnd.length ; + curEnd = curEnd.nextSibling ; + } + this._Range.setStart( curStart, startOffset ) ; + this._Range.setEnd( curEnd, endOffset ) ; + this._UpdateElementInfo() ; + }, + + MoveToPosition : function( targetElement, position ) + { + this.SetStart( targetElement, position ) ; + this.Collapse( true ) ; + }, + + /* + * Moves the position of the start boundary of the range to a specific position + * relatively to a element. + * @position: + * 1 = After Start ^contents + * 2 = Before End contents^ + * 3 = Before Start ^contents + * 4 = After End contents^ + */ + SetStart : function( targetElement, position, noInfoUpdate ) + { + var oRange = this._Range ; + if ( !oRange ) + oRange = this._Range = this.CreateRange() ; + + switch( position ) + { + case 1 : // After Start ^contents + oRange.setStart( targetElement, 0 ) ; + break ; + + case 2 : // Before End contents^ + oRange.setStart( targetElement, targetElement.childNodes.length ) ; + break ; + + case 3 : // Before Start ^contents + oRange.setStartBefore( targetElement ) ; + break ; + + case 4 : // After End contents^ + oRange.setStartAfter( targetElement ) ; + } + + if ( !noInfoUpdate ) + this._UpdateElementInfo() ; + }, + + /* + * Moves the position of the start boundary of the range to a specific position + * relatively to a element. + * @position: + * 1 = After Start ^contents + * 2 = Before End contents^ + * 3 = Before Start ^contents + * 4 = After End contents^ + */ + SetEnd : function( targetElement, position, noInfoUpdate ) + { + var oRange = this._Range ; + if ( !oRange ) + oRange = this._Range = this.CreateRange() ; + + switch( position ) + { + case 1 : // After Start ^contents + oRange.setEnd( targetElement, 0 ) ; + break ; + + case 2 : // Before End contents^ + oRange.setEnd( targetElement, targetElement.childNodes.length ) ; + break ; + + case 3 : // Before Start ^contents + oRange.setEndBefore( targetElement ) ; + break ; + + case 4 : // After End contents^ + oRange.setEndAfter( targetElement ) ; + } + + if ( !noInfoUpdate ) + this._UpdateElementInfo() ; + }, + + Expand : function( unit ) + { + var oNode, oSibling ; + + switch ( unit ) + { + // Expand the range to include all inline parent elements if we are + // are in their boundary limits. + // For example (where [ ] are the range limits): + // Before => Some [Some sample text]. + // After => Some [Some sample text]. + case 'inline_elements' : + // Expand the start boundary. + if ( this._Range.startOffset == 0 ) + { + oNode = this._Range.startContainer ; + + if ( oNode.nodeType != 1 ) + oNode = oNode.previousSibling ? null : oNode.parentNode ; + + if ( oNode ) + { + while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] ) + { + this._Range.setStartBefore( oNode ) ; + + if ( oNode != oNode.parentNode.firstChild ) + break ; + + oNode = oNode.parentNode ; + } + } + } + + // Expand the end boundary. + oNode = this._Range.endContainer ; + var offset = this._Range.endOffset ; + + if ( ( oNode.nodeType == 3 && offset >= oNode.nodeValue.length ) || ( oNode.nodeType == 1 && offset >= oNode.childNodes.length ) || ( oNode.nodeType != 1 && oNode.nodeType != 3 ) ) + { + if ( oNode.nodeType != 1 ) + oNode = oNode.nextSibling ? null : oNode.parentNode ; + + if ( oNode ) + { + while ( FCKListsLib.InlineNonEmptyElements[ oNode.nodeName.toLowerCase() ] ) + { + this._Range.setEndAfter( oNode ) ; + + if ( oNode != oNode.parentNode.lastChild ) + break ; + + oNode = oNode.parentNode ; + } + } + } + + break ; + + case 'block_contents' : + case 'list_contents' : + var boundarySet = FCKListsLib.BlockBoundaries ; + if ( unit == 'list_contents' || FCKConfig.EnterMode == 'br' ) + boundarySet = FCKListsLib.ListBoundaries ; + + if ( this.StartBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' ) + this.SetStart( this.StartBlock, 1 ) ; + else + { + // Get the start node for the current range. + oNode = this._Range.startContainer ; + + // If it is an element, get the node right before of it (in source order). + if ( oNode.nodeType == 1 ) + { + var lastNode = oNode.childNodes[ this._Range.startOffset ] ; + if ( lastNode ) + oNode = FCKDomTools.GetPreviousSourceNode( lastNode, true ) ; + else + oNode = oNode.lastChild || oNode ; + } + + // We must look for the left boundary, relative to the range + // start, which is limited by a block element. + while ( oNode + && ( oNode.nodeType != 1 + || ( oNode != this.StartBlockLimit + && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) ) + { + this._Range.setStartBefore( oNode ) ; + oNode = oNode.previousSibling || oNode.parentNode ; + } + } + + if ( this.EndBlock && FCKConfig.EnterMode != 'br' && unit == 'block_contents' && this.EndBlock.nodeName.toLowerCase() != 'li' ) + this.SetEnd( this.EndBlock, 2 ) ; + else + { + oNode = this._Range.endContainer ; + if ( oNode.nodeType == 1 ) + oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ; + + // We must look for the right boundary, relative to the range + // end, which is limited by a block element. + while ( oNode + && ( oNode.nodeType != 1 + || ( oNode != this.StartBlockLimit + && !boundarySet[ oNode.nodeName.toLowerCase() ] ) ) ) + { + this._Range.setEndAfter( oNode ) ; + oNode = oNode.nextSibling || oNode.parentNode ; + } + + // In EnterMode='br', the end
boundary element must + // be included in the expanded range. + if ( oNode && oNode.nodeName.toLowerCase() == 'br' ) + this._Range.setEndAfter( oNode ) ; + } + + this._UpdateElementInfo() ; + } + }, + + /** + * Split the block element for the current range. It deletes the contents + * of the range and splits the block in the collapsed position, resulting + * in two sucessive blocks. The range is then positioned in the middle of + * them. + * + * It returns and object with the following properties: + * - PreviousBlock : a reference to the block element that preceeds + * the range after the split. + * - NextBlock : a reference to the block element that follows the + * range after the split. + * - WasStartOfBlock : a boolean indicating that the range was + * originaly at the start of the block. + * - WasEndOfBlock : a boolean indicating that the range was originaly + * at the end of the block. + * + * If the range was originaly at the start of the block, no split will happen + * and the PreviousBlock value will be null. The same is valid for the + * NextBlock value if the range was at the end of the block. + */ + SplitBlock : function( forceBlockTag ) + { + var blockTag = forceBlockTag || FCKConfig.EnterMode ; + + if ( !this._Range ) + this.MoveToSelection() ; + + // The range boundaries must be in the same "block limit" element. + if ( this.StartBlockLimit == this.EndBlockLimit ) + { + // Get the current blocks. + var eStartBlock = this.StartBlock ; + var eEndBlock = this.EndBlock ; + var oElementPath = null ; + + if ( blockTag != 'br' ) + { + if ( !eStartBlock ) + { + eStartBlock = this.FixBlock( true, blockTag ) ; + eEndBlock = this.EndBlock ; // FixBlock may have fixed the EndBlock too. + } + + if ( !eEndBlock ) + eEndBlock = this.FixBlock( false, blockTag ) ; + } + + // Get the range position. + var bIsStartOfBlock = ( eStartBlock != null && this.CheckStartOfBlock() ) ; + var bIsEndOfBlock = ( eEndBlock != null && this.CheckEndOfBlock() ) ; + + // Delete the current contents. + if ( !this.CheckIsEmpty() ) + this.DeleteContents() ; + + if ( eStartBlock && eEndBlock && eStartBlock == eEndBlock ) + { + if ( bIsEndOfBlock ) + { + oElementPath = new FCKElementPath( this.StartContainer ) ; + this.MoveToPosition( eEndBlock, 4 ) ; + eEndBlock = null ; + } + else if ( bIsStartOfBlock ) + { + oElementPath = new FCKElementPath( this.StartContainer ) ; + this.MoveToPosition( eStartBlock, 3 ) ; + eStartBlock = null ; + } + else + { + // Extract the contents of the block from the selection point to the end of its contents. + this.SetEnd( eStartBlock, 2 ) ; + var eDocFrag = this.ExtractContents() ; + + // Duplicate the block element after it. + eEndBlock = eStartBlock.cloneNode( false ) ; + eEndBlock.removeAttribute( 'id', false ) ; + + // Place the extracted contents in the duplicated block. + eDocFrag.AppendTo( eEndBlock ) ; + + FCKDomTools.InsertAfterNode( eStartBlock, eEndBlock ) ; + + this.MoveToPosition( eStartBlock, 4 ) ; + + // In Gecko, the last child node must be a bogus
. + // Note: bogus
added under
    or
      would cause lists to be incorrectly rendered. + if ( FCKBrowserInfo.IsGecko && + ! eStartBlock.nodeName.IEquals( ['ul', 'ol'] ) ) + FCKTools.AppendBogusBr( eStartBlock ) ; + } + } + + return { + PreviousBlock : eStartBlock, + NextBlock : eEndBlock, + WasStartOfBlock : bIsStartOfBlock, + WasEndOfBlock : bIsEndOfBlock, + ElementPath : oElementPath + } ; + } + + return null ; + }, + + // Transform a block without a block tag in a valid block (orphan text in the body or td, usually). + FixBlock : function( isStart, blockTag ) + { + // Bookmark the range so we can restore it later. + var oBookmark = this.CreateBookmark() ; + + // Collapse the range to the requested ending boundary. + this.Collapse( isStart ) ; + + // Expands it to the block contents. + this.Expand( 'block_contents' ) ; + + // Create the fixed block. + var oFixedBlock = this.Window.document.createElement( blockTag ) ; + + // Move the contents of the temporary range to the fixed block. + this.ExtractContents().AppendTo( oFixedBlock ) ; + FCKDomTools.TrimNode( oFixedBlock ) ; + + // If the fixed block is empty (not counting bookmark nodes) + // Add a
      inside to expand it. + if ( FCKDomTools.CheckIsEmptyElement(oFixedBlock, function( element ) { return element.getAttribute('_fck_bookmark') != 'true' ; } ) + && FCKBrowserInfo.IsGeckoLike ) + FCKTools.AppendBogusBr( oFixedBlock ) ; + + // Insert the fixed block into the DOM. + this.InsertNode( oFixedBlock ) ; + + // Move the range back to the bookmarked place. + this.MoveToBookmark( oBookmark ) ; + + return oFixedBlock ; + }, + + Release : function( preserveWindow ) + { + if ( !preserveWindow ) + this.Window = null ; + + this.StartNode = null ; + this.StartContainer = null ; + this.StartBlock = null ; + this.StartBlockLimit = null ; + this.EndNode = null ; + this.EndContainer = null ; + this.EndBlock = null ; + this.EndBlockLimit = null ; + this._Range = null ; + this._Cache = null ; + }, + + CheckHasRange : function() + { + return !!this._Range ; + }, + + GetTouchedStartNode : function() + { + var range = this._Range ; + var container = range.startContainer ; + + if ( range.collapsed || container.nodeType != 1 ) + return container ; + + return container.childNodes[ range.startOffset ] || container ; + }, + + GetTouchedEndNode : function() + { + var range = this._Range ; + var container = range.endContainer ; + + if ( range.collapsed || container.nodeType != 1 ) + return container ; + + return container.childNodes[ range.endOffset - 1 ] || container ; + } +} ; diff --git a/static/fckeditor/editor/_source/classes/fckdomrange_gecko.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_gecko.js old mode 100644 new mode 100755 similarity index 51% rename from static/fckeditor/editor/_source/classes/fckdomrange_gecko.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_gecko.js index d77520d..ddffb13 --- a/static/fckeditor/editor/_source/classes/fckdomrange_gecko.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_gecko.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -19,7 +19,7 @@ * == END LICENSE == * * Class for working with a selection range, much like the W3C DOM Range, but - * it is not intented to be an implementation of the W3C interface. + * it is not intended to be an implementation of the W3C interface. * (Gecko Implementation) */ @@ -29,11 +29,14 @@ FCKDomRange.prototype.MoveToSelection = function() var oSel = this.Window.getSelection() ; - if ( oSel.rangeCount == 1 ) + if ( oSel && oSel.rangeCount > 0 ) { this._Range = FCKW3CRange.CreateFromRange( this.Window.document, oSel.getRangeAt(0) ) ; this._UpdateElementInfo() ; } + else + if ( this.Window.document ) + this.MoveToElementStart( this.Window.document.body ) ; } FCKDomRange.prototype.Select = function() @@ -41,8 +44,15 @@ FCKDomRange.prototype.Select = function() var oRange = this._Range ; if ( oRange ) { + var startContainer = oRange.startContainer ; + + // If we have a collapsed range, inside an empty element, we must add + // something to it, otherwise the caret will not be visible. + if ( oRange.collapsed && startContainer.nodeType == 1 && startContainer.childNodes.length == 0 ) + startContainer.appendChild( oRange._Document.createTextNode('') ) ; + var oDocRange = this.Window.document.createRange() ; - oDocRange.setStart( oRange.startContainer, oRange.startOffset ) ; + oDocRange.setStart( startContainer, oRange.startOffset ) ; try { @@ -51,7 +61,7 @@ FCKDomRange.prototype.Select = function() catch ( e ) { // There is a bug in Firefox implementation (it would be too easy - // otherwhise). The new start can't be after the end (W3C says it can). + // otherwise). The new start can't be after the end (W3C says it can). // So, let's create a new range and collapse it to the desired point. if ( e.toString().Contains( 'NS_ERROR_ILLEGAL_VALUE' ) ) { @@ -69,3 +79,26 @@ FCKDomRange.prototype.Select = function() oSel.addRange( oDocRange ) ; } } + +// Not compatible with bookmark created with CreateBookmark2. +// The bookmark nodes will be deleted from the document. +FCKDomRange.prototype.SelectBookmark = function( bookmark ) +{ + var domRange = this.Window.document.createRange() ; + + var startNode = this.GetBookmarkNode( bookmark, true ) ; + var endNode = this.GetBookmarkNode( bookmark, false ) ; + + domRange.setStart( startNode.parentNode, FCKDomTools.GetIndexOf( startNode ) ) ; + FCKDomTools.RemoveNode( startNode ) ; + + if ( endNode ) + { + domRange.setEnd( endNode.parentNode, FCKDomTools.GetIndexOf( endNode ) ) ; + FCKDomTools.RemoveNode( endNode ) ; + } + + var selection = this.Window.getSelection() ; + selection.removeAllRanges() ; + selection.addRange( domRange ) ; +} diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_ie.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_ie.js new file mode 100755 index 0000000..3ebe2b9 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrange_ie.js @@ -0,0 +1,199 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Class for working with a selection range, much like the W3C DOM Range, but + * it is not intended to be an implementation of the W3C interface. + * (IE Implementation) + */ + +FCKDomRange.prototype.MoveToSelection = function() +{ + this.Release( true ) ; + + this._Range = new FCKW3CRange( this.Window.document ) ; + + var oSel = this.Window.document.selection ; + + if ( oSel.type != 'Control' ) + { + var eMarkerStart = this._GetSelectionMarkerTag( true ) ; + var eMarkerEnd = this._GetSelectionMarkerTag( false ) ; + + if ( !eMarkerStart && !eMarkerEnd ) + { + this._Range.setStart( this.Window.document.body, 0 ) ; + this._UpdateElementInfo() ; + return ; + } + + // Set the start boundary. + this._Range.setStart( eMarkerStart.parentNode, FCKDomTools.GetIndexOf( eMarkerStart ) ) ; + eMarkerStart.parentNode.removeChild( eMarkerStart ) ; + + // Set the end boundary. + this._Range.setEnd( eMarkerEnd.parentNode, FCKDomTools.GetIndexOf( eMarkerEnd ) ) ; + eMarkerEnd.parentNode.removeChild( eMarkerEnd ) ; + + this._UpdateElementInfo() ; + } + else + { + var oControl = oSel.createRange().item(0) ; + + if ( oControl ) + { + this._Range.setStartBefore( oControl ) ; + this._Range.setEndAfter( oControl ) ; + this._UpdateElementInfo() ; + } + } +} + +FCKDomRange.prototype.Select = function( forceExpand ) +{ + if ( this._Range ) + this.SelectBookmark( this.CreateBookmark( true ), forceExpand ) ; +} + +// Not compatible with bookmark created with CreateBookmark2. +// The bookmark nodes will be deleted from the document. +FCKDomRange.prototype.SelectBookmark = function( bookmark, forceExpand ) +{ + var bIsCollapsed = this.CheckIsCollapsed() ; + var bIsStartMakerAlone ; + var dummySpan ; + + // Create marker tags for the start and end boundaries. + var eStartMarker = this.GetBookmarkNode( bookmark, true ) ; + + if ( !eStartMarker ) + return ; + + var eEndMarker ; + if ( !bIsCollapsed ) + eEndMarker = this.GetBookmarkNode( bookmark, false ) ; + + // Create the main range which will be used for the selection. + var oIERange = this.Window.document.body.createTextRange() ; + + // Position the range at the start boundary. + oIERange.moveToElementText( eStartMarker ) ; + oIERange.moveStart( 'character', 1 ) ; + + if ( eEndMarker ) + { + // Create a tool range for the end. + var oIERangeEnd = this.Window.document.body.createTextRange() ; + + // Position the tool range at the end. + oIERangeEnd.moveToElementText( eEndMarker ) ; + + // Move the end boundary of the main range to match the tool range. + oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ; + oIERange.moveEnd( 'character', -1 ) ; + } + else + { + bIsStartMakerAlone = ( forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br' ) && !eStartMarker.nextSibing ; + + // Append a temporary  before the selection. + // This is needed to avoid IE destroying selections inside empty + // inline elements, like (#253). + // It is also needed when placing the selection right after an inline + // element to avoid the selection moving inside of it. + dummySpan = this.Window.document.createElement( 'span' ) ; + dummySpan.innerHTML = '' ; // Zero Width No-Break Space (U+FEFF). See #1359. + eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ; + + if ( bIsStartMakerAlone ) + { + // To expand empty blocks or line spaces after
      , we need + // instead to have any char, which will be later deleted using the + // selection. + // \ufeff = Zero Width No-Break Space (U+FEFF). See #1359. + eStartMarker.parentNode.insertBefore( this.Window.document.createTextNode( '\ufeff' ), eStartMarker ) ; + } + } + + if ( !this._Range ) + this._Range = this.CreateRange() ; + + // Remove the markers (reset the position, because of the changes in the DOM tree). + this._Range.setStartBefore( eStartMarker ) ; + eStartMarker.parentNode.removeChild( eStartMarker ) ; + + if ( bIsCollapsed ) + { + if ( bIsStartMakerAlone ) + { + // Move the selection start to include the temporary . + oIERange.moveStart( 'character', -1 ) ; + + oIERange.select() ; + + // Remove our temporary stuff. + this.Window.document.selection.clear() ; + } + else + oIERange.select() ; + + FCKDomTools.RemoveNode( dummySpan ) ; + } + else + { + this._Range.setEndBefore( eEndMarker ) ; + eEndMarker.parentNode.removeChild( eEndMarker ) ; + oIERange.select() ; + } +} + +FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart ) +{ + var doc = this.Window.document ; + var selection = doc.selection ; + + // Get a range for the start boundary. + var oRange ; + + // IE may throw an "unspecified error" on some cases (it happened when + // loading _samples/default.html), so try/catch. + try + { + oRange = selection.createRange() ; + } + catch (e) + { + return null ; + } + + // IE might take the range object to the main window instead of inside the editor iframe window. + // This is known to happen when the editor window has not been selected before (See #933). + // We need to avoid that. + if ( oRange.parentElement().document != doc ) + return null ; + + oRange.collapse( toStart === true ) ; + + // Paste a marker element at the collapsed range and get it from the DOM. + var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ; + oRange.pasteHTML( '' ) ; + + return doc.getElementById( sMarkerId ) ; +} diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrangeiterator.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrangeiterator.js new file mode 100755 index 0000000..8aa668b --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckdomrangeiterator.js @@ -0,0 +1,327 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This class can be used to interate through nodes inside a range. + * + * During interation, the provided range can become invalid, due to document + * mutations, so CreateBookmark() used to restore it after processing, if + * needed. + */ + +var FCKDomRangeIterator = function( range ) +{ + /** + * The FCKDomRange object that marks the interation boundaries. + */ + this.Range = range ; + + /** + * Indicates that
      elements must be used as paragraph boundaries. + */ + this.ForceBrBreak = false ; + + /** + * Guarantees that the iterator will always return "real" block elements. + * If "false", elements like
    1. ,
and are returned. If "true", a + * dedicated block element block element will be created inside those + * elements to hold the selected content. + */ + this.EnforceRealBlocks = false ; +} + +FCKDomRangeIterator.CreateFromSelection = function( targetWindow ) +{ + var range = new FCKDomRange( targetWindow ) ; + range.MoveToSelection() ; + return new FCKDomRangeIterator( range ) ; +} + +FCKDomRangeIterator.prototype = +{ + /** + * Get the next paragraph element. It automatically breaks the document + * when necessary to generate block elements for the paragraphs. + */ + GetNextParagraph : function() + { + // The block element to be returned. + var block ; + + // The range object used to identify the paragraph contents. + var range ; + + // Indicated that the current element in the loop is the last one. + var isLast ; + + // Instructs to cleanup remaining BRs. + var removePreviousBr ; + var removeLastBr ; + + var boundarySet = this.ForceBrBreak ? FCKListsLib.ListBoundaries : FCKListsLib.BlockBoundaries ; + + // This is the first iteration. Let's initialize it. + if ( !this._LastNode ) + { + var range = this.Range.Clone() ; + range.Expand( this.ForceBrBreak ? 'list_contents' : 'block_contents' ) ; + + this._NextNode = range.GetTouchedStartNode() ; + this._LastNode = range.GetTouchedEndNode() ; + + // Let's reuse this variable. + range = null ; + } + + var currentNode = this._NextNode ; + var lastNode = this._LastNode ; + + this._NextNode = null ; + + while ( currentNode ) + { + // closeRange indicates that a paragraph boundary has been found, + // so the range can be closed. + var closeRange = false ; + + // includeNode indicates that the current node is good to be part + // of the range. By default, any non-element node is ok for it. + var includeNode = ( currentNode.nodeType != 1 ) ; + + var continueFromSibling = false ; + + // If it is an element node, let's check if it can be part of the + // range. + if ( !includeNode ) + { + var nodeName = currentNode.nodeName.toLowerCase() ; + + if ( boundarySet[ nodeName ] && ( !FCKBrowserInfo.IsIE || currentNode.scopeName == 'HTML' ) ) + { + //
boundaries must be part of the range. It will + // happen only if ForceBrBreak. + if ( nodeName == 'br' ) + includeNode = true ; + else if ( !range && currentNode.childNodes.length == 0 && nodeName != 'hr' ) + { + // If we have found an empty block, and haven't started + // the range yet, it means we must return this block. + block = currentNode ; + isLast = currentNode == lastNode ; + break ; + } + + // The range must finish right before the boundary, + // including possibly skipped empty spaces. (#1603) + if ( range ) + { + range.SetEnd( currentNode, 3, true ) ; + + // The found boundary must be set as the next one at this + // point. (#1717) + if ( nodeName != 'br' ) + this._NextNode = FCKDomTools.GetNextSourceNode( currentNode, true, null, lastNode ) ; + } + + closeRange = true ; + } + else + { + // If we have child nodes, let's check them. + if ( currentNode.firstChild ) + { + // If we don't have a range yet, let's start it. + if ( !range ) + { + range = new FCKDomRange( this.Range.Window ) ; + range.SetStart( currentNode, 3, true ) ; + } + + currentNode = currentNode.firstChild ; + continue ; + } + includeNode = true ; + } + } + else if ( currentNode.nodeType == 3 ) + { + // Ignore normal whitespaces (i.e. not including   or + // other unicode whitespaces) before/after a block node. + if ( /^[\r\n\t ]+$/.test( currentNode.nodeValue ) ) + includeNode = false ; + } + + // The current node is good to be part of the range and we are + // starting a new range, initialize it first. + if ( includeNode && !range ) + { + range = new FCKDomRange( this.Range.Window ) ; + range.SetStart( currentNode, 3, true ) ; + } + + // The last node has been found. + isLast = ( ( !closeRange || includeNode ) && currentNode == lastNode ) ; +// isLast = ( currentNode == lastNode && ( currentNode.nodeType != 1 || currentNode.childNodes.length == 0 ) ) ; + + // If we are in an element boundary, let's check if it is time + // to close the range, otherwise we include the parent within it. + if ( range && !closeRange ) + { + while ( !currentNode.nextSibling && !isLast ) + { + var parentNode = currentNode.parentNode ; + + if ( boundarySet[ parentNode.nodeName.toLowerCase() ] ) + { + closeRange = true ; + isLast = isLast || ( parentNode == lastNode ) ; + break ; + } + + currentNode = parentNode ; + includeNode = true ; + isLast = ( currentNode == lastNode ) ; + continueFromSibling = true ; + } + } + + // Now finally include the node. + if ( includeNode ) + range.SetEnd( currentNode, 4, true ) ; + + // We have found a block boundary. Let's close the range and move out of the + // loop. + if ( ( closeRange || isLast ) && range ) + { + range._UpdateElementInfo() ; + + if ( range.StartNode == range.EndNode + && range.StartNode.parentNode == range.StartBlockLimit + && range.StartNode.getAttribute && range.StartNode.getAttribute( '_fck_bookmark' ) ) + range = null ; + else + break ; + } + + if ( isLast ) + break ; + + currentNode = FCKDomTools.GetNextSourceNode( currentNode, continueFromSibling, null, lastNode ) ; + } + + // Now, based on the processed range, look for (or create) the block to be returned. + if ( !block ) + { + // If no range has been found, this is the end. + if ( !range ) + { + this._NextNode = null ; + return null ; + } + + block = range.StartBlock ; + + if ( !block + && !this.EnforceRealBlocks + && range.StartBlockLimit.nodeName.IEquals( 'DIV', 'TH', 'TD' ) + && range.CheckStartOfBlock() + && range.CheckEndOfBlock() ) + { + block = range.StartBlockLimit ; + } + else if ( !block || ( this.EnforceRealBlocks && block.nodeName.toLowerCase() == 'li' ) ) + { + // Create the fixed block. + block = this.Range.Window.document.createElement( FCKConfig.EnterMode == 'p' ? 'p' : 'div' ) ; + + // Move the contents of the temporary range to the fixed block. + range.ExtractContents().AppendTo( block ) ; + FCKDomTools.TrimNode( block ) ; + + // Insert the fixed block into the DOM. + range.InsertNode( block ) ; + + removePreviousBr = true ; + removeLastBr = true ; + } + else if ( block.nodeName.toLowerCase() != 'li' ) + { + // If the range doesn't includes the entire contents of the + // block, we must split it, isolating the range in a dedicated + // block. + if ( !range.CheckStartOfBlock() || !range.CheckEndOfBlock() ) + { + // The resulting block will be a clone of the current one. + block = block.cloneNode( false ) ; + + // Extract the range contents, moving it to the new block. + range.ExtractContents().AppendTo( block ) ; + FCKDomTools.TrimNode( block ) ; + + // Split the block. At this point, the range will be in the + // right position for our intents. + var splitInfo = range.SplitBlock() ; + + removePreviousBr = !splitInfo.WasStartOfBlock ; + removeLastBr = !splitInfo.WasEndOfBlock ; + + // Insert the new block into the DOM. + range.InsertNode( block ) ; + } + } + else if ( !isLast ) + { + // LIs are returned as is, with all their children (due to the + // nested lists). But, the next node is the node right after + // the current range, which could be an
  • child (nested + // lists) or the next sibling
  • . + + this._NextNode = block == lastNode ? null : FCKDomTools.GetNextSourceNode( range.EndNode, true, null, lastNode ) ; + return block ; + } + } + + if ( removePreviousBr ) + { + var previousSibling = block.previousSibling ; + if ( previousSibling && previousSibling.nodeType == 1 ) + { + if ( previousSibling.nodeName.toLowerCase() == 'br' ) + previousSibling.parentNode.removeChild( previousSibling ) ; + else if ( previousSibling.lastChild && previousSibling.lastChild.nodeName.IEquals( 'br' ) ) + previousSibling.removeChild( previousSibling.lastChild ) ; + } + } + + if ( removeLastBr ) + { + var lastChild = block.lastChild ; + if ( lastChild && lastChild.nodeType == 1 && lastChild.nodeName.toLowerCase() == 'br' ) + block.removeChild( lastChild ) ; + } + + // Get a reference for the next element. This is important because the + // above block can be removed or changed, so we can rely on it for the + // next interation. + if ( !this._NextNode ) + this._NextNode = ( isLast || block == lastNode ) ? null : FCKDomTools.GetNextSourceNode( block, true, null, lastNode ) ; + + return block ; + } +} ; diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckeditingarea.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckeditingarea.js new file mode 100755 index 0000000..66d93e1 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckeditingarea.js @@ -0,0 +1,368 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKEditingArea Class: renders an editable area. + */ + +/** + * @constructor + * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted. + */ +var FCKEditingArea = function( targetElement ) +{ + this.TargetElement = targetElement ; + this.Mode = FCK_EDITMODE_WYSIWYG ; + + if ( FCK.IECleanup ) + FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ; +} + + +/** + * @param {String} html The complete HTML for the page, including DOCTYPE and the tag. + */ +FCKEditingArea.prototype.Start = function( html, secondCall ) +{ + var eTargetElement = this.TargetElement ; + var oTargetDocument = FCKTools.GetElementDocument( eTargetElement ) ; + + // Remove all child nodes from the target. + while( eTargetElement.firstChild ) + eTargetElement.removeChild( eTargetElement.firstChild ) ; + + if ( this.Mode == FCK_EDITMODE_WYSIWYG ) + { + // For FF, document.domain must be set only when different, otherwhise + // we'll strangely have "Permission denied" issues. + if ( FCK_IS_CUSTOM_DOMAIN ) + html = '' + html ; + + // IE has a bug with the tag... it must have a closer, + // otherwise the all successive tags will be set as children nodes of the . + if ( FCKBrowserInfo.IsIE ) + html = html.replace( /(]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1>' ) ; + else if ( !secondCall ) + { + // Gecko moves some tags out of the body to the head, so we must use + // innerHTML to set the body contents (SF BUG 1526154). + + // Extract the BODY contents from the html. + var oMatchBefore = html.match( FCKRegexLib.BeforeBody ) ; + var oMatchAfter = html.match( FCKRegexLib.AfterBody ) ; + + if ( oMatchBefore && oMatchAfter ) + { + var sBody = html.substr( oMatchBefore[1].length, + html.length - oMatchBefore[1].length - oMatchAfter[1].length ) ; // This is the BODY tag contents. + + html = + oMatchBefore[1] + // This is the HTML until the tag, inclusive. + ' ' + + oMatchAfter[1] ; // This is the HTML from the tag, inclusive. + + // If nothing in the body, place a BOGUS tag so the cursor will appear. + if ( FCKBrowserInfo.IsGecko && ( sBody.length == 0 || FCKRegexLib.EmptyParagraph.test( sBody ) ) ) + sBody = '
    ' ; + + this._BodyHTML = sBody ; + + } + else + this._BodyHTML = html ; // Invalid HTML input. + } + + // Create the editing area IFRAME. + var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ; + + // IE: Avoid JavaScript errors thrown by the editing are source (like tags events). + // See #1055. + var sOverrideError = '' ; + + oIFrame.frameBorder = 0 ; + oIFrame.style.width = oIFrame.style.height = '100%' ; + + if ( FCK_IS_CUSTOM_DOMAIN && FCKBrowserInfo.IsIE ) + { + window._FCKHtmlToLoad = html.replace( //i, '' + sOverrideError ) ; + oIFrame.src = 'javascript:void( (function(){' + + 'document.open() ;' + + 'document.domain="' + document.domain + '" ;' + + 'document.write( window.parent._FCKHtmlToLoad );' + + 'document.close() ;' + + 'window.parent._FCKHtmlToLoad = null ;' + + '})() )' ; + } + else if ( !FCKBrowserInfo.IsGecko ) + { + // Firefox will render the tables inside the body in Quirks mode if the + // source of the iframe is set to javascript. see #515 + oIFrame.src = 'javascript:void(0)' ; + } + + // Append the new IFRAME to the target. For IE, it must be done after + // setting the "src", to avoid the "secure/unsecure" message under HTTPS. + eTargetElement.appendChild( oIFrame ) ; + + // Get the window and document objects used to interact with the newly created IFRAME. + this.Window = oIFrame.contentWindow ; + + // IE: Avoid JavaScript errors thrown by the editing are source (like tags events). + // TODO: This error handler is not being fired. + // this.Window.onerror = function() { alert( 'Error!' ) ; return true ; } + + if ( !FCK_IS_CUSTOM_DOMAIN || !FCKBrowserInfo.IsIE ) + { + var oDoc = this.Window.document ; + + oDoc.open() ; + oDoc.write( html.replace( //i, '' + sOverrideError ) ) ; + oDoc.close() ; + } + + if ( FCKBrowserInfo.IsAIR ) + FCKAdobeAIR.EditingArea_Start( oDoc, html ) ; + + // Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it + // will magically work. + if ( FCKBrowserInfo.IsGecko10 && !secondCall ) + { + this.Start( html, true ) ; + return ; + } + + if ( oIFrame.readyState && oIFrame.readyState != 'completed' ) + { + var editArea = this ; + + // Using a IE alternative for DOMContentLoaded, similar to the + // solution proposed at http://javascript.nwbox.com/IEContentLoaded/ + setTimeout( function() + { + try + { + editArea.Window.document.documentElement.doScroll("left") ; + } + catch(e) + { + setTimeout( arguments.callee, 0 ) ; + return ; + } + editArea.Window._FCKEditingArea = editArea ; + FCKEditingArea_CompleteStart.call( editArea.Window ) ; + }, 0 ) ; + } + else + { + this.Window._FCKEditingArea = this ; + + // FF 1.0.x is buggy... we must wait a lot to enable editing because + // sometimes the content simply disappears, for example when pasting + // "bla1!!bla2" in the source and then switching + // back to design. + if ( FCKBrowserInfo.IsGecko10 ) + this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ; + else + FCKEditingArea_CompleteStart.call( this.Window ) ; + } + } + else + { + var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ; + eTextarea.className = 'SourceField' ; + eTextarea.dir = 'ltr' ; + FCKDomTools.SetElementStyles( eTextarea, + { + width : '100%', + height : '100%', + border : 'none', + resize : 'none', + outline : 'none' + } ) ; + eTargetElement.appendChild( eTextarea ) ; + + eTextarea.value = html ; + + // Fire the "OnLoad" event. + FCKTools.RunFunction( this.OnLoad ) ; + } +} + +// "this" here is FCKEditingArea.Window +function FCKEditingArea_CompleteStart() +{ + // On Firefox, the DOM takes a little to become available. So we must wait for it in a loop. + if ( !this.document.body ) + { + this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ; + return ; + } + + var oEditorArea = this._FCKEditingArea ; + + // Save this reference to be re-used later. + oEditorArea.Document = oEditorArea.Window.document ; + + oEditorArea.MakeEditable() ; + + // Fire the "OnLoad" event. + FCKTools.RunFunction( oEditorArea.OnLoad ) ; +} + +FCKEditingArea.prototype.MakeEditable = function() +{ + var oDoc = this.Document ; + + if ( FCKBrowserInfo.IsIE ) + { + // Kludge for #141 and #523 + oDoc.body.disabled = true ; + oDoc.body.contentEditable = true ; + oDoc.body.removeAttribute( "disabled" ) ; + + /* The following commands don't throw errors, but have no effect. + oDoc.execCommand( 'AutoDetect', false, false ) ; + oDoc.execCommand( 'KeepSelection', false, true ) ; + */ + } + else + { + try + { + // Disable Firefox 2 Spell Checker. + oDoc.body.spellcheck = ( this.FFSpellChecker !== false ) ; + + if ( this._BodyHTML ) + { + oDoc.body.innerHTML = this._BodyHTML ; + oDoc.body.offsetLeft ; // Don't remove, this is a hack to fix Opera 9.50, see #2264. + this._BodyHTML = null ; + } + + oDoc.designMode = 'on' ; + + // Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez) + oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ; + + // Disable the standard table editing features of Firefox. + oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ; + } + catch (e) + { + // In Firefox if the iframe is initially hidden it can't be set to designMode and it raises an exception + // So we set up a DOM Mutation event Listener on the HTML, as it will raise several events when the document is visible again + FCKTools.AddEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ; + } + + } +} + +// This function processes the notifications of the DOM Mutation event on the document +// We use it to know that the document will be ready to be editable again (or we hope so) +function FCKEditingArea_Document_AttributeNodeModified( evt ) +{ + var editingArea = evt.currentTarget.contentWindow._FCKEditingArea ; + + // We want to run our function after the events no longer fire, so we can know that it's a stable situation + if ( editingArea._timer ) + window.clearTimeout( editingArea._timer ) ; + + editingArea._timer = FCKTools.SetTimeout( FCKEditingArea_MakeEditableByMutation, 1000, editingArea ) ; +} + +// This function ideally should be called after the document is visible, it does clean up of the +// mutation tracking and tries again to make the area editable. +function FCKEditingArea_MakeEditableByMutation() +{ + // Clean up + delete this._timer ; + // Now we don't want to keep on getting this event + FCKTools.RemoveEventListener( this.Window.frameElement, 'DOMAttrModified', FCKEditingArea_Document_AttributeNodeModified ) ; + // Let's try now to set the editing area editable + // If it fails it will set up the Mutation Listener again automatically + this.MakeEditable() ; +} + +FCKEditingArea.prototype.Focus = function() +{ + try + { + if ( this.Mode == FCK_EDITMODE_WYSIWYG ) + { + if ( FCKBrowserInfo.IsIE ) + this._FocusIE() ; + else + this.Window.focus() ; + } + else + { + var oDoc = FCKTools.GetElementDocument( this.Textarea ) ; + if ( (!oDoc.hasFocus || oDoc.hasFocus() ) && oDoc.activeElement == this.Textarea ) + return ; + + this.Textarea.focus() ; + } + } + catch(e) {} +} + +FCKEditingArea.prototype._FocusIE = function() +{ + // In IE it can happen that the document is in theory focused but the + // active element is outside of it. + this.Document.body.setActive() ; + + this.Window.focus() ; + + // Kludge for #141... yet more code to workaround IE bugs + var range = this.Document.selection.createRange() ; + + var parentNode = range.parentElement() ; + var parentTag = parentNode.nodeName.toLowerCase() ; + + // Only apply the fix when in a block, and the block is empty. + if ( parentNode.childNodes.length > 0 || + !( FCKListsLib.BlockElements[parentTag] || + FCKListsLib.NonEmptyBlockElements[parentTag] ) ) + { + return ; + } + + // Force the selection to happen, in this way we guarantee the focus will + // be there. + range = new FCKDomRange( this.Window ) ; + range.MoveToElementEditStart( parentNode ) ; + range.Select() ; +} + +function FCKEditingArea_Cleanup() +{ + if ( this.Document ) + this.Document.body.innerHTML = "" ; + this.TargetElement = null ; + this.IFrame = null ; + this.Document = null ; + this.Textarea = null ; + + if ( this.Window ) + { + this.Window._FCKEditingArea = null ; + this.Window = null ; + } +} diff --git a/static/fckeditor/editor/_source/classes/fckelementpath.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckelementpath.js old mode 100644 new mode 100755 similarity index 56% rename from static/fckeditor/editor/_source/classes/fckelementpath.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckelementpath.js index d5ff651..2bf4eb3 --- a/static/fckeditor/editor/_source/classes/fckelementpath.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckelementpath.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -18,12 +18,10 @@ * * == END LICENSE == * - * Manages the DOM anscensors element list of a specific DOM node + * Manages the DOM ascensors element list of a specific DOM node * (limited to body, inclusive). */ -// TODO: Implement IE cleanup. - var FCKElementPath = function( lastNode ) { var eBlock = null ; @@ -40,6 +38,8 @@ var FCKElementPath = function( lastNode ) this.LastElement = e ; var sElementName = e.nodeName.toLowerCase() ; + if ( FCKBrowserInfo.IsIE && e.scopeName != 'HTML' ) + sElementName = e.scopeName.toLowerCase() + ':' + sElementName ; if ( !eBlockLimit ) { @@ -47,7 +47,14 @@ var FCKElementPath = function( lastNode ) eBlock = e ; if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null ) - eBlockLimit = e ; + { + // DIV is considered the Block, if no block is available (#525) + // and if it doesn't contain other blocks. + if ( !eBlock && sElementName == 'div' && !FCKElementPath._CheckHasBlock( e ) ) + eBlock = e ; + else + eBlockLimit = e ; + } } aElements.push( e ) ; @@ -63,4 +70,20 @@ var FCKElementPath = function( lastNode ) this.Elements = aElements ; } +/** + * Check if an element contains any block element. + */ +FCKElementPath._CheckHasBlock = function( element ) +{ + var childNodes = element.childNodes ; + for ( var i = 0, count = childNodes.length ; i < count ; i++ ) + { + var child = childNodes[i] ; + + if ( child.nodeType == 1 && FCKListsLib.BlockElements[ child.nodeName.toLowerCase() ] ) + return true ; + } + + return false ; +} diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckenterkey.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckenterkey.js new file mode 100755 index 0000000..49f64be --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckenterkey.js @@ -0,0 +1,688 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Controls the [Enter] keystroke behavior in a document. + */ + +/* + * Constructor. + * @targetDocument : the target document. + * @enterMode : the behavior for the keystroke. + * May be "p", "div", "br". Default is "p". + * @shiftEnterMode : the behavior for the + keystroke. + * May be "p", "div", "br". Defaults to "br". + */ +var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode, tabSpaces ) +{ + this.Window = targetWindow ; + this.EnterMode = enterMode || 'p' ; + this.ShiftEnterMode = shiftEnterMode || 'br' ; + + // Setup the Keystroke Handler. + var oKeystrokeHandler = new FCKKeystrokeHandler( false ) ; + oKeystrokeHandler._EnterKey = this ; + oKeystrokeHandler.OnKeystroke = FCKEnterKey_OnKeystroke ; + + oKeystrokeHandler.SetKeystrokes( [ + [ 13 , 'Enter' ], + [ SHIFT + 13, 'ShiftEnter' ], + [ 8 , 'Backspace' ], + [ CTRL + 8 , 'CtrlBackspace' ], + [ 46 , 'Delete' ] + ] ) ; + + this.TabText = '' ; + + // Safari by default inserts 4 spaces on TAB, while others make the editor + // loose focus. So, we need to handle it here to not include those spaces. + if ( tabSpaces > 0 || FCKBrowserInfo.IsSafari ) + { + while ( tabSpaces-- ) + this.TabText += '\xa0' ; + + oKeystrokeHandler.SetKeystrokes( [ 9, 'Tab' ] ); + } + + oKeystrokeHandler.AttachToElement( targetWindow.document ) ; +} + + +function FCKEnterKey_OnKeystroke( keyCombination, keystrokeValue ) +{ + var oEnterKey = this._EnterKey ; + + try + { + switch ( keystrokeValue ) + { + case 'Enter' : + return oEnterKey.DoEnter() ; + break ; + case 'ShiftEnter' : + return oEnterKey.DoShiftEnter() ; + break ; + case 'Backspace' : + return oEnterKey.DoBackspace() ; + break ; + case 'Delete' : + return oEnterKey.DoDelete() ; + break ; + case 'Tab' : + return oEnterKey.DoTab() ; + break ; + case 'CtrlBackspace' : + return oEnterKey.DoCtrlBackspace() ; + break ; + } + } + catch (e) + { + // If for any reason we are not able to handle it, go + // ahead with the browser default behavior. + } + + return false ; +} + +/* + * Executes the key behavior. + */ +FCKEnterKey.prototype.DoEnter = function( mode, hasShift ) +{ + // Save an undo snapshot before doing anything + FCKUndo.SaveUndoStep() ; + + this._HasShift = ( hasShift === true ) ; + + var parentElement = FCKSelection.GetParentElement() ; + var parentPath = new FCKElementPath( parentElement ) ; + var sMode = mode || this.EnterMode ; + + if ( sMode == 'br' || parentPath.Block && parentPath.Block.tagName.toLowerCase() == 'pre' ) + return this._ExecuteEnterBr() ; + else + return this._ExecuteEnterBlock( sMode ) ; +} + +/* + * Executes the + key behavior. + */ +FCKEnterKey.prototype.DoShiftEnter = function() +{ + return this.DoEnter( this.ShiftEnterMode, true ) ; +} + +/* + * Executes the key behavior. + */ +FCKEnterKey.prototype.DoBackspace = function() +{ + var bCustom = false ; + + // Get the current selection. + var oRange = new FCKDomRange( this.Window ) ; + oRange.MoveToSelection() ; + + // Kludge for #247 + if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) ) + { + this._FixIESelectAllBug( oRange ) ; + return true ; + } + + var isCollapsed = oRange.CheckIsCollapsed() ; + + if ( !isCollapsed ) + { + // Bug #327, Backspace with an img selection would activate the default action in IE. + // Let's override that with our logic here. + if ( FCKBrowserInfo.IsIE && this.Window.document.selection.type.toLowerCase() == "control" ) + { + var controls = this.Window.document.selection.createRange() ; + for ( var i = controls.length - 1 ; i >= 0 ; i-- ) + { + var el = controls.item( i ) ; + el.parentNode.removeChild( el ) ; + } + return true ; + } + + return false ; + } + + // On IE, it is better for us handle the deletion if the caret is preceeded + // by a
    (#1383). + if ( FCKBrowserInfo.IsIE ) + { + var previousElement = FCKDomTools.GetPreviousSourceElement( oRange.StartNode, true ) ; + + if ( previousElement && previousElement.nodeName.toLowerCase() == 'br' ) + { + // Create a range that starts after the
    and ends at the + // current range position. + var testRange = oRange.Clone() ; + testRange.SetStart( previousElement, 4 ) ; + + // If that range is empty, we can proceed cleaning that
    manually. + if ( testRange.CheckIsEmpty() ) + { + previousElement.parentNode.removeChild( previousElement ) ; + return true ; + } + } + } + + var oStartBlock = oRange.StartBlock ; + var oEndBlock = oRange.EndBlock ; + + // The selection boundaries must be in the same "block limit" element + if ( oRange.StartBlockLimit == oRange.EndBlockLimit && oStartBlock && oEndBlock ) + { + if ( !isCollapsed ) + { + var bEndOfBlock = oRange.CheckEndOfBlock() ; + + oRange.DeleteContents() ; + + if ( oStartBlock != oEndBlock ) + { + oRange.SetStart(oEndBlock,1) ; + oRange.SetEnd(oEndBlock,1) ; + +// if ( bEndOfBlock ) +// oEndBlock.parentNode.removeChild( oEndBlock ) ; + } + + oRange.Select() ; + + bCustom = ( oStartBlock == oEndBlock ) ; + } + + if ( oRange.CheckStartOfBlock() ) + { + var oCurrentBlock = oRange.StartBlock ; + + var ePrevious = FCKDomTools.GetPreviousSourceElement( oCurrentBlock, true, [ 'BODY', oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ; + + bCustom = this._ExecuteBackspace( oRange, ePrevious, oCurrentBlock ) ; + } + else if ( FCKBrowserInfo.IsGeckoLike ) + { + // Firefox and Opera (#1095) loose the selection when executing + // CheckStartOfBlock, so we must reselect. + oRange.Select() ; + } + } + + oRange.Release() ; + return bCustom ; +} + +FCKEnterKey.prototype.DoCtrlBackspace = function() +{ + FCKUndo.SaveUndoStep() ; + var oRange = new FCKDomRange( this.Window ) ; + oRange.MoveToSelection() ; + if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) ) + { + this._FixIESelectAllBug( oRange ) ; + return true ; + } + return false ; +} + +FCKEnterKey.prototype._ExecuteBackspace = function( range, previous, currentBlock ) +{ + var bCustom = false ; + + // We could be in a nested LI. + if ( !previous && currentBlock && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) ) + { + this._OutdentWithSelection( currentBlock, range ) ; + return true ; + } + + if ( previous && previous.nodeName.IEquals( 'LI' ) ) + { + var oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ; + + while ( oNestedList ) + { + previous = FCKDomTools.GetLastChild( oNestedList, 'LI' ) ; + oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ; + } + } + + if ( previous && currentBlock ) + { + // If we are in a LI, and the previous block is not an LI, we must outdent it. + if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) ) + { + this._OutdentWithSelection( currentBlock, range ) ; + return true ; + } + + // Take a reference to the parent for post processing cleanup. + var oCurrentParent = currentBlock.parentNode ; + + var sPreviousName = previous.nodeName.toLowerCase() ; + if ( FCKListsLib.EmptyElements[ sPreviousName ] != null || sPreviousName == 'table' ) + { + FCKDomTools.RemoveNode( previous ) ; + bCustom = true ; + } + else + { + // Remove the current block. + FCKDomTools.RemoveNode( currentBlock ) ; + + // Remove any empty tag left by the block removal. + while ( oCurrentParent.innerHTML.Trim().length == 0 ) + { + var oParent = oCurrentParent.parentNode ; + oParent.removeChild( oCurrentParent ) ; + oCurrentParent = oParent ; + } + + // Cleanup the previous and the current elements. + FCKDomTools.LTrimNode( currentBlock ) ; + FCKDomTools.RTrimNode( previous ) ; + + // Append a space to the previous. + // Maybe it is not always desirable... + // previous.appendChild( this.Window.document.createTextNode( ' ' ) ) ; + + // Set the range to the end of the previous element and bookmark it. + range.SetStart( previous, 2, true ) ; + range.Collapse( true ) ; + var oBookmark = range.CreateBookmark( true ) ; + + // Move the contents of the block to the previous element and delete it. + // But for some block types (e.g. table), moving the children to the previous block makes no sense. + // So a check is needed. (See #1081) + if ( ! currentBlock.tagName.IEquals( [ 'TABLE' ] ) ) + FCKDomTools.MoveChildren( currentBlock, previous ) ; + + // Place the selection at the bookmark. + range.SelectBookmark( oBookmark ) ; + + bCustom = true ; + } + } + + return bCustom ; +} + +/* + * Executes the key behavior. + */ +FCKEnterKey.prototype.DoDelete = function() +{ + // Save an undo snapshot before doing anything + // This is to conform with the behavior seen in MS Word + FCKUndo.SaveUndoStep() ; + + // The has the same effect as the , so we have the same + // results if we just move to the next block and apply the same logic. + + var bCustom = false ; + + // Get the current selection. + var oRange = new FCKDomRange( this.Window ) ; + oRange.MoveToSelection() ; + + // Kludge for #247 + if ( FCKBrowserInfo.IsIE && this._CheckIsAllContentsIncluded( oRange, this.Window.document.body ) ) + { + this._FixIESelectAllBug( oRange ) ; + return true ; + } + + // There is just one special case for collapsed selections at the end of a block. + if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) ) + { + var oCurrentBlock = oRange.StartBlock ; + var eCurrentCell = FCKTools.GetElementAscensor( oCurrentBlock, 'td' ); + + var eNext = FCKDomTools.GetNextSourceElement( oCurrentBlock, true, [ oRange.StartBlockLimit.nodeName ], + ['UL','OL','TR'], true ) ; + + // Bug #1323 : if we're in a table cell, and the next node belongs to a different cell, then don't + // delete anything. + if ( eCurrentCell ) + { + var eNextCell = FCKTools.GetElementAscensor( eNext, 'td' ); + if ( eNextCell != eCurrentCell ) + return true ; + } + + bCustom = this._ExecuteBackspace( oRange, oCurrentBlock, eNext ) ; + } + + oRange.Release() ; + return bCustom ; +} + +/* + * Executes the key behavior. + */ +FCKEnterKey.prototype.DoTab = function() +{ + var oRange = new FCKDomRange( this.Window ); + oRange.MoveToSelection() ; + + // If the user pressed inside a table, we should give him the default behavior ( moving between cells ) + // instead of giving him more non-breaking spaces. (Bug #973) + var node = oRange._Range.startContainer ; + while ( node ) + { + if ( node.nodeType == 1 ) + { + var tagName = node.tagName.toLowerCase() ; + if ( tagName == "tr" || tagName == "td" || tagName == "th" || tagName == "tbody" || tagName == "table" ) + return false ; + else + break ; + } + node = node.parentNode ; + } + + if ( this.TabText ) + { + oRange.DeleteContents() ; + oRange.InsertNode( this.Window.document.createTextNode( this.TabText ) ) ; + oRange.Collapse( false ) ; + oRange.Select() ; + } + return true ; +} + +FCKEnterKey.prototype._ExecuteEnterBlock = function( blockTag, range ) +{ + // Get the current selection. + var oRange = range || new FCKDomRange( this.Window ) ; + + var oSplitInfo = oRange.SplitBlock( blockTag ) ; + + if ( oSplitInfo ) + { + // Get the current blocks. + var ePreviousBlock = oSplitInfo.PreviousBlock ; + var eNextBlock = oSplitInfo.NextBlock ; + + var bIsStartOfBlock = oSplitInfo.WasStartOfBlock ; + var bIsEndOfBlock = oSplitInfo.WasEndOfBlock ; + + // If there is one block under a list item, modify the split so that the list item gets split as well. (Bug #1647) + if ( eNextBlock ) + { + if ( eNextBlock.parentNode.nodeName.IEquals( 'li' ) ) + { + FCKDomTools.BreakParent( eNextBlock, eNextBlock.parentNode ) ; + FCKDomTools.MoveNode( eNextBlock, eNextBlock.nextSibling, true ) ; + } + } + else if ( ePreviousBlock && ePreviousBlock.parentNode.nodeName.IEquals( 'li' ) ) + { + FCKDomTools.BreakParent( ePreviousBlock, ePreviousBlock.parentNode ) ; + oRange.MoveToElementEditStart( ePreviousBlock.nextSibling ); + FCKDomTools.MoveNode( ePreviousBlock, ePreviousBlock.previousSibling ) ; + } + + // If we have both the previous and next blocks, it means that the + // boundaries were on separated blocks, or none of them where on the + // block limits (start/end). + if ( !bIsStartOfBlock && !bIsEndOfBlock ) + { + // If the next block is an
  • with another list tree as the first child + // We'll need to append a placeholder or the list item wouldn't be editable. (Bug #1420) + if ( eNextBlock.nodeName.IEquals( 'li' ) && eNextBlock.firstChild + && eNextBlock.firstChild.nodeName.IEquals( ['ul', 'ol'] ) ) + eNextBlock.insertBefore( FCKTools.GetElementDocument( eNextBlock ).createTextNode( '\xa0' ), eNextBlock.firstChild ) ; + // Move the selection to the end block. + if ( eNextBlock ) + oRange.MoveToElementEditStart( eNextBlock ) ; + } + else + { + if ( bIsStartOfBlock && bIsEndOfBlock && ePreviousBlock.tagName.toUpperCase() == 'LI' ) + { + oRange.MoveToElementStart( ePreviousBlock ) ; + this._OutdentWithSelection( ePreviousBlock, oRange ) ; + oRange.Release() ; + return true ; + } + + var eNewBlock ; + + if ( ePreviousBlock ) + { + var sPreviousBlockTag = ePreviousBlock.tagName.toUpperCase() ; + + // If is a header tag, or we are in a Shift+Enter (#77), + // create a new block element (later in the code). + if ( !this._HasShift && !(/^H[1-6]$/).test( sPreviousBlockTag ) ) + { + // Otherwise, duplicate the previous block. + eNewBlock = FCKDomTools.CloneElement( ePreviousBlock ) ; + } + } + else if ( eNextBlock ) + eNewBlock = FCKDomTools.CloneElement( eNextBlock ) ; + + if ( !eNewBlock ) + eNewBlock = this.Window.document.createElement( blockTag ) ; + + // Recreate the inline elements tree, which was available + // before the hitting enter, so the same styles will be + // available in the new block. + var elementPath = oSplitInfo.ElementPath ; + if ( elementPath ) + { + for ( var i = 0, len = elementPath.Elements.length ; i < len ; i++ ) + { + var element = elementPath.Elements[i] ; + + if ( element == elementPath.Block || element == elementPath.BlockLimit ) + break ; + + if ( FCKListsLib.InlineChildReqElements[ element.nodeName.toLowerCase() ] ) + { + element = FCKDomTools.CloneElement( element ) ; + FCKDomTools.MoveChildren( eNewBlock, element ) ; + eNewBlock.appendChild( element ) ; + } + } + } + + if ( FCKBrowserInfo.IsGeckoLike ) + FCKTools.AppendBogusBr( eNewBlock ) ; + + oRange.InsertNode( eNewBlock ) ; + + // This is tricky, but to make the new block visible correctly + // we must select it. + if ( FCKBrowserInfo.IsIE ) + { + // Move the selection to the new block. + oRange.MoveToElementEditStart( eNewBlock ) ; + oRange.Select() ; + } + + // Move the selection to the new block. + oRange.MoveToElementEditStart( bIsStartOfBlock && !bIsEndOfBlock ? eNextBlock : eNewBlock ) ; + } + + if ( FCKBrowserInfo.IsGeckoLike ) + FCKDomTools.ScrollIntoView( eNextBlock || eNewBlock, false ) ; + + oRange.Select() ; + } + + // Release the resources used by the range. + oRange.Release() ; + + return true ; +} + +FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag ) +{ + // Get the current selection. + var oRange = new FCKDomRange( this.Window ) ; + oRange.MoveToSelection() ; + + // The selection boundaries must be in the same "block limit" element. + if ( oRange.StartBlockLimit == oRange.EndBlockLimit ) + { + oRange.DeleteContents() ; + + // Get the new selection (it is collapsed at this point). + oRange.MoveToSelection() ; + + var bIsStartOfBlock = oRange.CheckStartOfBlock() ; + var bIsEndOfBlock = oRange.CheckEndOfBlock() ; + + var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ; + + var bHasShift = this._HasShift ; + var bIsPre = false ; + + if ( !bHasShift && sStartBlockTag == 'LI' ) + return this._ExecuteEnterBlock( null, oRange ) ; + + // If we are at the end of a header block. + if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) ) + { + // Insert a BR after the current paragraph. + FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ; + + // The space is required by Gecko only to make the cursor blink. + if ( FCKBrowserInfo.IsGecko ) + FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ; + + // IE and Gecko have different behaviors regarding the position. + oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ; + } + else + { + var eLineBreak ; + bIsPre = sStartBlockTag.IEquals( 'pre' ) ; + if ( bIsPre ) + eLineBreak = this.Window.document.createTextNode( FCKBrowserInfo.IsIE ? '\r' : '\n' ) ; + else + eLineBreak = this.Window.document.createElement( 'br' ) ; + + oRange.InsertNode( eLineBreak ) ; + + // The space is required by Gecko only to make the cursor blink. + if ( FCKBrowserInfo.IsGecko ) + FCKDomTools.InsertAfterNode( eLineBreak, this.Window.document.createTextNode( '' ) ) ; + + // If we are at the end of a block, we must be sure the bogus node is available in that block. + if ( bIsEndOfBlock && FCKBrowserInfo.IsGeckoLike ) + FCKTools.AppendBogusBr( eLineBreak.parentNode ) ; + + if ( FCKBrowserInfo.IsIE ) + oRange.SetStart( eLineBreak, 4 ) ; + else + oRange.SetStart( eLineBreak.nextSibling, 1 ) ; + + if ( ! FCKBrowserInfo.IsIE ) + { + var dummy = null ; + if ( FCKBrowserInfo.IsOpera ) + dummy = this.Window.document.createElement( 'span' ) ; + else + dummy = this.Window.document.createElement( 'br' ) ; + + eLineBreak.parentNode.insertBefore( dummy, eLineBreak.nextSibling ) ; + + FCKDomTools.ScrollIntoView( dummy, false ) ; + + dummy.parentNode.removeChild( dummy ) ; + } + } + + // This collapse guarantees the cursor will be blinking. + oRange.Collapse( true ) ; + + oRange.Select( bIsPre ) ; + } + + // Release the resources used by the range. + oRange.Release() ; + + return true ; +} + +// Outdents a LI, maintaining the selection defined on a range. +FCKEnterKey.prototype._OutdentWithSelection = function( li, range ) +{ + var oBookmark = range.CreateBookmark() ; + + FCKListHandler.OutdentListItem( li ) ; + + range.MoveToBookmark( oBookmark ) ; + range.Select() ; +} + +// Is all the contents under a node included by a range? +FCKEnterKey.prototype._CheckIsAllContentsIncluded = function( range, node ) +{ + var startOk = false ; + var endOk = false ; + + /* + FCKDebug.Output( 'sc='+range.StartContainer.nodeName+ + ',so='+range._Range.startOffset+ + ',ec='+range.EndContainer.nodeName+ + ',eo='+range._Range.endOffset ) ; + */ + if ( range.StartContainer == node || range.StartContainer == node.firstChild ) + startOk = ( range._Range.startOffset == 0 ) ; + + if ( range.EndContainer == node || range.EndContainer == node.lastChild ) + { + var nodeLength = range.EndContainer.nodeType == 3 ? range.EndContainer.length : range.EndContainer.childNodes.length ; + endOk = ( range._Range.endOffset == nodeLength ) ; + } + + return startOk && endOk ; +} + +// Kludge for #247 +FCKEnterKey.prototype._FixIESelectAllBug = function( range ) +{ + var doc = this.Window.document ; + doc.body.innerHTML = '' ; + var editBlock ; + if ( FCKConfig.EnterMode.IEquals( ['div', 'p'] ) ) + { + editBlock = doc.createElement( FCKConfig.EnterMode ) ; + doc.body.appendChild( editBlock ) ; + } + else + editBlock = doc.body ; + + range.MoveToNodeContents( editBlock ) ; + range.Collapse( true ) ; + range.Select() ; + range.Release() ; +} diff --git a/static/fckeditor/editor/_source/classes/fckevents.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckevents.js old mode 100644 new mode 100755 similarity index 62% rename from static/fckeditor/editor/_source/classes/fckevents.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckevents.js index 45e84a8..ef2e10f --- a/static/fckeditor/editor/_source/classes/fckevents.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckevents.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -34,7 +34,12 @@ FCKEvents.prototype.AttachEvent = function( eventName, functionPointer ) if ( !( aTargets = this._RegisteredEvents[ eventName ] ) ) this._RegisteredEvents[ eventName ] = [ functionPointer ] ; else - aTargets.push( functionPointer ) ; + { + // Check that the event handler isn't already registered with the same listener + // It doesn't detect function pointers belonging to an object (at least in Gecko) + if ( aTargets.IndexOf( functionPointer ) == -1 ) + aTargets.push( functionPointer ) ; + } } FCKEvents.prototype.FireEvent = function( eventName, params ) @@ -46,7 +51,20 @@ FCKEvents.prototype.FireEvent = function( eventName, params ) if ( oCalls ) { for ( var i = 0 ; i < oCalls.length ; i++ ) - bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ; + { + try + { + bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ; + } + catch(e) + { + // Ignore the following error. It may happen if pointing to a + // script not anymore available (#934): + // -2146823277 = Can't execute code from a freed script + if ( e.number != -2146823277 ) + throw e ; + } + } } return bReturnValue ; diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckhtmliterator.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckhtmliterator.js new file mode 100755 index 0000000..9f184b7 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckhtmliterator.js @@ -0,0 +1,142 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This class can be used to interate through nodes inside a range. + * + * During interation, the provided range can become invalid, due to document + * mutations, so CreateBookmark() used to restore it after processing, if + * needed. + */ + +var FCKHtmlIterator = function( source ) +{ + this._sourceHtml = source ; +} +FCKHtmlIterator.prototype = +{ + Next : function() + { + var sourceHtml = this._sourceHtml ; + if ( sourceHtml == null ) + return null ; + + var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ; + var isTag = false ; + var value = "" ; + if ( match ) + { + if ( match.index > 0 ) + { + value = sourceHtml.substr( 0, match.index ) ; + this._sourceHtml = sourceHtml.substr( match.index ) ; + } + else + { + isTag = true ; + value = match[0] ; + this._sourceHtml = sourceHtml.substr( match[0].length ) ; + } + } + else + { + value = sourceHtml ; + this._sourceHtml = null ; + } + return { 'isTag' : isTag, 'value' : value } ; + }, + + Each : function( func ) + { + var chunk ; + while ( ( chunk = this.Next() ) ) + func( chunk.isTag, chunk.value ) ; + } +} ; +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This class can be used to interate through nodes inside a range. + * + * During interation, the provided range can become invalid, due to document + * mutations, so CreateBookmark() used to restore it after processing, if + * needed. + */ + +var FCKHtmlIterator = function( source ) +{ + this._sourceHtml = source ; +} +FCKHtmlIterator.prototype = +{ + Next : function() + { + var sourceHtml = this._sourceHtml ; + if ( sourceHtml == null ) + return null ; + + var match = FCKRegexLib.HtmlTag.exec( sourceHtml ) ; + var isTag = false ; + var value = "" ; + if ( match ) + { + if ( match.index > 0 ) + { + value = sourceHtml.substr( 0, match.index ) ; + this._sourceHtml = sourceHtml.substr( match.index ) ; + } + else + { + isTag = true ; + value = match[0] ; + this._sourceHtml = sourceHtml.substr( match[0].length ) ; + } + } + else + { + value = sourceHtml ; + this._sourceHtml = null ; + } + return { 'isTag' : isTag, 'value' : value } ; + }, + + Each : function( func ) + { + var chunk ; + while ( ( chunk = this.Next() ) ) + func( chunk.isTag, chunk.value ) ; + } +} ; diff --git a/static/fckeditor/editor/_source/classes/fckicon.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckicon.js old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/editor/_source/classes/fckicon.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckicon.js index 42a56a9..89719f6 --- a/static/fckeditor/editor/_source/classes/fckicon.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckicon.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -74,7 +74,7 @@ FCKIcon.prototype.CreateIconElement = function( document ) eIcon = document.createElement( 'IMG' ) ; eIcon.src = FCK_SPACER_PATH ; eIcon.style.backgroundPosition = '0px ' + sPos ; - eIcon.style.backgroundImage = 'url(' + this.Path + ')' ; + eIcon.style.backgroundImage = 'url("' + this.Path + '")' ; } } else // It is using a single icon image. @@ -100,4 +100,4 @@ FCKIcon.prototype.CreateIconElement = function( document ) eIcon.className = 'TB_Button_Image' ; return eIcon ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckiecleanup.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckiecleanup.js old mode 100644 new mode 100755 similarity index 85% rename from static/fckeditor/editor/_source/classes/fckiecleanup.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckiecleanup.js index 5468e1a..9a09005 --- a/static/fckeditor/editor/_source/classes/fckiecleanup.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckiecleanup.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -23,7 +23,7 @@ var FCKIECleanup = function( attachWindow ) { - // If the attachWindow already have a cleanup object, jusgt use that one. + // If the attachWindow already have a cleanup object, just use that one. if ( attachWindow._FCKCleanupObj ) this.Items = attachWindow._FCKCleanupObj.Items ; else @@ -43,7 +43,7 @@ FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction ) function FCKIECleanup_Cleanup() { - if ( !this._FCKCleanupObj ) + if ( !this._FCKCleanupObj || ( FCKConfig.MsWebBrowserControlCompat && !window.FCKUnloadFlag ) ) return ; var aItems = this._FCKCleanupObj.Items ; @@ -65,4 +65,4 @@ function FCKIECleanup_Cleanup() if ( CollectGarbage ) CollectGarbage() ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckimagepreloader.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckimagepreloader.js old mode 100644 new mode 100755 similarity index 74% rename from static/fckeditor/editor/_source/classes/fckimagepreloader.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckimagepreloader.js index 3e35697..92fd305 --- a/static/fckeditor/editor/_source/classes/fckimagepreloader.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckimagepreloader.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,8 +44,8 @@ FCKImagePreloader.prototype = for ( var i = 0 ; i < aImages.length ; i++ ) { var eImg = document.createElement( 'img' ) ; - eImg.onload = eImg.onerror = _FCKImagePreloader_OnImage ; - eImg._FCKImagePreloader = this ; + FCKTools.AddEventListenerEx( eImg, 'load', _FCKImagePreloader_OnImage, this ) ; + FCKTools.AddEventListenerEx( eImg, 'error', _FCKImagePreloader_OnImage, this ) ; eImg.src = aImages[i] ; _FCKImagePreloader_ImageCache.push( eImg ) ; @@ -57,12 +57,8 @@ FCKImagePreloader.prototype = // magic will not happen. var _FCKImagePreloader_ImageCache = new Array() ; -function _FCKImagePreloader_OnImage() +function _FCKImagePreloader_OnImage( ev, imagePreloader ) { - var oImagePreloader = this._FCKImagePreloader ; - - if ( (--oImagePreloader._PreloadCount) == 0 && oImagePreloader.OnComplete ) - oImagePreloader.OnComplete() ; - - this._FCKImagePreloader = null ; -} \ No newline at end of file + if ( (--imagePreloader._PreloadCount) == 0 && imagePreloader.OnComplete ) + imagePreloader.OnComplete() ; +} diff --git a/static/fckeditor/editor/_source/classes/fckkeystrokehandler.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckkeystrokehandler.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/_source/classes/fckkeystrokehandler.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckkeystrokehandler.js index 334b476..31c341b --- a/static/fckeditor/editor/_source/classes/fckkeystrokehandler.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckkeystrokehandler.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -54,11 +54,16 @@ FCKKeystrokeHandler.prototype.SetKeystrokes = function() { var keyDef = arguments[i] ; + // If the configuration for the keystrokes is missing some element or has any extra comma + // this item won't be valid, so skip it and keep on processing. + if ( !keyDef ) + continue ; + if ( typeof( keyDef[0] ) == 'object' ) // It is an array with arrays defining the keystrokes. this.SetKeystrokes.apply( this, keyDef ) ; else { - if ( keyDef.length == 1 ) // If it has only one element, removed the keystroke. + if ( keyDef.length == 1 ) // If it has only one element, remove the keystroke. delete this.Keystrokes[ keyDef[0] ] ; else // Otherwise add it. this.Keystrokes[ keyDef[0] ] = keyDef[1] === true ? true : keyDef ; @@ -95,7 +100,7 @@ function _FCKKeystrokeHandler_OnKeyDown( ev, keystrokeHandler ) // If the keystroke is defined if ( keystrokeValue ) { - // If the keystroke has been explicetly set to "true" OR calling the + // If the keystroke has been explicitly set to "true" OR calling the // "OnKeystroke" event, it doesn't return "true", the default behavior // must be preserved. if ( keystrokeValue === true || !( keystrokeHandler.OnKeystroke && keystrokeHandler.OnKeystroke.apply( keystrokeHandler, keystrokeValue ) ) ) @@ -133,4 +138,4 @@ function _FCKKeystrokeHandler_OnKeyPress( ev, keystrokeHandler ) } return true ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckmenublock.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublock.js old mode 100644 new mode 100755 similarity index 85% rename from static/fckeditor/editor/_source/classes/fckmenublock.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublock.js index dba67e1..1cd710d --- a/static/fckeditor/editor/_source/classes/fckmenublock.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublock.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -32,9 +32,9 @@ FCKMenuBlock.prototype.Count = function() return this._Items.length ; } -FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) +FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) { - var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ; + var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ; oItem.OnClick = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ; oItem.OnActivate = FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ; @@ -94,6 +94,9 @@ FCKMenuBlock.prototype.Create = function( parentElement ) function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock ) { + if ( menuBlock.Hide ) + menuBlock.Hide() ; + FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ; } @@ -105,8 +108,15 @@ function FCKMenuBlock_Item_OnActivate( menuBlock ) { // Set the focus to this menu block window (to fire OnBlur on opened panels). if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu ) + { menuBlock._Window.focus() ; + // Due to the event model provided by Opera, we need to set + // HasFocus here as the above focus() call will not fire the focus + // event in the panel immediately (#1200). + menuBlock.Panel.HasFocus = true ; + } + oActiveItem.Deactivate() ; } @@ -140,4 +150,4 @@ FCKMenuSeparator.prototype.Create = function( parentTable ) eCell = r.insertCell(-1) ; eCell.className = 'MN_Separator' ; eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckmenublockpanel.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublockpanel.js old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/editor/_source/classes/fckmenublockpanel.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublockpanel.js index 45cbcc0..9dbc480 --- a/static/fckeditor/editor/_source/classes/fckmenublockpanel.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenublockpanel.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -35,7 +35,7 @@ FCKMenuBlockPanel.prototype = new FCKMenuBlock() ; FCKMenuBlockPanel.prototype.Create = function() { var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ; - oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ; + oPanel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ; // Call the "base" implementation. FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ; @@ -51,4 +51,4 @@ FCKMenuBlockPanel.prototype.Hide = function() { if ( this.Panel.CheckIsOpened() ) this.Panel.Hide() ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckmenuitem.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenuitem.js old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/editor/_source/classes/fckmenuitem.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenuitem.js index 7319efa..038146d --- a/static/fckeditor/editor/_source/classes/fckmenuitem.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckmenuitem.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -21,7 +21,7 @@ * Defines and renders a menu items in a menu block. */ -var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled ) +var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled, customData ) { this.Name = name ; this.Label = label || name ; @@ -32,16 +32,17 @@ var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArr this.SubMenu = new FCKMenuBlockPanel() ; this.SubMenu.Parent = parentMenuBlock ; this.SubMenu.OnClick = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ; + this.CustomData = customData ; if ( FCK.IECleanup ) FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ; } -FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) +FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) { this.HasSubMenu = true ; - return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ; + return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled, customData ) ; } FCKMenuItem.prototype.AddSeparator = function() @@ -157,4 +158,4 @@ function FCKMenuItem_OnMouseOut( ev, menuItem ) function FCKMenuItem_Cleanup() { this.MainElement = null ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckpanel.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckpanel.js old mode 100644 new mode 100755 similarity index 56% rename from static/fckeditor/editor/_source/classes/fckpanel.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckpanel.js index 3bec016..f041339 --- a/static/fckeditor/editor/_source/classes/fckpanel.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckpanel.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -35,26 +35,50 @@ var FCKPanel = function( parentWindow ) if ( FCKBrowserInfo.IsIE ) { // Create the Popup that will hold the panel. + // The popup has to be created before playing with domain hacks, see #1666. this._Popup = this._Window.createPopup() ; + + // this._Window cannot be accessed while playing with domain hacks, but local variable is ok. + // See #1666. + var pDoc = this._Window.document ; + + // This is a trick to IE6 (not IE7). The original domain must be set + // before creating the popup, so we are able to take a refence to the + // document inside of it, and the set the proper domain for it. (#123) + if ( FCK_IS_CUSTOM_DOMAIN && !FCKBrowserInfo.IsIE7 ) + { + pDoc.domain = FCK_ORIGINAL_DOMAIN ; + document.domain = FCK_ORIGINAL_DOMAIN ; + } + oDocument = this.Document = this._Popup.document ; + // Set the proper domain inside the popup. + if ( FCK_IS_CUSTOM_DOMAIN ) + { + oDocument.domain = FCK_RUNTIME_DOMAIN ; + pDoc.domain = FCK_RUNTIME_DOMAIN ; + document.domain = FCK_RUNTIME_DOMAIN ; + } + FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ; } else { var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ; + FCKTools.ResetStyles( oIFrame ); oIFrame.src = 'javascript:void(0)' ; oIFrame.allowTransparency = true ; oIFrame.frameBorder = '0' ; oIFrame.scrolling = 'no' ; - oIFrame.style.position = 'absolute'; - oIFrame.style.zIndex = FCKConfig.FloatingPanelsZIndex ; - oIFrame.width = oIFrame.height = 0 ; + oIFrame.style.width = oIFrame.style.height = '0px' ; + FCKDomTools.SetElementStyles( oIFrame, + { + position : 'absolute', + zIndex : FCKConfig.FloatingPanelsZIndex + } ) ; - if ( this._Window == window.parent && window.frameElement ) - window.frameElement.parentNode.insertBefore( oIFrame, window.frameElement ) ; - else - this._Window.document.body.appendChild( oIFrame ) ; + this._Window.document.body.appendChild( oIFrame ) ; var oIFrameWindow = oIFrame.contentWindow ; @@ -70,19 +94,22 @@ var FCKPanel = function( parentWindow ) oDocument.write( '' + sBase + '<\/head><\/body><\/html>' ) ; oDocument.close() ; + if( FCKBrowserInfo.IsAIR ) + FCKAdobeAIR.Panel_Contructor( oDocument, window.document.location ) ; + FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ; FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ; } oDocument.dir = FCKLang.Dir ; - oDocument.oncontextmenu = FCKTools.CancelEvent ; + FCKTools.AddEventListener( oDocument, 'contextmenu', FCKTools.CancelEvent ) ; // Create the main DIV that is used as the panel base. this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ; - // The "float" property must be set so Firefox calculates the size correcly. + // The "float" property must be set so Firefox calculates the size correctly. this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ; } @@ -104,6 +131,7 @@ FCKPanel.prototype.Preload = function( x, y, relElement ) FCKPanel.prototype.Show = function( x, y, relElement, width, height ) { var iMainWidth ; + var eMainNode = this.MainNode ; if ( this._Popup ) { @@ -114,10 +142,13 @@ FCKPanel.prototype.Show = function( x, y, relElement, width, height ) // The following lines must be place after the above "show", otherwise it // doesn't has the desired effect. - this.MainNode.style.width = width ? width + 'px' : '' ; - this.MainNode.style.height = height ? height + 'px' : '' ; + FCKDomTools.SetElementStyles( eMainNode, + { + width : width ? width + 'px' : '', + height : height ? height + 'px' : '' + } ) ; - iMainWidth = this.MainNode.offsetWidth ; + iMainWidth = eMainNode.offsetWidth ; if ( this.IsRTL ) { @@ -128,7 +159,7 @@ FCKPanel.prototype.Show = function( x, y, relElement, width, height ) } // Second call: Show the Popup at the specified location, with the correct size. - this._Popup.show( x, y, iMainWidth, this.MainNode.offsetHeight, relElement ) ; + this._Popup.show( x, y, iMainWidth, eMainNode.offsetHeight, relElement ) ; if ( this.OnHide ) { @@ -141,16 +172,40 @@ FCKPanel.prototype.Show = function( x, y, relElement, width, height ) else { // Do not fire OnBlur while the panel is opened. - if ( typeof( FCKFocusManager ) != 'undefined' ) - FCKFocusManager.Lock() ; + if ( typeof( FCK.ToolbarSet.CurrentInstance.FocusManager ) != 'undefined' ) + FCK.ToolbarSet.CurrentInstance.FocusManager.Lock() ; if ( this.ParentPanel ) + { this.ParentPanel.Lock() ; - this.MainNode.style.width = width ? width + 'px' : '' ; - this.MainNode.style.height = height ? height + 'px' : '' ; + // Due to a bug on FF3, we must ensure that the parent panel will + // blur (#1584). + FCKPanel_Window_OnBlur( null, this.ParentPanel ) ; + } - iMainWidth = this.MainNode.offsetWidth ; + // Toggle the iframe scrolling attribute to prevent the panel + // scrollbars from disappearing in FF Mac. (#191) + if ( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsMac ) + { + this._IFrame.scrolling = '' ; + FCKTools.RunFunction( function(){ this._IFrame.scrolling = 'no'; }, this ) ; + } + + // Be sure we'll not have more than one Panel opened at the same time. + // Do not unlock focus manager here because we're displaying another floating panel + // instead of returning the editor to a "no panel" state (Bug #1514). + if ( FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel && + FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel != this ) + FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel.Hide( false, true ) ; + + FCKDomTools.SetElementStyles( eMainNode, + { + width : width ? width + 'px' : '', + height : height ? height + 'px' : '' + } ) ; + + iMainWidth = eMainNode.offsetWidth ; if ( !width ) this._IFrame.width = 1 ; if ( !height ) this._IFrame.height = 1 ; @@ -159,19 +214,31 @@ FCKPanel.prototype.Show = function( x, y, relElement, width, height ) // setting the _IFrame size (which returns "0"), and then after that, // to return the correct width. Remove the first step and it will not // work when the editor is in RTL. - iMainWidth = this.MainNode.offsetWidth ; + // + // The "|| eMainNode.firstChild.offsetWidth" part has been added + // for Opera compatibility (see #570). + iMainWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ; - var oPos = FCKTools.GetElementPosition( + // Base the popup coordinates upon the coordinates of relElement. + var oPos = FCKTools.GetDocumentPosition( this._Window, relElement.nodeType == 9 ? ( FCKTools.IsStrictMode( relElement ) ? relElement.documentElement : relElement.body ) : - relElement, - this._Window ) ; + relElement ) ; + + // Minus the offsets provided by any positioned parent element of the panel iframe. + var positionedAncestor = FCKDomTools.GetPositionedAncestor( this._IFrame.parentNode ) ; + if ( positionedAncestor ) + { + var nPos = FCKTools.GetDocumentPosition( FCKTools.GetElementWindow( positionedAncestor ), positionedAncestor ) ; + oPos.x -= nPos.x ; + oPos.y -= nPos.y ; + } if ( this.IsRTL && !this.IsContextMenu ) x = ( x * -1 ) ; - x += oPos.X ; - y += oPos.Y ; + x += oPos.x ; + y += oPos.y ; if ( this.IsRTL ) { @@ -191,51 +258,62 @@ FCKPanel.prototype.Show = function( x, y, relElement, width, height ) if ( ( x + iMainWidth ) > iViewPaneWidth ) x -= x + iMainWidth - iViewPaneWidth ; - if ( ( y + this.MainNode.offsetHeight ) > iViewPaneHeight ) - y -= y + this.MainNode.offsetHeight - iViewPaneHeight ; + if ( ( y + eMainNode.offsetHeight ) > iViewPaneHeight ) + y -= y + eMainNode.offsetHeight - iViewPaneHeight ; } - if ( x < 0 ) - x = 0 ; - // Set the context menu DIV in the specified location. - this._IFrame.style.left = x + 'px' ; - this._IFrame.style.top = y + 'px' ; - - var iWidth = iMainWidth ; - var iHeight = this.MainNode.offsetHeight ; - - this._IFrame.width = iWidth ; - this._IFrame.height = iHeight ; + FCKDomTools.SetElementStyles( this._IFrame, + { + left : x + 'px', + top : y + 'px' + } ) ; // Move the focus to the IFRAME so we catch the "onblur". this._IFrame.contentWindow.focus() ; - } + this._IsOpened = true ; - this._IsOpened = true ; + var me = this ; + this._resizeTimer = setTimeout( function() + { + var iWidth = eMainNode.offsetWidth || eMainNode.firstChild.offsetWidth ; + var iHeight = eMainNode.offsetHeight ; + me._IFrame.style.width = iWidth + 'px' ; + me._IFrame.style.height = iHeight + 'px' ; + + }, 0 ) ; + + FCK.ToolbarSet.CurrentInstance.GetInstanceObject( 'FCKPanel' )._OpenedPanel = this ; + } FCKTools.RunFunction( this.OnShow, this ) ; } -FCKPanel.prototype.Hide = function( ignoreOnHide ) +FCKPanel.prototype.Hide = function( ignoreOnHide, ignoreFocusManagerUnlock ) { if ( this._Popup ) this._Popup.hide() ; else { - if ( !this._IsOpened ) + if ( !this._IsOpened || this._LockCounter > 0 ) return ; // Enable the editor to fire the "OnBlur". - if ( typeof( FCKFocusManager ) != 'undefined' ) + if ( typeof( FCKFocusManager ) != 'undefined' && !ignoreFocusManagerUnlock ) FCKFocusManager.Unlock() ; // It is better to set the sizes to 0, otherwise Firefox would have // rendering problems. - this._IFrame.width = this._IFrame.height = 0 ; + this._IFrame.style.width = this._IFrame.style.height = '0px' ; this._IsOpened = false ; + if ( this._resizeTimer ) + { + clearTimeout( this._resizeTimer ) ; + this._resizeTimer = null ; + } + if ( this.ParentPanel ) this.ParentPanel.Unlock() ; @@ -305,4 +383,4 @@ function FCKPanel_Cleanup() this._Window = null ; this.Document = null ; this.MainNode = null ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckplugin.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckplugin.js old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/_source/classes/fckplugin.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckplugin.js index a0df44e..16300d1 --- a/static/fckeditor/editor/_source/classes/fckplugin.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckplugin.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -53,4 +53,4 @@ FCKPlugin.prototype.Load = function() // Add the main plugin script. LoadScript( this.Path + 'fckplugin.js' ) ; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/_source/classes/fckspecialcombo.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckspecialcombo.js old mode 100644 new mode 100755 similarity index 73% rename from static/fckeditor/editor/_source/classes/fckspecialcombo.js rename to static/contrib/fckeditor-2.6.3/editor/_source/classes/fckspecialcombo.js index 79607d0..7226389 --- a/static/fckeditor/editor/_source/classes/fckspecialcombo.js +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckspecialcombo.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -37,7 +37,7 @@ var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, this.Items = new Object() ; this._Panel = new FCKPanel( parentWindow || window ) ; - this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ; + this._Panel.AppendStyleSheet( FCKConfig.SkinEditorCSS ) ; this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ; this._PanelBox.className = 'SC_Panel' ; this._PanelBox.style.width = this.PanelWidth + 'px' ; @@ -66,16 +66,26 @@ function FCKSpecialCombo_ItemOnMouseOut() this.className = this.originalClass ; } -function FCKSpecialCombo_ItemOnClick() +function FCKSpecialCombo_ItemOnClick( ev, specialCombo, itemId ) { this.className = this.originalClass ; - this.FCKSpecialCombo._Panel.Hide() ; + specialCombo._Panel.Hide() ; - this.FCKSpecialCombo.SetLabel( this.FCKItemLabel ) ; + specialCombo.SetLabel( this.FCKItemLabel ) ; - if ( typeof( this.FCKSpecialCombo.OnSelect ) == 'function' ) - this.FCKSpecialCombo.OnSelect( this.FCKItemID, this ) ; + if ( typeof( specialCombo.OnSelect ) == 'function' ) + specialCombo.OnSelect( itemId, this ) ; +} + +FCKSpecialCombo.prototype.ClearItems = function () +{ + if ( this.Items ) + this.Items = {} ; + + var itemsholder = this._ItemsHolderEl ; + while ( itemsholder.firstChild ) + itemsholder.removeChild( itemsholder.firstChild ) ; } FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor ) @@ -84,9 +94,7 @@ FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor ) var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ; oDiv.className = oDiv.originalClass = 'SC_Item' ; oDiv.innerHTML = html ; - oDiv.FCKItemID = id ; oDiv.FCKItemLabel = label || id ; - oDiv.FCKSpecialCombo = this ; oDiv.Selected = false ; // In IE, the width must be set so the borders are shown correctly when the content overflows. @@ -96,24 +104,24 @@ FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor ) if ( bgColor ) oDiv.style.backgroundColor = bgColor ; - oDiv.onmouseover = FCKSpecialCombo_ItemOnMouseOver ; - oDiv.onmouseout = FCKSpecialCombo_ItemOnMouseOut ; - oDiv.onclick = FCKSpecialCombo_ItemOnClick ; + FCKTools.AddEventListenerEx( oDiv, 'mouseover', FCKSpecialCombo_ItemOnMouseOver ) ; + FCKTools.AddEventListenerEx( oDiv, 'mouseout', FCKSpecialCombo_ItemOnMouseOut ) ; + FCKTools.AddEventListenerEx( oDiv, 'click', FCKSpecialCombo_ItemOnClick, [ this, id ] ) ; this.Items[ id.toString().toLowerCase() ] = oDiv ; return oDiv ; } -FCKSpecialCombo.prototype.SelectItem = function( itemId ) +FCKSpecialCombo.prototype.SelectItem = function( item ) { - itemId = itemId ? itemId.toString().toLowerCase() : '' ; + if ( typeof item == 'string' ) + item = this.Items[ item.toString().toLowerCase() ] ; - var oDiv = this.Items[ itemId ] ; - if ( oDiv ) + if ( item ) { - oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ; - oDiv.Selected = true ; + item.className = item.originalClass = 'SC_ItemSelected' ; + item.Selected = true ; } } @@ -138,6 +146,7 @@ FCKSpecialCombo.prototype.DeselectAll = function( clearLabel ) { for ( var i in this.Items ) { + if ( !this.Items[i] ) continue; this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ; this.Items[i].Selected = false ; } @@ -156,17 +165,23 @@ FCKSpecialCombo.prototype.SetLabelById = function( id ) FCKSpecialCombo.prototype.SetLabel = function( text ) { - this.Label = text.length == 0 ? ' ' : text ; + text = ( !text || text.length == 0 ) ? ' ' : text ; - if ( this._LabelEl ) + if ( text == this.Label ) + return ; + + this.Label = text ; + + var labelEl = this._LabelEl ; + if ( labelEl ) { - this._LabelEl.innerHTML = this.Label ; + labelEl.innerHTML = text ; // It may happen that the label is some HTML, including tags. This // would be a problem because when the user click on those tags, the // combo will get the selection from the editing area. So we must // disable any kind of selection here. - FCKTools.DisableSelection( this._LabelEl ) ; + FCKTools.DisableSelection( labelEl ) ; } } @@ -174,7 +189,9 @@ FCKSpecialCombo.prototype.SetEnabled = function( isEnabled ) { this.Enabled = isEnabled ; - this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ; + // In IE it can happen when the page is reloaded that _OuterTable is null, so check its existence + if ( this._OuterTable ) + this._OuterTable.className = isEnabled ? '' : 'SC_FieldDisabled' ; } FCKSpecialCombo.prototype.Create = function( targetElement ) @@ -244,11 +261,9 @@ FCKSpecialCombo.prototype.Create = function( targetElement ) // Events Handlers - oField.SpecialCombo = this ; - - oField.onmouseover = FCKSpecialCombo_OnMouseOver ; - oField.onmouseout = FCKSpecialCombo_OnMouseOut ; - oField.onclick = FCKSpecialCombo_OnClick ; + FCKTools.AddEventListenerEx( oField, 'mouseover', FCKSpecialCombo_OnMouseOver, this ) ; + FCKTools.AddEventListenerEx( oField, 'mouseout', FCKSpecialCombo_OnMouseOut, this ) ; + FCKTools.AddEventListenerEx( oField, 'click', FCKSpecialCombo_OnClick, this ) ; FCKTools.DisableSelection( this._Panel.Document.body ) ; } @@ -267,28 +282,28 @@ function FCKSpecialCombo_Cleanup() } } -function FCKSpecialCombo_OnMouseOver() +function FCKSpecialCombo_OnMouseOver( ev, specialCombo ) { - if ( this.SpecialCombo.Enabled ) + if ( specialCombo.Enabled ) { - switch ( this.SpecialCombo.Style ) + switch ( specialCombo.Style ) { - case FCK_TOOLBARITEM_ONLYICON : - this.className = 'TB_Button_On_Over'; - break ; - case FCK_TOOLBARITEM_ONLYTEXT : - this.className = 'TB_Button_On_Over'; - break ; - case FCK_TOOLBARITEM_ICONTEXT : - this.className = 'SC_Field SC_FieldOver' ; - break ; + case FCK_TOOLBARITEM_ONLYICON : + this.className = 'TB_Button_On_Over'; + break ; + case FCK_TOOLBARITEM_ONLYTEXT : + this.className = 'TB_Button_On_Over'; + break ; + case FCK_TOOLBARITEM_ICONTEXT : + this.className = 'SC_Field SC_FieldOver' ; + break ; } } } -function FCKSpecialCombo_OnMouseOut() +function FCKSpecialCombo_OnMouseOut( ev, specialCombo ) { - switch ( this.SpecialCombo.Style ) + switch ( specialCombo.Style ) { case FCK_TOOLBARITEM_ONLYICON : this.className = 'TB_Button_Off'; @@ -302,7 +317,7 @@ function FCKSpecialCombo_OnMouseOut() } } -function FCKSpecialCombo_OnClick( e ) +function FCKSpecialCombo_OnClick( e, specialCombo ) { // For Mozilla we must stop the event propagation to avoid it hiding // the panel because of a click outside of it. @@ -312,17 +327,15 @@ function FCKSpecialCombo_OnClick( e ) // FCKPanelEventHandlers.OnDocumentClick( e ) ; // } - var oSpecialCombo = this.SpecialCombo ; - - if ( oSpecialCombo.Enabled ) + if ( specialCombo.Enabled ) { - var oPanel = oSpecialCombo._Panel ; - var oPanelBox = oSpecialCombo._PanelBox ; - var oItemsHolder = oSpecialCombo._ItemsHolderEl ; - var iMaxHeight = oSpecialCombo.PanelMaxHeight ; + var oPanel = specialCombo._Panel ; + var oPanelBox = specialCombo._PanelBox ; + var oItemsHolder = specialCombo._ItemsHolderEl ; + var iMaxHeight = specialCombo.PanelMaxHeight ; - if ( oSpecialCombo.OnBeforeClick ) - oSpecialCombo.OnBeforeClick( oSpecialCombo ) ; + if ( specialCombo.OnBeforeClick ) + specialCombo.OnBeforeClick( specialCombo ) ; // This is a tricky thing. We must call the "Load" function, otherwise // it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only). @@ -339,7 +352,7 @@ function FCKSpecialCombo_OnClick( e ) else oPanelBox.style.height = '' ; -// oPanel.PanelDiv.style.width = oSpecialCombo.PanelWidth + 'px' ; +// oPanel.PanelDiv.style.width = specialCombo.PanelWidth + 'px' ; oPanel.Show( 0, this.offsetHeight, this ) ; } @@ -360,4 +373,4 @@ Sample Combo Field HTML output:
  • -*/ \ No newline at end of file +*/ diff --git a/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckstyle.js b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckstyle.js new file mode 100755 index 0000000..756fd67 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/_source/classes/fckstyle.js @@ -0,0 +1,1500 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKStyle Class: contains a style definition, and all methods to work with + * the style in a document. + */ + +/** + * @param {Object} styleDesc A "style descriptor" object, containing the raw + * style definition in the following format: + * ' + + + + +
    + + + + + + + + + + + +
    + Style
    + +
      + Stylesheet Classes
    + +
    +
    + + + diff --git a/static/fckeditor/editor/dialog/fck_docprops.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_docprops.html old mode 100644 new mode 100755 similarity index 94% rename from static/fckeditor/editor/dialog/fck_docprops.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_docprops.html index 3083466..d943dd9 --- a/static/fckeditor/editor/dialog/fck_docprops.html +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_docprops.html @@ -1,7 +1,7 @@ + + + + + + + + + +
    + + Lorem ipsum dolor sit amet, consectetuer adipiscing + elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus + a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, + nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed + velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper + nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices + a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus + faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget + tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, + tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis + id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, + eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur + ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris. +
    + + diff --git a/static/fckeditor/editor/dialog/fck_link.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_link.html old mode 100644 new mode 100755 similarity index 95% rename from static/fckeditor/editor/dialog/fck_link.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_link.html index c8f37b6..6d69e6e --- a/static/fckeditor/editor/dialog/fck_link.html +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_link.html @@ -1,7 +1,7 @@ /g, '' ) ; + html = html.replace(/<\!--[\s\S]*?-->/g, '' ) ; html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ; html = html.replace( /\s*<\/H\d>/gi, '' ) ; // Remove "display:none" tags. - html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '' ) ; + html = html.replace( /<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none[\s\S]*?<\/\1>/ig, '' ) ; + + // Remove language tags + html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ; + + // Remove onmouseover and onmouseout events (from MS Word comments effect) + html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ; + html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ; if ( FCKConfig.CleanWordKeepsStructure ) { @@ -202,8 +274,8 @@ function CleanWord( oNode, bIgnoreFont, bRemoveStyles ) html = html.replace( /]*)>/gi, '' ) ; // Word likes to insert extra tags, when using MSIE. (Wierd). - html = html.replace( /<(H\d)>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' ); - html = html.replace( /<(H\d)>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' ); + html = html.replace( /<(H\d)>]*>([\s\S]*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' ); + html = html.replace( /<(H\d)>([\s\S]*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' ); } else { @@ -217,7 +289,7 @@ function CleanWord( oNode, bIgnoreFont, bRemoveStyles ) html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ; // Transform

    to

    - var re = new RegExp( '(]*>.*?)(<\/P>)', 'gi' ) ; // Different because of a IE 5.0 error + var re = new RegExp( '(]*>[\\s\\S]*?)(<\/P>)', 'gi' ) ; // Different because of a IE 5.0 error html = html.replace( re, '' ) ; // Remove empty tags (three times, just to be sure). @@ -251,33 +323,22 @@ function CleanWord( oNode, bIgnoreFont, bRemoveStyles ) - + - - - - - - -
    - - -
    - - -
    - -
    + + + +
    + + + diff --git a/static/fckeditor/editor/dialog/fck_radiobutton.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_radiobutton.html old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/editor/dialog/fck_radiobutton.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_radiobutton.html index f239ad3..eb9aa5d --- a/static/fckeditor/editor/dialog/fck_radiobutton.html +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_radiobutton.html @@ -1,7 +1,7 @@ + + + + + + + + + + + + + diff --git a/static/fckeditor/editor/dialog/fck_select.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_select.html old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/editor/dialog/fck_select.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_select.html index cb48b50..a1735a1 --- a/static/fckeditor/editor/dialog/fck_select.html +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_select.html @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]+>", " ", "all")> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php index 58baaad..9c747c9 --- a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php @@ -62,7 +62,7 @@ function escape_quote( $str ) { # handle a server-side error. function error_handler( $err ) { - echo "error = '" . escape_quote( $err ) . "';\n"; + echo "error = '" . preg_replace( "/['\\\\]/", "\\\\$0", $err ) . "';\n"; } ## get the list of misspelled words. Put the results in the javascript words array @@ -82,6 +82,10 @@ function print_checker_results() { if( $fh = fopen( $tempfile, 'w' )) { for( $i = 0; $i < count( $textinputs ); $i++ ) { $text = urldecode( $textinputs[$i] ); + + // Strip all tags for the text. (by FredCK - #339 / #681) + $text = preg_replace( "/<[^>]+>/", " ", $text ) ; + $lines = explode( "\n", $text ); fwrite ( $fh, "%\n" ); # exit terse mode fwrite ( $fh, "^$input_separator\n" ); @@ -193,4 +197,3 @@ wordWindowObj.writeBody(); - diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl old mode 100644 new mode 100755 similarity index 94% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl index 8d3df65..fae010d --- a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl @@ -58,6 +58,8 @@ sub printCheckerResults { # open temp file, add the submitted text. for( my $i = 0; $i <= $#textinputs; $i++ ) { $text = url_decode( $textinputs[$i] ); + # Strip all tags for the text. (by FredCK - #339 / #681) + $text =~ s/<[^>]+>/ /g; @lines = split( /\n/, $text ); print $fh "\%\n"; # exit terse mode print $fh "^$input_separator\n"; @@ -177,4 +179,3 @@ wordWindowObj.writeBody(); EOF - diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js old mode 100644 new mode 100755 similarity index 96% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js index b5e55b7..c85be9a --- a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js @@ -459,4 +459,3 @@ function _getFormInputs( inputPattern ) { } return inputs; } - diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html old mode 100644 new mode 100755 similarity index 100% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css old mode 100644 new mode 100755 similarity index 94% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css index 4df608d..9928086 --- a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css @@ -46,4 +46,4 @@ width:200px; margin-top:2; font-size:8pt; -} \ No newline at end of file +} diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js old mode 100644 new mode 100755 similarity index 100% rename from static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js diff --git a/static/fckeditor/editor/dialog/fck_table.html b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_table.html old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/dialog/fck_table.html rename to static/contrib/fckeditor-2.6.3/editor/dialog/fck_table.html index 6bb9d11..e3792d7 --- a/static/fckeditor/editor/dialog/fck_table.html +++ b/static/contrib/fckeditor-2.6.3/editor/dialog/fck_table.html @@ -1,7 +1,7 @@ + + + + + + + + +
    + +
    +
    + + + + + +
      + +   + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/static/contrib/fckeditor-2.6.3/editor/fckeditor.html b/static/contrib/fckeditor-2.6.3/editor/fckeditor.html new file mode 100755 index 0000000..aba4c48 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/fckeditor.html @@ -0,0 +1,317 @@ + + + + + FCKeditor + + + + + + + + + + + + + + + + + + + +
    + + diff --git a/static/fckeditor/editor/fckeditor.original.html b/static/contrib/fckeditor-2.6.3/editor/fckeditor.original.html old mode 100644 new mode 100755 similarity index 51% rename from static/fckeditor/editor/fckeditor.original.html rename to static/contrib/fckeditor-2.6.3/editor/fckeditor.original.html index 846eed9..5291486 --- a/static/fckeditor/editor/fckeditor.original.html +++ b/static/contrib/fckeditor-2.6.3/editor/fckeditor.original.html @@ -1,7 +1,7 @@ - + - + FCKeditor - - + + + diff --git a/static/fckeditor/editor/filemanager/browser/default/browser.css b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.css old mode 100644 new mode 100755 similarity index 73% rename from static/fckeditor/editor/filemanager/browser/default/browser.css rename to static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.css index ba464ba..9483308 --- a/static/fckeditor/editor/filemanager/browser/default/browser.css +++ b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.css @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -24,28 +24,26 @@ body { background-color: #f1f1e3; + margin-top:0; + margin-bottom:0; } form { - margin: 0px 0px 0px 0px ; - padding: 0px 0px 0px 0px ; + margin: 0; + padding: 0; } .Frame { background-color: #f1f1e3; - border-color: #f1f1e3; - border-right: thin inset; - border-top: thin inset; - border-left: thin inset; - border-bottom: thin inset; + border: thin inset #f1f1e3; } body.FileArea { - background-color: #ffffff; + margin: 10px; } body, td, input, select @@ -69,11 +67,8 @@ body, td, input, select .Button, button { - border-right: #737357 1px solid; - border-top: #737357 1px solid; - border-left: #737357 1px solid; color: #3b3b1f; - border-bottom: #737357 1px solid; + border: #737357 1px solid; background-color: #c7c78f; } @@ -85,4 +80,8 @@ body, td, input, select .FolderListFolder img { background-image: url(images/Folder.gif); -} \ No newline at end of file +} + +.fullHeight { + height: 100%; +} diff --git a/static/fckeditor/editor/filemanager/browser/default/browser.html b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.html old mode 100644 new mode 100755 similarity index 77% rename from static/fckeditor/editor/filemanager/browser/default/browser.html rename to static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.html index 8b776a2..7a7e920 --- a/static/fckeditor/editor/filemanager/browser/default/browser.html +++ b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/browser.html @@ -1,7 +1,8 @@ - + + Folder path + - - + +
    - +
      /    
    diff --git a/static/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/frmcreatefolder.html old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html rename to static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/frmcreatefolder.html index 8f72ff5..01ca135 --- a/static/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +++ b/static/contrib/fckeditor-2.6.3/editor/filemanager/browser/default/frmcreatefolder.html @@ -1,7 +1,7 @@ + Create Folder - - - + +
    \n \n \n \n
    '+FCKLang.ColorAutomatic+'
    ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_AutoOnClick,this);if (!FCKBrowserInfo.IsIE) C.style.width='96%';var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H
    ';if (H>=G.length) C.style.visibility='hidden';else FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_OnClick,[this,L]);}};if (FCKConfig.EnableMoreFontColors){E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='
    '+FCKLang.ColorMoreColors+'
    ';FCKTools.AddEventListenerEx(C,'click',FCKTextColorCommand_MoreOnClick,this);};if (!FCKBrowserInfo.IsIE) C.style.width='96%';}; +var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){if (FCK.EditMode!=0) return -1;return FCK.GetNamedCommandState('Paste');}; +var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCK.EditMode!=0||FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');}; +var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();if (!FCKBrowserInfo.IsGecko){switch (this.Name){case 'TableMergeRight':return FCKTableHandler.MergeRight();case 'TableMergeDown':return FCKTableHandler.MergeDown();}};switch (this.Name){case 'TableInsertRowAfter':return FCKTableHandler.InsertRow(false);case 'TableInsertRowBefore':return FCKTableHandler.InsertRow(true);case 'TableDeleteRows':return FCKTableHandler.DeleteRows();case 'TableInsertColumnAfter':return FCKTableHandler.InsertColumn(false);case 'TableInsertColumnBefore':return FCKTableHandler.InsertColumn(true);case 'TableDeleteColumns':return FCKTableHandler.DeleteColumns();case 'TableInsertCellAfter':return FCKTableHandler.InsertCell(null,false);case 'TableInsertCellBefore':return FCKTableHandler.InsertCell(null,true);case 'TableDeleteCells':return FCKTableHandler.DeleteCells();case 'TableMergeCells':return FCKTableHandler.MergeCells();case 'TableHorizontalSplitCell':return FCKTableHandler.HorizontalSplitCell();case 'TableVerticalSplitCell':return FCKTableHandler.VerticalSplitCell();case 'TableDelete':return FCKTableHandler.DeleteTable();default:return alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){if (FCK.EditorDocument!=null&&FCKSelection.HasAncestorNode('TABLE')){switch (this.Name){case 'TableHorizontalSplitCell':case 'TableVerticalSplitCell':if (FCKTableHandler.GetSelectedCells().length==1) return 0;else return -1;case 'TableMergeCells':if (FCKTableHandler.CheckIsSelectionRectangular()&&FCKTableHandler.GetSelectedCells().length>1) return 0;else return -1;case 'TableMergeRight':return FCKTableHandler.GetMergeRightTarget()?0:-1;case 'TableMergeDown':return FCKTableHandler.GetMergeDownTarget()?0:-1;default:return 0;}}else return -1;}; +var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;var G;var H=new FCKDomRange(FCK.EditorWindow);H.MoveToSelection();var I=FCKTools.GetScrollPosition(FCK.EditorWindow);if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);G=A;while((G=G.parentNode)){if (G.nodeType==1){G._fckSavedStyles=FCKTools.SaveStyles(G);G.style.zIndex=FCKConfig.FloatingPanelsZIndex-1;}};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var J=FCKTools.GetViewPaneSize(C);B.position="absolute";A.offsetLeft;B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=J.Width+"px";B.height=J.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);var K=FCKTools.GetWindowPosition(C,A);if (K.x!=0) B.left=(-1*K.x)+"px";if (K.y!=0) B.top=(-1*K.y)+"px";this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);G=A;while((G=G.parentNode)){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();if (FCK.EditMode==0) FCK.EditingArea.MakeEditable();FCK.Focus();H.Select();FCK.EditorWindow.scrollTo(I.X,I.Y);};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return -1;else return (this.IsMaximized?1:0);};function FCKFitWindow_Resize(){var A=FCKTools.GetViewPaneSize(parent);var B=window.frameElement.style;B.width=A.Width+'px';B.height=A.Height+'px';}; +var FCKListCommand=function(A,B){this.Name=A;this.TagName=B;};FCKListCommand.prototype={GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=FCKSelection.GetBoundaryParentElement(true);var B=A;while (B){if (B.nodeName.IEquals(['ul','ol'])) break;B=B.parentNode;};if (B&&B.nodeName.IEquals(this.TagName)) return 1;else return 0;},Execute:function(){FCKUndo.SaveUndoStep();var A=FCK.EditorDocument;var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=this.GetState();if (C==0){FCKDomTools.TrimNode(A.body);if (!A.body.firstChild){var D=A.createElement('p');A.body.appendChild(D);B.MoveToNodeContents(D);}};var E=B.CreateBookmark();var F=[];var G={};var H=new FCKDomRangeIterator(B);var I;H.ForceBrBreak=(C==0);var J=true;var K=null;while (J){while ((I=H.GetNextParagraph())){var L=new FCKElementPath(I);var M=null;var N=false;var O=L.BlockLimit;for (var i=L.Elements.length-1;i>=0;i--){var P=L.Elements[i];if (P.nodeName.IEquals(['ol','ul'])){if (O._FCK_ListGroupObject) O._FCK_ListGroupObject=null;var Q=P._FCK_ListGroupObject;if (Q) Q.contents.push(I);else{Q={ 'root':P,'contents':[I] };F.push(Q);FCKDomTools.SetElementMarker(G,P,'_FCK_ListGroupObject',Q);};N=true;break;}};if (N) continue;var R=O;if (R._FCK_ListGroupObject) R._FCK_ListGroupObject.contents.push(I);else{var Q={ 'root':R,'contents':[I] };FCKDomTools.SetElementMarker(G,R,'_FCK_ListGroupObject',Q);F.push(Q);}};if (FCKBrowserInfo.IsIE) J=false;else{if (K==null){K=[];var T=FCKSelection.GetSelection();if (T&&F.length==0) K.push(T.getRangeAt(0));for (var i=1;T&&i0){var Q=F.shift();if (C==0){if (Q.root.nodeName.IEquals(['ul','ol'])) this._ChangeListType(Q,G,W);else this._CreateList(Q,W);}else if (C==1&&Q.root.nodeName.IEquals(['ul','ol'])) this._RemoveList(Q,G);};for (var i=0;iC[i-1].indent+1){var H=C[i-1].indent+1-C[i].indent;var I=C[i].indent;while (C[i]&&C[i].indent>=I){C[i].indent+=H;i++;};i--;}};var J=FCKDomTools.ArrayToList(C,B);if (A.root.nextSibling==null||A.root.nextSibling.nodeName.IEquals('br')){if (J.listNode.lastChild.nodeName.IEquals('br')) J.listNode.removeChild(J.listNode.lastChild);};A.root.parentNode.replaceChild(J.listNode,A.root);}}; +var FCKJustifyCommand=function(A){this.AlignValue=A;var B=FCKConfig.ContentLangDirection.toLowerCase();this.IsDefaultAlign=(A=='left'&&B=='ltr')||(A=='right'&&B=='rtl');var C=this._CssClassName=(function(){var D=FCKConfig.JustifyClasses;if (D){switch (A){case 'left':return D[0]||null;case 'center':return D[1]||null;case 'right':return D[2]||null;case 'justify':return D[3]||null;}};return null;})();if (C&&C.length>0) this._CssClassRegex=new RegExp('(?:^|\\s+)'+C+'(?=$|\\s)');};FCKJustifyCommand._GetClassNameRegex=function(){var A=FCKJustifyCommand._ClassRegex;if (A!=undefined) return A;var B=[];var C=FCKConfig.JustifyClasses;if (C){for (var i=0;i<4;i++){var D=C[i];if (D&&D.length>0) B.push(D);}};if (B.length>0) A=new RegExp('(?:^|\\s+)(?:'+B.join('|')+')(?=$|\\s)');else A=null;return FCKJustifyCommand._ClassRegex=A;};FCKJustifyCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=new FCKDomRange(FCK.EditorWindow);A.MoveToSelection();var B=this.GetState();if (B==-1) return;var C=A.CreateBookmark();var D=this._CssClassName;var E=new FCKDomRangeIterator(A);var F;while ((F=E.GetNextParagraph())){F.removeAttribute('align');if (D){var G=F.className.replace(FCKJustifyCommand._GetClassNameRegex(),'');if (B==0){if (G.length>0) G+=' ';F.className=G+D;}else if (G.length==0) FCKDomTools.RemoveAttribute(F,'class');}else{var H=F.style;if (B==0) H.textAlign=this.AlignValue;else{H.textAlign='';if (H.cssText.length==0) F.removeAttribute('style');}}};A.MoveToBookmark(C);A.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;var C;if (FCKBrowserInfo.IsIE) C=B.currentStyle.textAlign;else C=FCK.EditorWindow.getComputedStyle(B,'').getPropertyValue('text-align');C=C.replace(/(-moz-|-webkit-|start|auto)/i,'');if ((!C&&this.IsDefaultAlign)||C==this.AlignValue) return 1;return 0;}}; +var FCKIndentCommand=function(A,B){this.Name=A;this.Offset=B;this.IndentCSSProperty=FCKConfig.ContentLangDirection.IEquals('ltr')?'marginLeft':'marginRight';};FCKIndentCommand._InitIndentModeParameters=function(){if (FCKConfig.IndentClasses&&FCKConfig.IndentClasses.length>0){this._UseIndentClasses=true;this._IndentClassMap={};for (var i=0;i0?H+' ':'')+FCKConfig.IndentClasses[G-1];}else{var I=parseInt(E.style[this.IndentCSSProperty],10);if (isNaN(I)) I=0;I+=this.Offset;I=Math.max(I,0);I=Math.ceil(I/this.Offset)*this.Offset;E.style[this.IndentCSSProperty]=I?I+FCKConfig.IndentUnit:'';if (E.getAttribute('style')=='') E.removeAttribute('style');}}},_IndentList:function(A,B){var C=A.StartContainer;var D=A.EndContainer;while (C&&C.parentNode!=B) C=C.parentNode;while (D&&D.parentNode!=B) D=D.parentNode;if (!C||!D) return;var E=C;var F=[];var G=false;while (G==false){if (E==D) G=true;F.push(E);E=E.nextSibling;};if (F.length<1) return;var H=FCKDomTools.GetParents(B);for (var i=0;iN;i++) M[i].indent+=I;var O=FCKDomTools.ArrayToList(M);if (O) B.parentNode.replaceChild(O.listNode,B);FCKDomTools.ClearAllMarkers(L);}}; +var FCKBlockQuoteCommand=function(){};FCKBlockQuoteCommand.prototype={Execute:function(){FCKUndo.SaveUndoStep();var A=this.GetState();var B=new FCKDomRange(FCK.EditorWindow);B.MoveToSelection();var C=B.CreateBookmark();if (FCKBrowserInfo.IsIE){var D=B.GetBookmarkNode(C,true);var E=B.GetBookmarkNode(C,false);var F;if (D&&D.parentNode.nodeName.IEquals('blockquote')&&!D.previousSibling){F=D;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]) FCKDomTools.MoveNode(D,F,true);}};if (E&&E.parentNode.nodeName.IEquals('blockquote')&&!E.previousSibling){F=E;while ((F=F.nextSibling)){if (FCKListsLib.BlockElements[F.nodeName.toLowerCase()]){if (F.firstChild==D) FCKDomTools.InsertAfterNode(D,E);else FCKDomTools.MoveNode(E,F,true);}}}};var G=new FCKDomRangeIterator(B);var H;if (A==0){G.EnforceRealBlocks=true;var I=[];while ((H=G.GetNextParagraph())) I.push(H);if (I.length<1){para=B.Window.document.createElement(FCKConfig.EnterMode.IEquals('p')?'p':'div');B.InsertNode(para);para.appendChild(B.Window.document.createTextNode('\ufeff'));B.MoveToBookmark(C);B.MoveToNodeContents(para);B.Collapse(true);C=B.CreateBookmark();I.push(para);};var J=I[0].parentNode;var K=[];for (var i=0;i0){H=I.shift();while (H.parentNode!=J) H=H.parentNode;if (H!=L) K.push(H);L=H;}while (K.length>0){H=K.shift();if (H.nodeName.IEquals('blockquote')){var M=FCKTools.GetElementDocument(H).createDocumentFragment();while (H.firstChild){M.appendChild(H.removeChild(H.firstChild));I.push(M.lastChild);};H.parentNode.replaceChild(M,H);}else I.push(H);};var N=B.Window.document.createElement('blockquote');J.insertBefore(N,I[0]);while (I.length>0){H=I.shift();N.appendChild(H);}}else if (A==1){var O=[];while ((H=G.GetNextParagraph())){var P=null;var Q=null;while (H.parentNode){if (H.parentNode.nodeName.IEquals('blockquote')){P=H.parentNode;Q=H;break;};H=H.parentNode;};if (P&&Q) O.push(Q);};var R=[];while (O.length>0){var S=O.shift();var N=S.parentNode;if (S==S.parentNode.firstChild){N.parentNode.insertBefore(N.removeChild(S),N);if (!N.firstChild) N.parentNode.removeChild(N);}else if (S==S.parentNode.lastChild){N.parentNode.insertBefore(N.removeChild(S),N.nextSibling);if (!N.firstChild) N.parentNode.removeChild(N);}else FCKDomTools.BreakParent(S,S.parentNode,B);R.push(S);};if (FCKConfig.EnterMode.IEquals('br')){while (R.length){var S=R.shift();var W=true;if (S.nodeName.IEquals('div')){var M=FCKTools.GetElementDocument(S).createDocumentFragment();var Y=W&&S.previousSibling&&!FCKListsLib.BlockBoundaries[S.previousSibling.nodeName.toLowerCase()];if (W&&Y) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));var Z=S.nextSibling&&!FCKListsLib.BlockBoundaries[S.nextSibling.nodeName.toLowerCase()];while (S.firstChild) M.appendChild(S.removeChild(S.firstChild));if (Z) M.appendChild(FCKTools.GetElementDocument(S).createElement('br'));S.parentNode.replaceChild(M,S);W=false;}}}};B.MoveToBookmark(C);B.Select();FCK.Focus();FCK.Events.FireEvent('OnSelectionChange');},GetState:function(){if (FCK.EditMode!=0||!FCK.EditorWindow) return -1;var A=new FCKElementPath(FCKSelection.GetBoundaryParentElement(true));var B=A.Block||A.BlockLimit;if (!B||B.nodeName.toLowerCase()=='body') return 0;for (var i=0;i';B.open();B.write(''+F+'<\/head><\/body><\/html>');B.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.Panel_Contructor(B,window.document.location);FCKTools.AddEventListenerEx(E,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(E,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;FCKTools.AddEventListener(B,'contextmenu',FCKTools.CancelEvent);this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;var E=this.MainNode;if (this._Popup){this._Popup.show(x,y,0,0,A);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,E.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCK.ToolbarSet.CurrentInstance.FocusManager)!='undefined') FCK.ToolbarSet.CurrentInstance.FocusManager.Lock();if (this.ParentPanel){this.ParentPanel.Lock();FCKPanel_Window_OnBlur(null,this.ParentPanel);};if (FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac){this._IFrame.scrolling='';FCKTools.RunFunction(function(){ this._IFrame.scrolling='no';},this);};if (FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel&&FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel!=this) FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel.Hide(false,true);FCKDomTools.SetElementStyles(E,{B:B?B+'px':'',C:C?C+'px':''});D=E.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=E.offsetWidth||E.firstChild.offsetWidth;var F=FCKTools.GetDocumentPosition(this._Window,A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A);var G=FCKDomTools.GetPositionedAncestor(this._IFrame.parentNode);if (G){var H=FCKTools.GetDocumentPosition(FCKTools.GetElementWindow(G),G);F.x-=H.x;F.y-=H.y;};if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.x;y+=F.y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var I=FCKTools.GetViewPaneSize(this._Window);var J=FCKTools.GetScrollPosition(this._Window);var K=I.Height+J.Y;var L=I.Width+J.X;if ((x+D)>L) x-=x+D-L;if ((y+E.offsetHeight)>K) y-=y+E.offsetHeight-K;};FCKDomTools.SetElementStyles(this._IFrame,{left:x+'px',top:y+'px'});this._IFrame.contentWindow.focus();this._IsOpened=true;var M=this;this._resizeTimer=setTimeout(function(){var N=E.offsetWidth||E.firstChild.offsetWidth;var O=E.offsetHeight;M._IFrame.style.width=N+'px';M._IFrame.style.height=O+'px';},0);FCK.ToolbarSet.CurrentInstance.GetInstanceObject('FCKPanel')._OpenedPanel=this;};FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A,B){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened||this._LockCounter>0) return;if (typeof(FCKFocusManager)!='undefined'&&!B) FCKFocusManager.Unlock();this._IFrame.style.width=this._IFrame.style.height='0px';this._IsOpened=false;if (this._resizeTimer){clearTimeout(this._resizeTimer);this._resizeTimer=null;};if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;}; +var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url("'+this.Path+'")';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;}; +var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this.MainElement=B.createElement('DIV');C.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) C.onmousedown=FCKTools.CancelEvent;FCKTools.AddEventListenerEx(C,'mouseover',FCKToolbarButtonUI_OnMouseOver,this);FCKTools.AddEventListenerEx(C,'mouseout',FCKToolbarButtonUI_OnMouseOut,this);FCKTools.AddEventListenerEx(C,'click',FCKToolbarButtonUI_OnClick,this);this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){C.appendChild(this.Icon.CreateIconElement(B));}else{var D=C.appendChild(B.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(B));else F.appendChild(this._CreatePaddingElement(B));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(B.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(B));};F=E.insertCell(-1);var G=F.appendChild(B.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(B));};A.appendChild(C);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;if (!e) return;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';break;case 1:e.className='TB_Button_On';break;case -1:e.className='TB_Button_Disabled';break;};this.State=A;};function FCKToolbarButtonUI_OnMouseOver(A,B){if (B.State==0) this.className='TB_Button_Off_Over';else if (B.State==1) this.className='TB_Button_On_Over';};function FCKToolbarButtonUI_OnMouseOut(A,B){if (B.State==0) this.className='TB_Button_Off';else if (B.State==1) this.className='TB_Button_On';};function FCKToolbarButtonUI_OnClick(A,B){if (B.OnClick&&B.State!=-1) B.OnClick(B);};function FCKToolbarButtonUI_Cleanup(){this.MainElement=null;}; +var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];else this.IconPath=G;};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=this._UIButton;if (!A) return;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B==A.State) return;A.ChangeState(B);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);}; +var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label=' ';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinEditorCSS);this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='
    ';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(A,B,C){this.className=this.originalClass;B._Panel.Hide();B.SetLabel(this.FCKItemLabel);if (typeof(B.OnSelect)=='function') B.OnSelect(C,this);};FCKSpecialCombo.prototype.ClearItems=function (){if (this.Items) this.Items={};var A=this._ItemsHolderEl;while (A.firstChild) A.removeChild(A.firstChild);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemLabel=C||A;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;FCKTools.AddEventListenerEx(E,'mouseover',FCKSpecialCombo_ItemOnMouseOver);FCKTools.AddEventListenerEx(E,'mouseout',FCKSpecialCombo_ItemOnMouseOut);FCKTools.AddEventListenerEx(E,'click',FCKSpecialCombo_ItemOnClick,[this,A]);this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){if (typeof A=='string') A=this.Items[A.toString().toLowerCase()];if (A){A.className=A.originalClass='SC_ItemSelected';A.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){if (!this.Items[i]) continue;this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){A=(!A||A.length==0)?' ':A;if (A==this.Label) return;this.Label=A;var B=this._LabelEl;if (B){B.innerHTML=A;FCKTools.DisableSelection(B);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;if (this._OuterTable) this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='
     
    ';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='
    '+this.Caption+'
    ';};FCKTools.AddEventListenerEx(G,'mouseover',FCKSpecialCombo_OnMouseOver,this);FCKTools.AddEventListenerEx(G,'mouseout',FCKSpecialCombo_OnMouseOut,this);FCKTools.AddEventListenerEx(G,'click',FCKSpecialCombo_OnClick,this);FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(A,B){if (B.Enabled){switch (B.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(A,B){switch (B.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e,A){if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}}; +var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this.FieldWidth=null;this.PanelWidth=null;this.PanelMaxHeight=null;};FCKToolbarSpecialCombo.prototype.DefaultLabel='';function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!==B){this._LastValue=B;if (!B||B.length==0){this._Combo.DeselectAll();this._Combo.SetLabel(this.DefaultLabel);}else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}; +var FCKToolbarStyleCombo=function(A,B){if (A===false) return;this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.DefaultLabel=FCKConfig.DefaultStyleLabel||'';};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.GetStyles=function(){var A={};var B=FCK.ToolbarSet.CurrentInstance.Styles.GetStyles();for (var C in B){var D=B[C];if (!D.IsCore) A[C]=D;};return A;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);FCKTools.AppendStyleString(B,FCKConfig.EditorAreaStyles);B.body.className+=' ForceBaseFont';FCKConfig.ApplyBodyAttributes(B.body);var C=this.GetStyles();for (var D in C){var E=C[D];var F=E.GetType()==2?D:FCKToolbarStyleCombo_BuildPreview(E,E.Label||D);var G=A.AddItem(D,F);G.Style=E;};A.OnBeforeClick=this.StyleCombo_OnBeforeClick;};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){var B=FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement(true);if (B){var C=new FCKElementPath(B);var D=C.Elements;for (var e=0;e');var E=A.Element;if (E=='bdo') E='span';D=['<',E];var F=A._StyleDesc.Attributes;if (F){for (var G in F){D.push(' ',G,'="',A.GetFinalAttributeValue(G),'"');}};if (A._GetStyleText().length>0) D.push(' style="',A.GetFinalStyleValue(),'"');D.push('>',B,'');if (C==0) D.push('');return D.join('');}; +var FCKToolbarFontFormatCombo=function(A,B){if (A===false) return;this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;this.DefaultLabel=FCKConfig.DefaultFontFormatLabel||'';};FCKToolbarFontFormatCombo.prototype=new FCKToolbarStyleCombo(false);FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.GetStyles=function(){var A={};var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]||(B[0]+' (DIV)')};var D=FCKConfig.FontFormats.split(';');for (var i=0;i';G.open();G.write(''+H+''+document.getElementById('xToolbarSpace').innerHTML+'');G.close();if(FCKBrowserInfo.IsAIR) FCKAdobeAIR.ToolbarSet_InitOutFrame(G);FCKTools.AddEventListener(G,'contextmenu',FCKTools.CancelEvent);FCKTools.AppendStyleSheet(G,FCKConfig.SkinEditorCSS);B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;if (!B.ToolbarItems) B.ToolbarItems=FCKToolbarItems;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;FCKTools.AddEventListener(B,'click',FCKToolbarSet_Expand_OnClick);C.title=FCKLang.ToolbarCollapse;FCKTools.AddEventListener(C,'click',FCKToolbarSet_Collapse_OnClick);if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x0) break;}catch (e){break;};D=D.parent;};var E=D.document;var F=function(){if (!B) B=FCKConfig.FloatingPanelsZIndex+999;return++B;};var G=function(){if (!C) return;var H=FCKTools.IsStrictMode(E)?E.documentElement:E.body;FCKDomTools.SetElementStyles(C,{'width':Math.max(H.scrollWidth,H.clientWidth,E.scrollWidth||0)-1+'px','height':Math.max(H.scrollHeight,H.clientHeight,E.scrollHeight||0)-1+'px'});};return {OpenDialog:function(dialogName,dialogTitle,dialogPage,width,height,customValue,parentWindow,resizable){if (!A) this.DisplayMainCover();var I={Title:dialogTitle,Page:dialogPage,Editor:window,CustomValue:customValue,TopWindow:D};FCK.ToolbarSet.CurrentInstance.Selection.Save();var J=FCKTools.GetViewPaneSize(D);var K={ 'X':0,'Y':0 };var L=FCKBrowserInfo.IsIE&&(!FCKBrowserInfo.IsIE7||!FCKTools.IsStrictMode(D.document));if (L) K=FCKTools.GetScrollPosition(D);var M=Math.max(K.Y+(J.Height-height-20)/2,0);var N=Math.max(K.X+(J.Width-width-20)/2,0);var O=E.createElement('iframe');FCKTools.ResetStyles(O);O.src=FCKConfig.BasePath+'fckdialog.html';O.frameBorder=0;O.allowTransparency=true;FCKDomTools.SetElementStyles(O,{'position':(L)?'absolute':'fixed','top':M+'px','left':N+'px','width':width+'px','height':height+'px','zIndex':F()});O._DialogArguments=I;E.body.appendChild(O);O._ParentDialog=A;A=O;},OnDialogClose:function(dialogWindow){var O=dialogWindow.frameElement;FCKDomTools.RemoveNode(O);if (O._ParentDialog){A=O._ParentDialog;O._ParentDialog.contentWindow.SetEnabled(true);}else{if (!FCKBrowserInfo.IsIE) FCK.Focus();this.HideMainCover();setTimeout(function(){ A=null;},0);FCK.ToolbarSet.CurrentInstance.Selection.Release();}},DisplayMainCover:function(){C=E.createElement('div');FCKTools.ResetStyles(C);FCKDomTools.SetElementStyles(C,{'position':'absolute','zIndex':F(),'top':'0px','left':'0px','backgroundColor':FCKConfig.BackgroundBlockerColor});FCKDomTools.SetOpacity(C,FCKConfig.BackgroundBlockerOpacity);if (FCKBrowserInfo.IsIE&&!FCKBrowserInfo.IsIE7){var Q=E.createElement('iframe');FCKTools.ResetStyles(Q);Q.hideFocus=true;Q.frameBorder=0;Q.src=FCKTools.GetVoidUrl();FCKDomTools.SetElementStyles(Q,{'width':'100%','height':'100%','position':'absolute','left':'0px','top':'0px','filter':'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'});C.appendChild(Q);};FCKTools.AddEventListener(D,'resize',G);G();E.body.appendChild(C);FCKFocusManager.Lock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R._fck_originalTabIndex=R.tabIndex;R.tabIndex=-1;},HideMainCover:function(){FCKDomTools.RemoveNode(C);FCKFocusManager.Unlock();var R=FCK.ToolbarSet.CurrentInstance.GetInstanceObject('frameElement');R.tabIndex=R._fck_originalTabIndex;FCKDomTools.ClearElementJSProperty(R,'_fck_originalTabIndex');},GetCover:function(){return C;}};})(); +var FCKMenuItem=function(A,B,C,D,E,F){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);this.CustomData=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D,E){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D,E);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};function FCKMenuItem_SubMenu_OnClick(A,B){FCKTools.RunFunction(B.OnClick,B,[A]);};function FCKMenuItem_SubMenu_OnHide(A){A.Deactivate();};function FCKMenuItem_OnClick(A,B){if (B.HasSubMenu) B.Activate();else{B.Deactivate();FCKTools.RunFunction(B.OnClick,B,[B]);}};function FCKMenuItem_OnMouseOver(A,B){B.Activate();};function FCKMenuItem_OnMouseOut(A,B){B.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}; +var FCKMenuBlock=function(){this._Items=[];};FCKMenuBlock.prototype.Count=function(){return this._Items.length;};FCKMenuBlock.prototype.AddItem=function(A,B,C,D,E){var F=new FCKMenuItem(this,A,B,C,D,E);F.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);F.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(F);return F;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=[];var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i0&&F.href.length==0);if (G) return;menu.AddSeparator();menu.AddItem('VisitLink',FCKLang.VisitLink);menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);menu.AddItem('AnchorDelete',FCKLang.AnchorDelete);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};case 'DivContainer':return {AddItems:function(menu,tag,tagName){var J=FCKDomTools.GetSelectedDivContainers();if (J.length>0){menu.AddSeparator();menu.AddItem('EditDiv',FCKLang.EditDiv,75);menu.AddItem('DeleteDiv',FCKLang.DeleteDiv,76);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}};var FCKHtmlIterator=function(A){this._sourceHtml=A;};FCKHtmlIterator.prototype={Next:function(){var A=this._sourceHtml;if (A==null) return null;var B=FCKRegexLib.HtmlTag.exec(A);var C=false;var D="";if (B){if (B.index>0){D=A.substr(0,B.index);this._sourceHtml=A.substr(B.index);}else{C=true;D=B[0];this._sourceHtml=A.substr(B[0].length);}}else{D=A;this._sourceHtml=null;};return { 'isTag':C,'value':D };},Each:function(A){var B;while ((B=this.Next())) A(B.isTag,B.value);}}; +var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=[];else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}; +var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Geen plekhouers beskikbaar in dokument}", DlgLnkEMail : "E-Mail Adres", DlgLnkEMailSubject : "Boodskap Opskrif", DlgLnkEMailBody : "Boodskap Inhoud", @@ -322,6 +336,9 @@ DlgCellBackColor : "Agtergrond Kleur", DlgCellBorderColor : "Kant Kleur", DlgCellBtnSelect : "Keuse...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Vind", DlgFindFindBtn : "Vind", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Voeg asseblief die inhoud in die gegewe box by met sleutel kombe DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Ignoreer karakter soort defenisies", DlgPasteRemoveStyles : "Verweider Styl defenisies", -DlgPasteCleanBox : "Maak Box Skoon", // Color Picker ColorAutomatic : "Automaties", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Meer oor", DlgAboutBrowserInfoTab : "Blaai Informasie deur", DlgAboutLicenseTab : "Lesensie", DlgAboutVersion : "weergawe", -DlgAboutInfo : "Vir meer informasie gaan na " -}; \ No newline at end of file +DlgAboutInfo : "Vir meer informasie gaan na ", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/ar.js b/static/contrib/fckeditor-2.6.3/editor/lang/ar.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/ar.js rename to static/contrib/fckeditor-2.6.3/editor/lang/ar.js index 91d34f1..f417bfd --- a/static/fckeditor/editor/lang/ar.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/ar.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "إزالة التنسيقات", InsertLinkLbl : "رابط", InsertLink : "إدراج/تحرير رابط", RemoveLink : "إزالة رابط", +VisitLink : "Open Link", //MISSING Anchor : "إدراج/تحرير إشارة مرجعية", +AnchorDelete : "إزالة إشارة مرجعية", InsertImageLbl : "صورة", InsertImage : "إدراج/تحرير صورة", InsertFlashLbl : "فلاش", @@ -70,6 +72,10 @@ RightJustify : "محاذاة إلى اليمين", BlockJustify : "ضبط", DecreaseIndent : "إنقاص المسافة البادئة", IncreaseIndent : "زيادة المسافة البادئة", +Blockquote : "اقتباس", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "تراجع", Redo : "إعادة", NumberedListLbl : "تعداد رقمي", @@ -103,20 +109,27 @@ SelectionField : "قائمة منسدلة", ImageButton : "زر صورة", FitWindow : "تكبير حجم المحرر", +ShowBlocks : "مخطط تفصيلي", // Context Menu EditLink : "تحرير رابط", CellCM : "خلية", RowCM : "صف", ColumnCM : "عمود", -InsertRow : "إدراج صف", +InsertRowAfter : "إدراج صف بعد", +InsertRowBefore : "إدراج صف قبل", DeleteRows : "حذف صفوف", -InsertColumn : "إدراج عمود", +InsertColumnAfter : "إدراج عمود بعد", +InsertColumnBefore : "إدراج عمود قبل", DeleteColumns : "حذف أعمدة", -InsertCell : "إدراج خلية", +InsertCellAfter : "إدراج خلية بعد", +InsertCellBefore : "إدراج خلية قبل", DeleteCells : "حذف خلايا", MergeCells : "دمج خلايا", -SplitCell : "تقسيم خلية", +MergeRight : "دمج لليمين", +MergeDown : "دمج للأسفل", +HorizontalSplitCell : "تقسيم الخلية أفقياً", +VerticalSplitCell : "تقسيم الخلية عمودياً", TableDelete : "حذف الجدول", CellProperties : "خصائص الخلية", TableProperties : "خصائص الجدول", @@ -134,7 +147,7 @@ SelectionFieldProp : "خصائص القائمة المنسدلة", TextareaProp : "خصائص ناحية النص", FormProp : "خصائص النموذج", -FontFormats : "عادي;منسّق;دوس;العنوان 1;العنوان 2;العنوان 3;العنوان 4;العنوان 5;العنوان 6", //REVIEW : Check _getfontformat.html +FontFormats : "عادي;منسّق;دوس;العنوان 1;العنوان 2;العنوان 3;العنوان 4;العنوان 5;العنوان 6", // Alerts and Messages ProcessingXHTML : "إنتظر قليلاً ريثما تتم معالَجة‏ XHTML. لن يستغرق طويلاً...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "لم أتمكن من العثور على طقم الأدو NoActiveX : "لتأمين متصفحك يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات مفقودة", BrowseServerBlocked : "لايمكن فتح مصدر المتصفح. فضلا يجب التأكد بأن جميع موانع النوافذ المنبثقة معطلة", DialogBlocked : "لايمكن فتح نافذة الحوار . فضلا تأكد من أن مانع النوافذ المنبثة معطل .", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "موافق", @@ -229,7 +243,7 @@ DlgLnkURL : "الموقع", DlgLnkAnchorSel : "اختر علامة مرجعية", DlgLnkAnchorByName : "حسب اسم العلامة", DlgLnkAnchorById : "حسب تعريف العنصر", -DlgLnkNoAnchors : "<لا يوجد علامات مرجعية في هذا المستند>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(لا يوجد علامات مرجعية في هذا المستند)", DlgLnkEMail : "عنوان بريد إلكتروني", DlgLnkEMailSubject : "موضوع الرسالة", DlgLnkEMailBody : "محتوى الرسالة", @@ -322,6 +336,9 @@ DlgCellBackColor : "لون الخلفية", DlgCellBorderColor : "لون الحدود", DlgCellBtnSelect : "حدّد...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "بحث واستبدال", + // Find Dialog DlgFindTitle : "بحث", DlgFindFindBtn : "ابحث", @@ -344,10 +361,9 @@ PasteAsText : "لصق كنص بسيط", PasteFromWord : "لصق من وورد", DlgPasteMsg2 : "الصق داخل الصندوق بإستخدام زرّي (Ctrl+V) في لوحة المفاتيح، ثم اضغط زر موافق.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذا وجب عليك لصق المحتوى مرة أخرى في هذه النافذة.", DlgPasteIgnoreFont : "تجاهل تعريفات أسماء الخطوط", DlgPasteRemoveStyles : "إزالة تعريفات الأنماط", -DlgPasteCleanBox : "نظّف محتوى الصندوق", // Color Picker ColorAutomatic : "تلقائي", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "نبذة", DlgAboutBrowserInfoTab : "معلومات متصفحك", DlgAboutLicenseTab : "الترخيص", DlgAboutVersion : "الإصدار", -DlgAboutInfo : "لمزيد من المعلومات تفضل بزيارة" -}; \ No newline at end of file +DlgAboutInfo : "لمزيد من المعلومات تفضل بزيارة", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/bg.js b/static/contrib/fckeditor-2.6.3/editor/lang/bg.js old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/editor/lang/bg.js rename to static/contrib/fckeditor-2.6.3/editor/lang/bg.js index 423bd02..6c6f8b1 --- a/static/fckeditor/editor/lang/bg.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/bg.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Изтрий форматирането", InsertLinkLbl : "Връзка", InsertLink : "Добави/Редактирай връзка", RemoveLink : "Изтрий връзка", +VisitLink : "Open Link", //MISSING Anchor : "Добави/Редактирай котва", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Изображение", InsertImage : "Добави/Редактирай изображение", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Подравняване в дясно", BlockJustify : "Двустранно подравняване", DecreaseIndent : "Намали отстъпа", IncreaseIndent : "Увеличи отстъпа", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Отмени", Redo : "Повтори", NumberedListLbl : "Нумериран списък", @@ -103,20 +109,27 @@ SelectionField : "Падащо меню с опции", ImageButton : "Бутон-изображение", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Редактирай връзка", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Добави ред", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Изтрий редовете", -InsertColumn : "Добави колона", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Изтрий колоните", -InsertCell : "Добави клетка", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Изтрий клетките", MergeCells : "Обедини клетките", -SplitCell : "Раздели клетката", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Изтрий таблицата", CellProperties : "Параметри на клетката", TableProperties : "Параметри на таблицата", @@ -134,7 +147,7 @@ SelectionFieldProp : "Параметри на падащото меню с оп TextareaProp : "Параметри на текстовата област", FormProp : "Параметри на формуляра", -FontFormats : "Нормален;Форматиран;Адрес;Заглавие 1;Заглавие 2;Заглавие 3;Заглавие 4;Заглавие 5;Заглавие 6;Параграф (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Нормален;Форматиран;Адрес;Заглавие 1;Заглавие 2;Заглавие 3;Заглавие 4;Заглавие 5;Заглавие 6;Параграф (DIV)", // Alerts and Messages ProcessingXHTML : "Обработка на XHTML. Моля изчакайте...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Панелът \"%1\" не съществува", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "ОК", @@ -229,7 +243,7 @@ DlgLnkURL : "Пълен път (URL)", DlgLnkAnchorSel : "Изберете котва", DlgLnkAnchorByName : "По име на котвата", DlgLnkAnchorById : "По идентификатор на елемент", -DlgLnkNoAnchors : "<Няма котви в текущия документ>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Няма котви в текущия документ)", DlgLnkEMail : "Адрес за е-поща", DlgLnkEMailSubject : "Тема на писмото", DlgLnkEMailBody : "Текст на писмото", @@ -322,6 +336,9 @@ DlgCellBackColor : "фонов цвят", DlgCellBorderColor : "цвят на рамката", DlgCellBtnSelect : "Изберете...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Търси", DlgFindFindBtn : "Търси", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Вмъкнете тук съдъжанието с клавиат DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Игнорирай шрифтовите дефиниции", DlgPasteRemoveStyles : "Изтрий стиловите дефиниции", -DlgPasteCleanBox : "Изчисти", // Color Picker ColorAutomatic : "По подразбиране", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "За", DlgAboutBrowserInfoTab : "Информация за браузъра", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "версия", -DlgAboutInfo : "За повече информация посетете" -}; \ No newline at end of file +DlgAboutInfo : "За повече информация посетете", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/bn.js b/static/contrib/fckeditor-2.6.3/editor/lang/bn.js old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/lang/bn.js rename to static/contrib/fckeditor-2.6.3/editor/lang/bn.js index 8f76754..173182e --- a/static/fckeditor/editor/lang/bn.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/bn.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "ফরমেট সরাও", InsertLinkLbl : "লিংকের যুক্ত করার লেবেল", InsertLink : "লিংক যুক্ত কর", RemoveLink : "লিংক সরাও", +VisitLink : "Open Link", //MISSING Anchor : "নোঙ্গর", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "ছবির লেবেল যুক্ত কর", InsertImage : "ছবি যুক্ত কর", InsertFlashLbl : "ফ্লাশ লেবেল যুক্ত কর", @@ -70,6 +72,10 @@ RightJustify : "ডান দিকে ঘেঁষা", BlockJustify : "ব্লক জাস্টিফাই", DecreaseIndent : "ইনডেন্ট কমাও", IncreaseIndent : "ইনডেন্ট বাড়াও", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "আনডু", Redo : "রি-ডু", NumberedListLbl : "সাংখ্যিক লিস্টের লেবেল", @@ -103,20 +109,27 @@ SelectionField : "বাছাই ফীল্ড", ImageButton : "ছবির বাটন", FitWindow : "উইন্ডো ফিট কর", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "লিংক সম্পাদন", CellCM : "সেল", RowCM : "রো", ColumnCM : "কলাম", -InsertRow : "রো যুক্ত কর", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "রো মুছে দাও", -InsertColumn : "কলাম যুক্ত কর", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "কলাম মুছে দাও", -InsertCell : "সেল যুক্ত কর", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "সেল মুছে দাও", MergeCells : "সেল জোড়া দাও", -SplitCell : "সেল আলাদা কর", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "টেবিল ডিলীট কর", CellProperties : "সেলের প্রোপার্টিজ", TableProperties : "টেবিল প্রোপার্টি", @@ -134,7 +147,7 @@ SelectionFieldProp : "বাছাই ফীল্ড প্রোপার্ TextareaProp : "টেক্সট এরিয়া প্রোপার্টি", FormProp : "ফর্ম প্রোপার্টি", -FontFormats : "সাধারণ;ফর্মেটেড;ঠিকানা;শীর্ষক ১;শীর্ষক ২;শীর্ষক ৩;শীর্ষক ৪;শীর্ষক ৫;শীর্ষক ৬;শীর্ষক (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "সাধারণ;ফর্মেটেড;ঠিকানা;শীর্ষক ১;শীর্ষক ২;শীর্ষক ৩;শীর্ষক ৪;শীর্ষক ৫;শীর্ষক ৬;শীর্ষক (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML প্রসেস করা হচ্ছে", @@ -148,6 +161,7 @@ UnknownToolbarSet : "টুলবার সেট \"%1\" এর অস্তি NoActiveX : "আপনার ব্রাউজারের সুরক্ষা সেটিংস কারনে এডিটরের কিছু ফিচার পাওয়া নাও যেতে পারে। আপনাকে অবশ্যই \"Run ActiveX controls and plug-ins\" এনাবেল করে নিতে হবে। আপনি ভুলভ্রান্তি কিছু কিছু ফিচারের অনুপস্থিতি উপলব্ধি করতে পারেন।", BrowseServerBlocked : "রিসোর্স ব্রাউজার খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।", DialogBlocked : "ডায়ালগ ইউন্ডো খোলা গেল না। নিশ্চিত করুন যে সব পপআপ ব্লকার বন্ধ করা আছে।", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "ওকে", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "নোঙর বাছাই", DlgLnkAnchorByName : "নোঙরের নাম দিয়ে", DlgLnkAnchorById : "নোঙরের আইডি দিয়ে", -DlgLnkNoAnchors : "<ডকুমেন্টে আর কোন নোঙর নেই>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", //MISSING DlgLnkEMail : "ইমেইল ঠিকানা", DlgLnkEMailSubject : "মেসেজের বিষয়", DlgLnkEMailBody : "মেসেজের দেহ", @@ -322,6 +336,9 @@ DlgCellBackColor : "ব্যাকগ্রাউন্ড রং", DlgCellBorderColor : "বর্ডারের রং", DlgCellBtnSelect : "বাছাই কর", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "খোঁজো", DlgFindFindBtn : "খোঁজো", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "অনুগ্রহ করে নীচের বাক্স DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "ফন্ট ফেস ডেফিনেশন ইগনোর করুন", DlgPasteRemoveStyles : "স্টাইল ডেফিনেশন সরিয়ে দিন", -DlgPasteCleanBox : "বাক্স পরিষ্কার করুন", // Color Picker ColorAutomatic : "অটোমেটিক", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "কে বানিয়েছে", DlgAboutBrowserInfoTab : "ব্রাউজারের ব্যাপারে তথ্য", DlgAboutLicenseTab : "লাইসেন্স", DlgAboutVersion : "ভার্সন", -DlgAboutInfo : "আরও তথ্যের জন্য যান" -}; \ No newline at end of file +DlgAboutInfo : "আরও তথ্যের জন্য যান", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/bs.js b/static/contrib/fckeditor-2.6.3/editor/lang/bs.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/bs.js rename to static/contrib/fckeditor-2.6.3/editor/lang/bs.js index fbaa451..662b4b8 --- a/static/fckeditor/editor/lang/bs.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/bs.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Poništi format", InsertLinkLbl : "Link", InsertLink : "Ubaci/Izmjeni link", RemoveLink : "Izbriši link", +VisitLink : "Open Link", //MISSING Anchor : "Insert/Edit Anchor", //MISSING +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Slika", InsertImage : "Ubaci/Izmjeni sliku", InsertFlashLbl : "Flash", //MISSING @@ -70,6 +72,10 @@ RightJustify : "Desno poravnanje", BlockJustify : "Puno poravnanje", DecreaseIndent : "Smanji uvod", IncreaseIndent : "Poveæaj uvod", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Vrati", Redo : "Ponovi", NumberedListLbl : "Numerisana lista", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", //MISSING ImageButton : "Image Button", //MISSING FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Izmjeni link", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Ubaci red", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Briši redove", -InsertColumn : "Ubaci kolonu", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Briši kolone", -InsertCell : "Ubaci æeliju", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Briši æelije", MergeCells : "Spoji æelije", -SplitCell : "Razdvoji æeliju", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Delete Table", //MISSING CellProperties : "Svojstva æelije", TableProperties : "Svojstva tabele", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection Field Properties", //MISSING TextareaProp : "Textarea Properties", //MISSING FormProp : "Form Properties", //MISSING -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", // Alerts and Messages ProcessingXHTML : "Procesiram XHTML. Molim saèekajte...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Traka sa alatima \"%1\" ne postoji", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Izaberi sidro", DlgLnkAnchorByName : "Po nazivu sidra", DlgLnkAnchorById : "Po Id-u elementa", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nema dostupnih sidra na stranici)", DlgLnkEMail : "E-Mail Adresa", DlgLnkEMailSubject : "Subjekt poruke", DlgLnkEMailBody : "Poruka", @@ -322,6 +336,9 @@ DlgCellBackColor : "Boja pozadine", DlgCellBorderColor : "Boja okvira", DlgCellBtnSelect : "Selektuj...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Naði", DlgFindFindBtn : "Naði", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Please paste inside the following box using the keyboard ( with ( and ) +DlgLnkNoAnchors : "(No hi ha àncores disponibles en aquest document)", DlgLnkEMail : "Adreça de correu electrònic", DlgLnkEMailSubject : "Assumpte del missatge", DlgLnkEMailBody : "Cos del missatge", @@ -322,6 +336,9 @@ DlgCellBackColor : "Color de fons", DlgCellBorderColor : "Color de la vora", DlgCellBtnSelect : "Seleccioneu...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Cerca i reemplaça", + // Find Dialog DlgFindTitle : "Cerca", DlgFindFindBtn : "Cerca", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Si us plau, enganxeu dins del següent camp utilitzant el teclat DlgPasteSec : "A causa de la configuració de seguretat del vostre navegador, l'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.", DlgPasteIgnoreFont : "Ignora definicions de font", DlgPasteRemoveStyles : "Elimina definicions d'estil", -DlgPasteCleanBox : "Neteja camp", // Color Picker ColorAutomatic : "Automàtic", @@ -363,20 +379,20 @@ DlgAnchorErrorName : "Si us plau, escriviu el nom de l'ancora", // Speller Pages Dialog DlgSpellNotInDic : "No és al diccionari", -DlgSpellChangeTo : "Canvia a", +DlgSpellChangeTo : "Reemplaça amb", DlgSpellBtnIgnore : "Ignora", DlgSpellBtnIgnoreAll : "Ignora-les totes", DlgSpellBtnReplace : "Canvia", DlgSpellBtnReplaceAll : "Canvia-les totes", DlgSpellBtnUndo : "Desfés", -DlgSpellNoSuggestions : "Cap sugerència", -DlgSpellProgress : "Comprovació ortogràfica en progrés", -DlgSpellNoMispell : "Comprovació ortogràfica completada", -DlgSpellNoChanges : "Comprovació ortogràfica: cap paraulada canviada", -DlgSpellOneChange : "Comprovació ortogràfica: una paraula canviada", -DlgSpellManyChanges : "Comprovació ortogràfica %1 paraules canviades", +DlgSpellNoSuggestions : "Cap suggeriment", +DlgSpellProgress : "Verificació ortogràfica en curs...", +DlgSpellNoMispell : "Verificació ortogràfica acabada: no hi ha cap paraula mal escrita", +DlgSpellNoChanges : "Verificació ortogràfica: no s'ha canviat cap paraula", +DlgSpellOneChange : "Verificació ortogràfica: s'ha canviat una paraula", +DlgSpellManyChanges : "Verificació ortogràfica: s'han canviat %1 paraules", -IeSpellDownload : "Comprovació ortogràfica no instal·lada. Voleu descarregar-ho ara?", +IeSpellDownload : "Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?", // Button Dialog DlgButtonText : "Text (Valor)", @@ -419,8 +435,8 @@ DlgTextareaRows : "Files", // Text Field Dialog DlgTextName : "Nom", DlgTextValue : "Valor", -DlgTextCharWidth : "Amplada de caràcter", -DlgTextMaxChars : "Màxim de caràcters", +DlgTextCharWidth : "Amplada", +DlgTextMaxChars : "Nombre màxim de caràcters", DlgTextType : "Tipus", DlgTextTypeText : "Text", DlgTextTypePass : "Contrasenya", @@ -440,14 +456,14 @@ DlgLstTypeSquare : "Quadrat", DlgLstTypeNumbers : "Números (1, 2, 3)", DlgLstTypeLCase : "Lletres minúscules (a, b, c)", DlgLstTypeUCase : "Lletres majúscules (A, B, C)", -DlgLstTypeSRoman : "Números romans minúscules (i, ii, iii)", -DlgLstTypeLRoman : "Números romans majúscules (I, II, III)", +DlgLstTypeSRoman : "Números romans en minúscules (i, ii, iii)", +DlgLstTypeLRoman : "Números romans en majúscules (I, II, III)", // Document Properties Dialog DlgDocGeneralTab : "General", DlgDocBackTab : "Fons", DlgDocColorsTab : "Colors i marges", -DlgDocMetaTab : "Dades Meta", +DlgDocMetaTab : "Metadades", DlgDocPageTitle : "Títol de la pàgina", DlgDocLangDir : "Direcció idioma", @@ -490,7 +506,7 @@ DlgDocPreview : "Vista prèvia", // Templates Dialog Templates : "Plantilles", DlgTemplatesTitle : "Contingut plantilles", -DlgTemplatesSelMsg : "Si us plau, seleccioneu la plantilla per obrir en l'editor
    (el contingut actual no serà enregistrat):", +DlgTemplatesSelMsg : "Si us plau, seleccioneu la plantilla per obrir a l'editor
    (el contingut actual no serà enregistrat):", DlgTemplatesLoading : "Carregant la llista de plantilles. Si us plau, espereu...", DlgTemplatesNoTpl : "(No hi ha plantilles definides)", DlgTemplatesReplace : "Reemplaça el contingut actual", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Quant a", DlgAboutBrowserInfoTab : "Informació del navegador", DlgAboutLicenseTab : "Llicència", DlgAboutVersion : "versió", -DlgAboutInfo : "Per a més informació aneu a" -}; \ No newline at end of file +DlgAboutInfo : "Per a més informació aneu a", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Avançat", +DlgDivStyle : "Estil", +DlgDivInlineStyle : "Estil en línia" +}; diff --git a/static/fckeditor/editor/lang/cs.js b/static/contrib/fckeditor-2.6.3/editor/lang/cs.js old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/editor/lang/cs.js rename to static/contrib/fckeditor-2.6.3/editor/lang/cs.js index 49b5f87..20bed14 --- a/static/fckeditor/editor/lang/cs.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/cs.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Odstranit formátování", InsertLinkLbl : "Odkaz", InsertLink : "Vložit/změnit odkaz", RemoveLink : "Odstranit odkaz", +VisitLink : "Otevřít odkaz", Anchor : "Vložít/změnit záložku", +AnchorDelete : "Odstranit kotvu", InsertImageLbl : "Obrázek", InsertImage : "Vložit/změnit obrázek", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Zarovnat vpravo", BlockJustify : "Zarovnat do bloku", DecreaseIndent : "Zmenšit odsazení", IncreaseIndent : "Zvětšit odsazení", +Blockquote : "Citace", +CreateDiv : "Vytvořit Div kontejner", +EditDiv : "Upravit Div kontejner", +DeleteDiv : "Odstranit Div kontejner", Undo : "Zpět", Redo : "Znovu", NumberedListLbl : "Číslování", @@ -103,20 +109,27 @@ SelectionField : "Seznam", ImageButton : "Obrázkové tlačítko", FitWindow : "Maximalizovat velikost editoru", +ShowBlocks : "Ukázat bloky", // Context Menu EditLink : "Změnit odkaz", CellCM : "Buňka", RowCM : "Řádek", ColumnCM : "Sloupec", -InsertRow : "Vložit řádek", -DeleteRows : "Smazat řádek", -InsertColumn : "Vložit sloupec", +InsertRowAfter : "Vložit řádek za", +InsertRowBefore : "Vložit řádek před", +DeleteRows : "Smazat řádky", +InsertColumnAfter : "Vložit sloupec za", +InsertColumnBefore : "Vložit sloupec před", DeleteColumns : "Smazat sloupec", -InsertCell : "Vložit buňku", +InsertCellAfter : "Vložit buňku za", +InsertCellBefore : "Vložit buňku před", DeleteCells : "Smazat buňky", MergeCells : "Sloučit buňky", -SplitCell : "Rozdělit buňku", +MergeRight : "Sloučit doprava", +MergeDown : "Sloučit dolů", +HorizontalSplitCell : "Rozdělit buňky vodorovně", +VerticalSplitCell : "Rozdělit buňky svisle", TableDelete : "Smazat tabulku", CellProperties : "Vlastnosti buňky", TableProperties : "Vlastnosti tabulky", @@ -134,7 +147,7 @@ SelectionFieldProp : "Vlastnosti seznamu", TextareaProp : "Vlastnosti textové oblasti", FormProp : "Vlastnosti formuláře", -FontFormats : "Normální;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normální;Naformátováno;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Normální (DIV)", // Alerts and Messages ProcessingXHTML : "Probíhá zpracování XHTML. Prosím čekejte...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Panel nástrojů \"%1\" neexistuje", NoActiveX : "Nastavení bezpečnosti Vašeho prohlížeče omezuje funkčnost některých jeho možností. Je třeba zapnout volbu \"Spouštět ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat všechny dosputné schopnosti editoru.", BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.", DialogBlocked : "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.", +VisitLinkBlocked : "Není možné otevřít nové okno. Prověřte, zda všechny nástroje pro blokování vyskakovacích oken jsou vypnuty.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Vybrat kotvu", DlgLnkAnchorByName : "Podle jména kotvy", DlgLnkAnchorById : "Podle Id objektu", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Ve stránce není definována žádná kotva!)", DlgLnkEMail : "E-Mailová adresa", DlgLnkEMailSubject : "Předmět zprávy", DlgLnkEMailBody : "Tělo zprávy", @@ -322,6 +336,9 @@ DlgCellBackColor : "Barva pozadí", DlgCellBorderColor : "Barva ohraničení", DlgCellBtnSelect : "Výběr...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Najít a nahradit", + // Find Dialog DlgFindTitle : "Hledat", DlgFindFindBtn : "Hledat", @@ -344,10 +361,9 @@ PasteAsText : "Vložit jako čistý text", PasteFromWord : "Vložit text z Wordu", DlgPasteMsg2 : "Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl+V) a stiskněte OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Z důvodů nastavení bezpečnosti Vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.", DlgPasteIgnoreFont : "Ignorovat písmo", DlgPasteRemoveStyles : "Odstranit styly", -DlgPasteCleanBox : "Vyčistit", // Color Picker ColorAutomatic : "Automaticky", @@ -432,7 +448,7 @@ DlgHiddenValue : "Hodnota", // Bulleted List Dialog BulletedListProp : "Vlastnosti odrážek", NumberedListProp : "Vlastnosti číslovaného seznamu", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Začátek", DlgLstType : "Typ", DlgLstTypeCircle : "Kružnice", DlgLstTypeDisc : "Kruh", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "O aplikaci", DlgAboutBrowserInfoTab : "Informace o prohlížeči", DlgAboutLicenseTab : "Licence", DlgAboutVersion : "verze", -DlgAboutInfo : "Více informací získáte na" -}; \ No newline at end of file +DlgAboutInfo : "Více informací získáte na", + +// Div Dialog +DlgDivGeneralTab : "Obecné", +DlgDivAdvancedTab : "Rozšířené", +DlgDivStyle : "Styl", +DlgDivInlineStyle : "Vložený styl" +}; diff --git a/static/fckeditor/editor/lang/da.js b/static/contrib/fckeditor-2.6.3/editor/lang/da.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/da.js rename to static/contrib/fckeditor-2.6.3/editor/lang/da.js index 8143241..c0273f5 --- a/static/fckeditor/editor/lang/da.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/da.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Fjern formatering", InsertLinkLbl : "Hyperlink", InsertLink : "Indsæt/rediger hyperlink", RemoveLink : "Fjern hyperlink", +VisitLink : "Open Link", //MISSING Anchor : "Indsæt/rediger bogmærke", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Indsæt billede", InsertImage : "Indsæt/rediger billede", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Højrestillet", BlockJustify : "Lige margener", DecreaseIndent : "Formindsk indrykning", IncreaseIndent : "Forøg indrykning", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Fortryd", Redo : "Annuller fortryd", NumberedListLbl : "Talopstilling", @@ -103,20 +109,27 @@ SelectionField : "Indsæt liste", ImageButton : "Indsæt billedknap", FitWindow : "Maksimer editor vinduet", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Rediger hyperlink", CellCM : "Celle", RowCM : "Række", ColumnCM : "Kolonne", -InsertRow : "Indsæt række", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Slet række", -InsertColumn : "Indsæt kolonne", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Slet kolonne", -InsertCell : "Indsæt celle", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Slet celle", MergeCells : "Flet celler", -SplitCell : "Opdel celle", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Slet tabel", CellProperties : "Egenskaber for celle", TableProperties : "Egenskaber for tabel", @@ -134,7 +147,7 @@ SelectionFieldProp : "Egenskaber for liste", TextareaProp : "Egenskaber for tekstboks", FormProp : "Egenskaber for formular", -FontFormats : "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Behandler XHTML...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Værktøjslinjen \"%1\" eksisterer ikke!", NoActiveX : "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.
    Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.", BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!
    Slå pop-up blokering fra.", DialogBlocked : "Dialogvinduet kunne ikke åbnes!
    Slå pop-up blokering fra.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Vælg et anker", DlgLnkAnchorByName : "Efter anker navn", DlgLnkAnchorById : "Efter element Id", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Ingen bogmærker dokumentet)", DlgLnkEMail : "E-mailadresse", DlgLnkEMailSubject : "Emne", DlgLnkEMailBody : "Brødtekst", @@ -322,6 +336,9 @@ DlgCellBackColor : "Baggrundsfarve", DlgCellBorderColor : "Rammefarve", DlgCellBtnSelect : "Vælg...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Find", DlgFindFindBtn : "Find", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Indsæt i feltet herunder (Ctrl+V) og klik ", +DlgGenNotSet : "", DlgGenId : "ID", DlgGenLangDir : "Schreibrichtung", DlgGenLangDirLtr : "Links nach Rechts (LTR)", DlgGenLangDirRtl : "Rechts nach Links (RTL)", DlgGenLangCode : "Sprachenkürzel", -DlgGenAccessKey : "Schlüssel", +DlgGenAccessKey : "Zugriffstaste", DlgGenName : "Name", -DlgGenTabIndex : "Tab Index", +DlgGenTabIndex : "Tab-Index", DlgGenLongDescr : "Langform URL", DlgGenClass : "Stylesheet Klasse", DlgGenTitle : "Titel Beschreibung", -DlgGenContType : "Content Beschreibung", +DlgGenContType : "Inhaltstyp", DlgGenLinkCharset : "Ziel-Zeichensatz", DlgGenStyle : "Style", // Image Dialog -DlgImgTitle : "Bild Eigenschaften", +DlgImgTitle : "Bild-Eigenschaften", DlgImgInfoTab : "Bild-Info", DlgImgBtnUpload : "Zum Server senden", DlgImgURL : "Bildauswahl", @@ -205,7 +219,7 @@ DlgImgAlertUrl : "Bitte geben Sie die Bild-URL an", DlgImgLinkTab : "Link", // Flash Dialog -DlgFlashTitle : "Flash Eigenschaften", +DlgFlashTitle : "Flash-Eigenschaften", DlgFlashChkPlay : "autom. Abspielen", DlgFlashChkLoop : "Endlosschleife", DlgFlashChkMenu : "Flash-Menü aktivieren", @@ -216,7 +230,7 @@ DlgFlashScaleFit : "Passgenau", // Link Dialog DlgLnkWindowTitle : "Link", -DlgLnkInfoTab : "Link Info", +DlgLnkInfoTab : "Link-Info", DlgLnkTargetTab : "Zielseite", DlgLnkType : "Link-Typ", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Anker auswählen", DlgLnkAnchorByName : "nach Anker Name", DlgLnkAnchorById : "nach Element Id", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(keine Anker im Dokument vorhanden)", DlgLnkEMail : "E-Mail Addresse", DlgLnkEMailSubject : "Betreffzeile", DlgLnkEMailBody : "Nachrichtentext", @@ -243,9 +257,9 @@ DlgLnkTargetBlank : "Neues Fenster (_blank)", DlgLnkTargetParent : "Oberes Fenster (_parent)", DlgLnkTargetSelf : "Gleiches Fenster (_self)", DlgLnkTargetTop : "Oberstes Fenster (_top)", -DlgLnkTargetFrameName : "Ziel-Fenster Name", -DlgLnkPopWinName : "Pop-up Fenster Name", -DlgLnkPopWinFeat : "Pop-up Fenster Eigenschaften", +DlgLnkTargetFrameName : "Ziel-Fenster-Name", +DlgLnkPopWinName : "Pop-up Fenster-Name", +DlgLnkPopWinFeat : "Pop-up Fenster-Eigenschaften", DlgLnkPopResize : "Vergrößerbar", DlgLnkPopLocation : "Adress-Leiste", DlgLnkPopMenu : "Menü-Leiste", @@ -277,12 +291,12 @@ DlgSmileyTitle : "Smiley auswählen", DlgSpecialCharTitle : "Sonderzeichen auswählen", // Table Dialog -DlgTableTitle : "Tabellen Eigenschaften", +DlgTableTitle : "Tabellen-Eigenschaften", DlgTableRows : "Zeile", DlgTableColumns : "Spalte", DlgTableBorder : "Rahmen", DlgTableAlign : "Ausrichtung", -DlgTableAlignNotSet : "", +DlgTableAlignNotSet : "", DlgTableAlignLeft : "Links", DlgTableAlignCenter : "Zentriert", DlgTableAlignRight : "Rechts", @@ -302,16 +316,16 @@ DlgCellWidthPx : "Pixel", DlgCellWidthPc : "%", DlgCellHeight : "Höhe", DlgCellWordWrap : "Umbruch", -DlgCellWordWrapNotSet : "", +DlgCellWordWrapNotSet : "", DlgCellWordWrapYes : "Ja", DlgCellWordWrapNo : "Nein", DlgCellHorAlign : "Horizontale Ausrichtung", -DlgCellHorAlignNotSet : "", +DlgCellHorAlignNotSet : "", DlgCellHorAlignLeft : "Links", DlgCellHorAlignCenter : "Zentriert", DlgCellHorAlignRight: "Rechts", DlgCellVerAlign : "Vertikale Ausrichtung", -DlgCellVerAlignNotSet : "", +DlgCellVerAlignNotSet : "", DlgCellVerAlignTop : "Oben", DlgCellVerAlignMiddle : "Mitte", DlgCellVerAlignBottom : "Unten", @@ -322,6 +336,9 @@ DlgCellBackColor : "Hintergrundfarbe", DlgCellBorderColor : "Rahmenfarbe", DlgCellBtnSelect : "Auswahl...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Suchen und Ersetzen", + // Find Dialog DlgFindTitle : "Finden", DlgFindFindBtn : "Finden", @@ -343,21 +360,20 @@ PasteErrorCopy : "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu PasteAsText : "Als Text einfügen", PasteFromWord : "Aus Word einfügen", -DlgPasteMsg2 : "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Ctrl+V) ein und bestätigen Sie mit OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteMsg2 : "Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.", +DlgPasteSec : "Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.", DlgPasteIgnoreFont : "Ignoriere Schriftart-Definitionen", DlgPasteRemoveStyles : "Entferne Style-Definitionen", -DlgPasteCleanBox : "Inhalt aufräumen", // Color Picker ColorAutomatic : "Automatisch", ColorMoreColors : "Weitere Farben...", // Document Properties -DocProps : "Dokument Eigenschaften", +DocProps : "Dokument-Eigenschaften", // Anchor Dialog -DlgAnchorTitle : "Anker Eigenschaften", +DlgAnchorTitle : "Anker-Eigenschaften", DlgAnchorName : "Anker Name", DlgAnchorErrorName : "Bitte geben Sie den Namen des Ankers ein", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Über", DlgAboutBrowserInfoTab : "Browser-Info", DlgAboutLicenseTab : "Lizenz", DlgAboutVersion : "Version", -DlgAboutInfo : "Für weitere Informationen siehe" -}; \ No newline at end of file +DlgAboutInfo : "Für weitere Informationen siehe", + +// Div Dialog +DlgDivGeneralTab : "Allgemein", +DlgDivAdvancedTab : "Erweitert", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style" +}; diff --git a/static/fckeditor/editor/lang/el.js b/static/contrib/fckeditor-2.6.3/editor/lang/el.js old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/editor/lang/el.js rename to static/contrib/fckeditor-2.6.3/editor/lang/el.js index 90fefc4..e62ded6 --- a/static/fckeditor/editor/lang/el.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/el.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Αφαίρεση Μορφοποίησης", InsertLinkLbl : "Σύνδεσμος (Link)", InsertLink : "Εισαγωγή/Μεταβολή Συνδέσμου (Link)", RemoveLink : "Αφαίρεση Συνδέσμου (Link)", +VisitLink : "Open Link", //MISSING Anchor : "Εισαγωγή/επεξεργασία Anchor", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Εικόνα", InsertImage : "Εισαγωγή/Μεταβολή Εικόνας", InsertFlashLbl : "Εισαγωγή Flash", @@ -70,6 +72,10 @@ RightJustify : "Στοίχιση Δεξιά", BlockJustify : "Πλήρης Στοίχιση (Block)", DecreaseIndent : "Μείωση Εσοχής", IncreaseIndent : "Αύξηση Εσοχής", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Αναίρεση", Redo : "Επαναφορά", NumberedListLbl : "Λίστα με Αριθμούς", @@ -103,20 +109,27 @@ SelectionField : "Πεδίο επιλογής", ImageButton : "Κουμπί εικόνας", FitWindow : "Μεγιστοποίηση προγράμματος", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Μεταβολή Συνδέσμου (Link)", CellCM : "Κελί", RowCM : "Σειρά", ColumnCM : "Στήλη", -InsertRow : "Εισαγωγή Γραμμής", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Διαγραφή Γραμμών", -InsertColumn : "Εισαγωγή Κολώνας", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Διαγραφή Κολωνών", -InsertCell : "Εισαγωγή Κελιού", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Διαγραφή Κελιών", MergeCells : "Ενοποίηση Κελιών", -SplitCell : "Διαχωρισμός Κελιού", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Διαγραφή πίνακα", CellProperties : "Ιδιότητες Κελιού", TableProperties : "Ιδιότητες Πίνακα", @@ -134,7 +147,7 @@ SelectionFieldProp : "Ιδιότητες πεδίου επιλογής", TextareaProp : "Ιδιότητες περιοχής κειμένου", FormProp : "Ιδιότητες φόρμας", -FontFormats : "Κανονικό;Μορφοποιημένο;Διεύθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6", //REVIEW : Check _getfontformat.html +FontFormats : "Κανονικό;Μορφοποιημένο;Διεύθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6", // Alerts and Messages ProcessingXHTML : "Επεξεργασία XHTML. Παρακαλώ περιμένετε...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Η μπάρα εργαλείων \"%1\" δεν υπάρχε NoActiveX : "Οι ρυθμίσεις ασφαλείας του browser σας μπορεί να περιορίσουν κάποιες ρυθμίσεις του προγράμματος. Χρειάζεται να ενεργοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παρουσιαστούν λάθη και παρατηρήσετε ελειπείς λειτουργίες.", BrowseServerBlocked : "Οι πόροι του browser σας δεν είναι προσπελάσιμοι. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.", DialogBlocked : "Δεν ήταν δυνατό να ανοίξει το παράθυρο διαλόγου. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Επιλέξτε μια άγκυρα", DlgLnkAnchorByName : "Βάσει του Ονόματος (Name) της άγκυρας", DlgLnkAnchorById : "Βάσει του Element Id", -DlgLnkNoAnchors : "<Δεν υπάρχουν άγκυρες στο κείμενο>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Δεν υπάρχουν άγκυρες στο κείμενο)", DlgLnkEMail : "Διεύθυνση Ηλεκτρονικού Ταχυδρομείου", DlgLnkEMailSubject : "Θέμα Μηνύματος", DlgLnkEMailBody : "Κείμενο Μηνύματος", @@ -322,6 +336,9 @@ DlgCellBackColor : "Χρώμα Υποβάθρου", DlgCellBorderColor : "Χρώμα Περιθωρίου", DlgCellBtnSelect : "Επιλογή...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Αναζήτηση", DlgFindFindBtn : "Αναζήτηση", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Παρακαλώ επικολήστε στο ακόλουθο κ DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Αγνόηση προδιαγραφών γραμματοσειράς", DlgPasteRemoveStyles : "Αφαίρεση προδιαγραφών στύλ", -DlgPasteCleanBox : "Κουτί εκαθάρισης", // Color Picker ColorAutomatic : "Αυτόματο", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Σχετικά", DlgAboutBrowserInfoTab : "Πληροφορίες Browser", DlgAboutLicenseTab : "Άδεια", DlgAboutVersion : "έκδοση", -DlgAboutInfo : "Για περισσότερες πληροφορίες" -}; \ No newline at end of file +DlgAboutInfo : "Για περισσότερες πληροφορίες", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/en-au.js b/static/contrib/fckeditor-2.6.3/editor/lang/en-au.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/en-au.js rename to static/contrib/fckeditor-2.6.3/editor/lang/en-au.js index b6960b6..5ea421e --- a/static/fckeditor/editor/lang/en-au.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/en-au.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Remove Format", InsertLinkLbl : "Link", InsertLink : "Insert/Edit Link", RemoveLink : "Remove Link", +VisitLink : "Open Link", Anchor : "Insert/Edit Anchor", +AnchorDelete : "Remove Anchor", InsertImageLbl : "Image", InsertImage : "Insert/Edit Image", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Right Justify", BlockJustify : "Block Justify", DecreaseIndent : "Decrease Indent", IncreaseIndent : "Increase Indent", +Blockquote : "Blockquote", +CreateDiv : "Create Div Container", +EditDiv : "Edit Div Container", +DeleteDiv : "Remove Div Container", Undo : "Undo", Redo : "Redo", NumberedListLbl : "Numbered List", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", ImageButton : "Image Button", FitWindow : "Maximize the editor size", +ShowBlocks : "Show Blocks", // Context Menu EditLink : "Edit Link", CellCM : "Cell", RowCM : "Row", ColumnCM : "Column", -InsertRow : "Insert Row", +InsertRowAfter : "Insert Row After", +InsertRowBefore : "Insert Row Before", DeleteRows : "Delete Rows", -InsertColumn : "Insert Column", +InsertColumnAfter : "Insert Column After", +InsertColumnBefore : "Insert Column Before", DeleteColumns : "Delete Columns", -InsertCell : "Insert Cell", +InsertCellAfter : "Insert Cell After", +InsertCellBefore : "Insert Cell Before", DeleteCells : "Delete Cells", MergeCells : "Merge Cells", -SplitCell : "Split Cell", +MergeRight : "Merge Right", +MergeDown : "Merge Down", +HorizontalSplitCell : "Split Cell Horizontally", +VerticalSplitCell : "Split Cell Vertically", TableDelete : "Delete Table", CellProperties : "Cell Properties", TableProperties : "Table Properties", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection Field Properties", TextareaProp : "Textarea Properties", FormProp : "Form Properties", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Processing XHTML. Please wait...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Select an Anchor", DlgLnkAnchorByName : "By Anchor Name", DlgLnkAnchorById : "By Element Id", -DlgLnkNoAnchors : "(No anchors available in the document)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", DlgLnkEMail : "E-Mail Address", DlgLnkEMailSubject : "Message Subject", DlgLnkEMailBody : "Message Body", @@ -322,6 +336,9 @@ DlgCellBackColor : "Background Colour", DlgCellBorderColor : "Border Colour", DlgCellBtnSelect : "Select...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", + // Find Dialog DlgFindTitle : "Find", DlgFindFindBtn : "Find", @@ -343,11 +360,10 @@ PasteErrorCopy : "Your browser security settings don't permit the editor to auto PasteAsText : "Paste as Plain Text", PasteFromWord : "Paste from Word", -DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", +DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", DlgPasteIgnoreFont : "Ignore Font Face definitions", DlgPasteRemoveStyles : "Remove Styles definitions", -DlgPasteCleanBox : "Clean Up Box", // Color Picker ColorAutomatic : "Automatic", @@ -490,7 +506,7 @@ DlgDocPreview : "Preview", // Templates Dialog Templates : "Templates", DlgTemplatesTitle : "Content Templates", -DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", +DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", DlgTemplatesLoading : "Loading templates list. Please wait...", DlgTemplatesNoTpl : "(No templates defined)", DlgTemplatesReplace : "Replace actual contents", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "About", DlgAboutBrowserInfoTab : "Browser Info", DlgAboutLicenseTab : "License", DlgAboutVersion : "version", -DlgAboutInfo : "For further information go to" -}; \ No newline at end of file +DlgAboutInfo : "For further information go to", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Advanced", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style" +}; diff --git a/static/fckeditor/editor/lang/en-ca.js b/static/contrib/fckeditor-2.6.3/editor/lang/en-ca.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/en-ca.js rename to static/contrib/fckeditor-2.6.3/editor/lang/en-ca.js index 2900a9d..b192385 --- a/static/fckeditor/editor/lang/en-ca.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/en-ca.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Remove Format", InsertLinkLbl : "Link", InsertLink : "Insert/Edit Link", RemoveLink : "Remove Link", +VisitLink : "Open Link", Anchor : "Insert/Edit Anchor", +AnchorDelete : "Remove Anchor", InsertImageLbl : "Image", InsertImage : "Insert/Edit Image", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Right Justify", BlockJustify : "Block Justify", DecreaseIndent : "Decrease Indent", IncreaseIndent : "Increase Indent", +Blockquote : "Blockquote", +CreateDiv : "Create Div Container", +EditDiv : "Edit Div Container", +DeleteDiv : "Remove Div Container", Undo : "Undo", Redo : "Redo", NumberedListLbl : "Numbered List", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", ImageButton : "Image Button", FitWindow : "Maximize the editor size", +ShowBlocks : "Show Blocks", // Context Menu EditLink : "Edit Link", CellCM : "Cell", RowCM : "Row", ColumnCM : "Column", -InsertRow : "Insert Row", +InsertRowAfter : "Insert Row After", +InsertRowBefore : "Insert Row Before", DeleteRows : "Delete Rows", -InsertColumn : "Insert Column", +InsertColumnAfter : "Insert Column After", +InsertColumnBefore : "Insert Column Before", DeleteColumns : "Delete Columns", -InsertCell : "Insert Cell", +InsertCellAfter : "Insert Cell After", +InsertCellBefore : "Insert Cell Before", DeleteCells : "Delete Cells", MergeCells : "Merge Cells", -SplitCell : "Split Cell", +MergeRight : "Merge Right", +MergeDown : "Merge Down", +HorizontalSplitCell : "Split Cell Horizontally", +VerticalSplitCell : "Split Cell Vertically", TableDelete : "Delete Table", CellProperties : "Cell Properties", TableProperties : "Table Properties", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection Field Properties", TextareaProp : "Textarea Properties", FormProp : "Form Properties", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Processing XHTML. Please wait...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Select an Anchor", DlgLnkAnchorByName : "By Anchor Name", DlgLnkAnchorById : "By Element Id", -DlgLnkNoAnchors : "(No anchors available in the document)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", DlgLnkEMail : "E-Mail Address", DlgLnkEMailSubject : "Message Subject", DlgLnkEMailBody : "Message Body", @@ -322,6 +336,9 @@ DlgCellBackColor : "Background Colour", DlgCellBorderColor : "Border Colour", DlgCellBtnSelect : "Select...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", + // Find Dialog DlgFindTitle : "Find", DlgFindFindBtn : "Find", @@ -343,11 +360,10 @@ PasteErrorCopy : "Your browser security settings don't permit the editor to auto PasteAsText : "Paste as Plain Text", PasteFromWord : "Paste from Word", -DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", +DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", DlgPasteIgnoreFont : "Ignore Font Face definitions", DlgPasteRemoveStyles : "Remove Styles definitions", -DlgPasteCleanBox : "Clean Up Box", // Color Picker ColorAutomatic : "Automatic", @@ -490,7 +506,7 @@ DlgDocPreview : "Preview", // Templates Dialog Templates : "Templates", DlgTemplatesTitle : "Content Templates", -DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", +DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", DlgTemplatesLoading : "Loading templates list. Please wait...", DlgTemplatesNoTpl : "(No templates defined)", DlgTemplatesReplace : "Replace actual contents", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "About", DlgAboutBrowserInfoTab : "Browser Info", DlgAboutLicenseTab : "License", DlgAboutVersion : "version", -DlgAboutInfo : "For further information go to" -}; \ No newline at end of file +DlgAboutInfo : "For further information go to", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Advanced", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style" +}; diff --git a/static/fckeditor/editor/lang/en-uk.js b/static/contrib/fckeditor-2.6.3/editor/lang/en-uk.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/en-uk.js rename to static/contrib/fckeditor-2.6.3/editor/lang/en-uk.js index eaaf3e4..901c885 --- a/static/fckeditor/editor/lang/en-uk.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/en-uk.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Remove Format", InsertLinkLbl : "Link", InsertLink : "Insert/Edit Link", RemoveLink : "Remove Link", +VisitLink : "Open Link", Anchor : "Insert/Edit Anchor", +AnchorDelete : "Remove Anchor", InsertImageLbl : "Image", InsertImage : "Insert/Edit Image", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Right Justify", BlockJustify : "Block Justify", DecreaseIndent : "Decrease Indent", IncreaseIndent : "Increase Indent", +Blockquote : "Blockquote", +CreateDiv : "Create Div Container", +EditDiv : "Edit Div Container", +DeleteDiv : "Remove Div Container", Undo : "Undo", Redo : "Redo", NumberedListLbl : "Numbered List", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", ImageButton : "Image Button", FitWindow : "Maximize the editor size", +ShowBlocks : "Show Blocks", // Context Menu EditLink : "Edit Link", CellCM : "Cell", RowCM : "Row", ColumnCM : "Column", -InsertRow : "Insert Row", +InsertRowAfter : "Insert Row After", +InsertRowBefore : "Insert Row Before", DeleteRows : "Delete Rows", -InsertColumn : "Insert Column", +InsertColumnAfter : "Insert Column After", +InsertColumnBefore : "Insert Column Before", DeleteColumns : "Delete Columns", -InsertCell : "Insert Cell", +InsertCellAfter : "Insert Cell After", +InsertCellBefore : "Insert Cell Before", DeleteCells : "Delete Cells", MergeCells : "Merge Cells", -SplitCell : "Split Cell", +MergeRight : "Merge Right", +MergeDown : "Merge Down", +HorizontalSplitCell : "Split Cell Horizontally", +VerticalSplitCell : "Split Cell Vertically", TableDelete : "Delete Table", CellProperties : "Cell Properties", TableProperties : "Table Properties", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection Field Properties", TextareaProp : "Textarea Properties", FormProp : "Form Properties", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Processing XHTML. Please wait...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Select an Anchor", DlgLnkAnchorByName : "By Anchor Name", DlgLnkAnchorById : "By Element Id", -DlgLnkNoAnchors : "(No anchors available in the document)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", DlgLnkEMail : "E-Mail Address", DlgLnkEMailSubject : "Message Subject", DlgLnkEMailBody : "Message Body", @@ -322,6 +336,9 @@ DlgCellBackColor : "Background Colour", DlgCellBorderColor : "Border Colour", DlgCellBtnSelect : "Select...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", + // Find Dialog DlgFindTitle : "Find", DlgFindFindBtn : "Find", @@ -343,11 +360,10 @@ PasteErrorCopy : "Your browser security settings don't permit the editor to auto PasteAsText : "Paste as Plain Text", PasteFromWord : "Paste from Word", -DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", +DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", DlgPasteIgnoreFont : "Ignore Font Face definitions", DlgPasteRemoveStyles : "Remove Styles definitions", -DlgPasteCleanBox : "Clean Up Box", // Color Picker ColorAutomatic : "Automatic", @@ -490,7 +506,7 @@ DlgDocPreview : "Preview", // Templates Dialog Templates : "Templates", DlgTemplatesTitle : "Content Templates", -DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", +DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", DlgTemplatesLoading : "Loading templates list. Please wait...", DlgTemplatesNoTpl : "(No templates defined)", DlgTemplatesReplace : "Replace actual contents", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "About", DlgAboutBrowserInfoTab : "Browser Info", DlgAboutLicenseTab : "License", DlgAboutVersion : "version", -DlgAboutInfo : "For further information go to" -}; \ No newline at end of file +DlgAboutInfo : "For further information go to", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Advanced", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style" +}; diff --git a/static/fckeditor/editor/lang/en.js b/static/contrib/fckeditor-2.6.3/editor/lang/en.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/en.js rename to static/contrib/fckeditor-2.6.3/editor/lang/en.js index c579fc9..5939588 --- a/static/fckeditor/editor/lang/en.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/en.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Remove Format", InsertLinkLbl : "Link", InsertLink : "Insert/Edit Link", RemoveLink : "Remove Link", +VisitLink : "Open Link", Anchor : "Insert/Edit Anchor", +AnchorDelete : "Remove Anchor", InsertImageLbl : "Image", InsertImage : "Insert/Edit Image", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Right Justify", BlockJustify : "Block Justify", DecreaseIndent : "Decrease Indent", IncreaseIndent : "Increase Indent", +Blockquote : "Blockquote", +CreateDiv : "Create Div Container", +EditDiv : "Edit Div Container", +DeleteDiv : "Remove Div Container", Undo : "Undo", Redo : "Redo", NumberedListLbl : "Numbered List", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", ImageButton : "Image Button", FitWindow : "Maximize the editor size", +ShowBlocks : "Show Blocks", // Context Menu EditLink : "Edit Link", CellCM : "Cell", RowCM : "Row", ColumnCM : "Column", -InsertRow : "Insert Row", +InsertRowAfter : "Insert Row After", +InsertRowBefore : "Insert Row Before", DeleteRows : "Delete Rows", -InsertColumn : "Insert Column", +InsertColumnAfter : "Insert Column After", +InsertColumnBefore : "Insert Column Before", DeleteColumns : "Delete Columns", -InsertCell : "Insert Cell", +InsertCellAfter : "Insert Cell After", +InsertCellBefore : "Insert Cell Before", DeleteCells : "Delete Cells", MergeCells : "Merge Cells", -SplitCell : "Split Cell", +MergeRight : "Merge Right", +MergeDown : "Merge Down", +HorizontalSplitCell : "Split Cell Horizontally", +VerticalSplitCell : "Split Cell Vertically", TableDelete : "Delete Table", CellProperties : "Cell Properties", TableProperties : "Table Properties", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection Field Properties", TextareaProp : "Textarea Properties", FormProp : "Form Properties", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Processing XHTML. Please wait...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar set \"%1\" doesn't exist", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Select an Anchor", DlgLnkAnchorByName : "By Anchor Name", DlgLnkAnchorById : "By Element Id", -DlgLnkNoAnchors : "(No anchors available in the document)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", DlgLnkEMail : "E-Mail Address", DlgLnkEMailSubject : "Message Subject", DlgLnkEMailBody : "Message Body", @@ -322,6 +336,9 @@ DlgCellBackColor : "Background Color", DlgCellBorderColor : "Border Color", DlgCellBtnSelect : "Select...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", + // Find Dialog DlgFindTitle : "Find", DlgFindFindBtn : "Find", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Please paste inside the following box using the keyboard (", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "", DlgLnkEMail : "Retadreso", DlgLnkEMailSubject : "Temlinio", DlgLnkEMailBody : "Mesaĝa korpo", @@ -322,6 +336,9 @@ DlgCellBackColor : "Fono", DlgCellBorderColor : "Bordero", DlgCellBtnSelect : "Elekti...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Serĉi", DlgFindFindBtn : "Serĉi", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Please paste inside the following box using the keyboard (", DlgGenId : "Id", -DlgGenLangDir : "Orientación de idioma", +DlgGenLangDir : "Orientación", DlgGenLangDirLtr : "Izquierda a Derecha (LTR)", DlgGenLangDirRtl : "Derecha a Izquierda (RTL)", -DlgGenLangCode : "Código de idioma", +DlgGenLangCode : "Cód. de idioma", DlgGenAccessKey : "Clave de Acceso", DlgGenName : "Nombre", DlgGenTabIndex : "Indice de tabulación", @@ -201,7 +215,7 @@ DlgImgAlignRight : "Derecha", DlgImgAlignTextTop : "Tope del texto", DlgImgAlignTop : "Tope", DlgImgPreview : "Vista Previa", -DlgImgAlertUrl : "Por favor tipee el URL de la imagen", +DlgImgAlertUrl : "Por favor escriba la URL de la imagen", DlgImgLinkTab : "Vínculo", // Flash Dialog @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Seleccionar una referencia", DlgLnkAnchorByName : "Por Nombre de Referencia", DlgLnkAnchorById : "Por ID de elemento", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No hay referencias disponibles en el documento)", DlgLnkEMail : "Dirección de E-Mail", DlgLnkEMailSubject : "Título del Mensaje", DlgLnkEMailBody : "Cuerpo del Mensaje", @@ -262,7 +276,7 @@ DlgLnkPopTop : "Posición Derecha", DlnLnkMsgNoUrl : "Por favor tipee el vínculo URL", DlnLnkMsgNoEMail : "Por favor tipee la dirección de e-mail", DlnLnkMsgNoAnchor : "Por favor seleccione una referencia", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "El nombre debe empezar con un caracter alfanumérico y no debe contener espacios", // Color Dialog DlgColorTitle : "Seleccionar Color", @@ -322,6 +336,9 @@ DlgCellBackColor : "Color de Fondo", DlgCellBorderColor : "Color de Borde", DlgCellBtnSelect : "Seleccione...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Buscar y Reemplazar", + // Find Dialog DlgFindTitle : "Buscar", DlgFindFindBtn : "Buscar", @@ -344,10 +361,9 @@ PasteAsText : "Pegar como Texto Plano", PasteFromWord : "Pegar desde Word", DlgPasteMsg2 : "Por favor pegue dentro del cuadro utilizando el teclado (Ctrl+V); luego presione OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles. Es necesario que lo pegue de nuevo en esta ventana.", DlgPasteIgnoreFont : "Ignorar definiciones de fuentes", DlgPasteRemoveStyles : "Remover definiciones de estilo", -DlgPasteCleanBox : "Borrar el contenido del cuadro", // Color Picker ColorAutomatic : "Automático", @@ -381,9 +397,9 @@ IeSpellDownload : "Módulo de Control de Ortografía no instalado. ¿Desea des // Button Dialog DlgButtonText : "Texto (Valor)", DlgButtonType : "Tipo", -DlgButtonTypeBtn : "Button", //MISSING -DlgButtonTypeSbm : "Submit", //MISSING -DlgButtonTypeRst : "Reset", //MISSING +DlgButtonTypeBtn : "Boton", +DlgButtonTypeSbm : "Enviar", +DlgButtonTypeRst : "Reestablecer", // Checkbox and Radio Button Dialogs DlgCheckboxName : "Nombre", @@ -432,7 +448,7 @@ DlgHiddenValue : "Valor", // Bulleted List Dialog BulletedListProp : "Propiedades de Viñetas", NumberedListProp : "Propiedades de Numeraciones", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Inicio", DlgLstType : "Tipo", DlgLstTypeCircle : "Círculo", DlgLstTypeDisc : "Disco", @@ -455,15 +471,15 @@ DlgDocLangDirLTR : "Izq. a Derecha (LTR)", DlgDocLangDirRTL : "Der. a Izquierda (RTL)", DlgDocLangCode : "Código de Idioma", DlgDocCharSet : "Codif. de Conjunto de Caracteres", -DlgDocCharSetCE : "Central European", //MISSING -DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING -DlgDocCharSetCR : "Cyrillic", //MISSING -DlgDocCharSetGR : "Greek", //MISSING -DlgDocCharSetJP : "Japanese", //MISSING -DlgDocCharSetKR : "Korean", //MISSING -DlgDocCharSetTR : "Turkish", //MISSING -DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING -DlgDocCharSetWE : "Western European", //MISSING +DlgDocCharSetCE : "Centro Europeo", +DlgDocCharSetCT : "Chino Tradicional (Big5)", +DlgDocCharSetCR : "Cirílico", +DlgDocCharSetGR : "Griego", +DlgDocCharSetJP : "Japonés", +DlgDocCharSetKR : "Coreano", +DlgDocCharSetTR : "Turco", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Europeo occidental", DlgDocCharSetOther : "Otra Codificación", DlgDocDocType : "Encabezado de Tipo de Documento", @@ -493,12 +509,18 @@ DlgTemplatesTitle : "Contenido de Plantillas", DlgTemplatesSelMsg : "Por favor selecciona la plantilla a abrir en el editor
    (el contenido actual se perderá):", DlgTemplatesLoading : "Cargando lista de Plantillas. Por favor, aguarde...", DlgTemplatesNoTpl : "(No hay plantillas definidas)", -DlgTemplatesReplace : "Replace actual contents", //MISSING +DlgTemplatesReplace : "Reemplazar el contenido actual", // About Dialog DlgAboutAboutTab : "Acerca de", DlgAboutBrowserInfoTab : "Información de Navegador", DlgAboutLicenseTab : "Licencia", DlgAboutVersion : "versión", -DlgAboutInfo : "Para mayor información por favor dirigirse a" -}; \ No newline at end of file +DlgAboutInfo : "Para mayor información por favor dirigirse a", + +// Div Dialog +DlgDivGeneralTab : "General", +DlgDivAdvancedTab : "Avanzado", +DlgDivStyle : "Estilo", +DlgDivInlineStyle : "Estilos CSS" +}; diff --git a/static/fckeditor/editor/lang/et.js b/static/contrib/fckeditor-2.6.3/editor/lang/et.js old mode 100644 new mode 100755 similarity index 85% rename from static/fckeditor/editor/lang/et.js rename to static/contrib/fckeditor-2.6.3/editor/lang/et.js index 53a147e..8c9d5ff --- a/static/fckeditor/editor/lang/et.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/et.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -42,15 +42,17 @@ Print : "Prindi", SelectAll : "Vali kõik", RemoveFormat : "Eemalda vorming", InsertLinkLbl : "Link", -InsertLink : "Sisesta/Muuda link", +InsertLink : "Sisesta link / Muuda linki", RemoveLink : "Eemalda link", -Anchor : "Sisesta/Muuda ankur", +VisitLink : "Open Link", //MISSING +Anchor : "Sisesta ankur / Muuda ankrut", +AnchorDelete : "Eemalda ankur", InsertImageLbl : "Pilt", -InsertImage : "Sisesta/Muuda pilt", +InsertImage : "Sisesta pilt / Muuda pilti", InsertFlashLbl : "Flash", -InsertFlash : "Sisesta/Muuda flash", +InsertFlash : "Sisesta flash / Muuda flashi", InsertTableLbl : "Tabel", -InsertTable : "Sisesta/Muuda tabel", +InsertTable : "Sisesta tabel / Muuda tabelit", InsertLineLbl : "Joon", InsertLine : "Sisesta horisontaaljoon", InsertSpecialCharLbl: "Erimärgid", @@ -58,10 +60,10 @@ InsertSpecialChar : "Sisesta erimärk", InsertSmileyLbl : "Emotikon", InsertSmiley : "Sisesta emotikon", About : "FCKeditor teave", -Bold : "Rasvane kiri", -Italic : "Kursiiv kiri", -Underline : "Allajoonitud kiri", -StrikeThrough : "Läbijoonitud kiri", +Bold : "Paks", +Italic : "Kursiiv", +Underline : "Allajoonitud", +StrikeThrough : "Läbijoonitud", Subscript : "Allindeks", Superscript : "Ülaindeks", LeftJustify : "Vasakjoondus", @@ -70,6 +72,10 @@ RightJustify : "Paremjoondus", BlockJustify : "Rööpjoondus", DecreaseIndent : "Vähenda taanet", IncreaseIndent : "Suurenda taanet", +Blockquote : "Blokktsitaat", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Võta tagasi", Redo : "Korda toimingut", NumberedListLbl : "Nummerdatud loetelu", @@ -90,7 +96,7 @@ Replace : "Asenda", SpellCheck : "Kontrolli õigekirja", UniversalKeyboard : "Universaalne klaviatuur", PageBreakLbl : "Lehepiir", -PageBreak : "Sisesta lehevahetus koht", +PageBreak : "Sisesta lehevahetuskoht", Form : "Vorm", Checkbox : "Märkeruut", @@ -103,24 +109,31 @@ SelectionField : "Valiklahter", ImageButton : "Piltnupp", FitWindow : "Maksimeeri redaktori mõõtmed", +ShowBlocks : "Näita blokke", // Context Menu EditLink : "Muuda linki", CellCM : "Lahter", RowCM : "Rida", ColumnCM : "Veerg", -InsertRow : "Lisa rida", -DeleteRows : "Eemalda ridu", -InsertColumn : "Lisa veerg", +InsertRowAfter : "Sisesta rida peale", +InsertRowBefore : "Sisesta rida enne", +DeleteRows : "Eemalda read", +InsertColumnAfter : "Sisesta veerg peale", +InsertColumnBefore : "Sisesta veerg enne", DeleteColumns : "Eemalda veerud", -InsertCell : "Lisa lahter", +InsertCellAfter : "Sisesta lahter peale", +InsertCellBefore : "Sisesta lahter enne", DeleteCells : "Eemalda lahtrid", MergeCells : "Ühenda lahtrid", -SplitCell : "Lahuta lahtrid", +MergeRight : "Ühenda paremale", +MergeDown : "Ühenda alla", +HorizontalSplitCell : "Poolita lahter horisontaalselt", +VerticalSplitCell : "Poolita lahter vertikaalselt", TableDelete : "Kustuta tabel", CellProperties : "Lahtri atribuudid", TableProperties : "Tabeli atribuudid", -ImageProperties : "Pildi atribuudid", +ImageProperties : "Pildi atribuudid", FlashProperties : "Flash omadused", AnchorProp : "Ankru omadused", @@ -134,20 +147,21 @@ SelectionFieldProp : "Valiklahtri omadused", TextareaProp : "Tekstiala omadused", FormProp : "Vormi omadused", -FontFormats : "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6;Tavaline (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6;Tavaline (DIV)", // Alerts and Messages -ProcessingXHTML : "Töötlen XHTML. Palun oota...", +ProcessingXHTML : "Töötlen XHTML'i. Palun oota...", Done : "Tehtud", -PasteWordConfirm : "Tekst, mida soovid lisada paistab pärinevat Wordist. Kas soovid seda enne kleepimist puhastada?", +PasteWordConfirm : "Tekst, mida soovid lisada paistab pärinevat Word'ist. Kas soovid seda enne kleepimist puhastada?", NotCompatiblePaste : "See käsk on saadaval ainult Internet Explorer versioon 5.5 või uuema puhul. Kas soovid kleepida ilma puhastamata?", -UnknownToolbarItem : "Tundmatu tööriistariba üksus \"%1\"", +UnknownToolbarItem : "Tundmatu tööriistarea üksus \"%1\"", UnknownCommand : "Tundmatu käsunimi \"%1\"", NotImplemented : "Käsku ei täidetud", UnknownToolbarSet : "Tööriistariba \"%1\" ei eksisteeri", -NoActiveX : "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutus võimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma sirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.", +NoActiveX : "Sinu veebisirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutusvõimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma veebisirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.", BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.", DialogBlocked : "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Vali ankur", DlgLnkAnchorByName : "Ankru nime järgi", DlgLnkAnchorById : "Elemendi id järgi", -DlgLnkNoAnchors : "(Selles dokumendis ei ole ankruid)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Selles dokumendis ei ole ankruid)", DlgLnkEMail : "E-posti aadress", DlgLnkEMailSubject : "Sõnumi teema", DlgLnkEMailBody : "Sõnumi tekst", @@ -240,7 +254,7 @@ DlgLnkTarget : "Sihtkoht", DlgLnkTargetFrame : "", DlgLnkTargetPopup : "", DlgLnkTargetBlank : "Uus aken (_blank)", -DlgLnkTargetParent : "Vanem aken (_parent)", +DlgLnkTargetParent : "Esivanem aken (_parent)", DlgLnkTargetSelf : "Sama aken (_self)", DlgLnkTargetTop : "Pealmine aken (_top)", DlgLnkTargetFrameName : "Sihtmärk raami nimi", @@ -322,6 +336,9 @@ DlgCellBackColor : "Tausta värv", DlgCellBorderColor : "Joone värv", DlgCellBtnSelect : "Vali...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Otsi ja asenda", + // Find Dialog DlgFindTitle : "Otsi", DlgFindFindBtn : "Otsi", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikomb DlgPasteSec : "Sinu veebisirvija turvaseadete tõttu, ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead kleepima need uuesti siia aknasse.", DlgPasteIgnoreFont : "Ignoreeri kirja definitsioone", DlgPasteRemoveStyles : "Eemalda stiilide definitsioonid", -DlgPasteCleanBox : "Puhasta ära kast", // Color Picker ColorAutomatic : "Automaatne", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Teave", DlgAboutBrowserInfoTab : "Veebisirvija info", DlgAboutLicenseTab : "Litsents", DlgAboutVersion : "versioon", -DlgAboutInfo : "Täpsema info saamiseks mine" -}; \ No newline at end of file +DlgAboutInfo : "Täpsema info saamiseks mine", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/eu.js b/static/contrib/fckeditor-2.6.3/editor/lang/eu.js old mode 100644 new mode 100755 similarity index 86% rename from static/fckeditor/editor/lang/eu.js rename to static/contrib/fckeditor-2.6.3/editor/lang/eu.js index 266d427..2ad6f26 --- a/static/fckeditor/editor/lang/eu.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/eu.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -45,7 +45,9 @@ RemoveFormat : "Kendu Formatoa", InsertLinkLbl : "Esteka", InsertLink : "Txertatu/Editatu Esteka", RemoveLink : "Kendu Esteka", +VisitLink : "Open Link", //MISSING Anchor : "Aingura", +AnchorDelete : "Ezabatu Aingura", InsertImageLbl : "Irudia", InsertImage : "Txertatu/Editatu Irudia", InsertFlashLbl : "Flasha", @@ -71,6 +73,10 @@ RightJustify : "Lerrokatu Eskuman", BlockJustify : "Justifikatu", DecreaseIndent : "Txikitu Koska", IncreaseIndent : "Handitu Koska", +Blockquote : "Aipamen blokea", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Desegin", Redo : "Berregin", NumberedListLbl : "Zenbakidun Zerrenda", @@ -104,20 +110,27 @@ SelectionField : "Hautespen Eremua", ImageButton : "Irudi Botoia", FitWindow : "Maximizatu editorearen tamaina", +ShowBlocks : "Blokeak erakutsi", // Context Menu EditLink : "Aldatu Esteka", CellCM : "Gelaxka", RowCM : "Errenkada", ColumnCM : "Zutabea", -InsertRow : "Txertatu Errenkada", +InsertRowAfter : "Txertatu Lerroa Ostean", +InsertRowBefore : "Txertatu Lerroa Aurretik", DeleteRows : "Ezabatu Errenkadak", -InsertColumn : "Txertatu Zutabea", +InsertColumnAfter : "Txertatu Zutabea Ostean", +InsertColumnBefore : "Txertatu Zutabea Aurretik", DeleteColumns : "Ezabatu Zutabeak", -InsertCell : "Txertatu Gelaxka", +InsertCellAfter : "Txertatu Gelaxka Ostean", +InsertCellBefore : "Txertatu Gelaxka Aurretik", DeleteCells : "Kendu Gelaxkak", MergeCells : "Batu Gelaxkak", -SplitCell : "Zatitu Gelaxka", +MergeRight : "Elkartu Eskumara", +MergeDown : "Elkartu Behera", +HorizontalSplitCell : "Banatu Gelaxkak Horizontalki", +VerticalSplitCell : "Banatu Gelaxkak Bertikalki", TableDelete : "Ezabatu Taula", CellProperties : "Gelaxkaren Ezaugarriak", TableProperties : "Taularen Ezaugarriak", @@ -135,7 +148,7 @@ SelectionFieldProp : "Hautespen Eremuaren Ezaugarriak", TextareaProp : "Testu-arearen Ezaugarriak", FormProp : "Formularioaren Ezaugarriak", -FontFormats : "Arrunta;Formateatua;Helbidea;Izenburua 1;Izenburua 2;Izenburua 3;Izenburua 4;Izenburua 5;Izenburua 6;Paragrafoa (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Arrunta;Formateatua;Helbidea;Izenburua 1;Izenburua 2;Izenburua 3;Izenburua 4;Izenburua 5;Izenburua 6;Paragrafoa (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML Prozesatzen. Itxaron mesedez...", @@ -149,6 +162,7 @@ UnknownToolbarSet : "Ataza barra \"%1\" taldea ez da existitzen", NoActiveX : "Zure nabigatzailearen segustasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta plug-inak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.", BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.", DialogBlocked : "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "Ados", @@ -230,7 +244,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Aingura bat hautatu", DlgLnkAnchorByName : "Aingura izenagatik", DlgLnkAnchorById : "Elementuaren ID-gatik", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Ez daude aingurak eskuragarri dokumentuan)", DlgLnkEMail : "ePosta Helbidea", DlgLnkEMailSubject : "Mezuaren Gaia", DlgLnkEMailBody : "Mezuaren Gorputza", @@ -263,7 +277,7 @@ DlgLnkPopTop : "Goiko Posizioa", DlnLnkMsgNoUrl : "Mesedez URL esteka idatzi", DlnLnkMsgNoEMail : "Mesedez ePosta helbidea idatzi", DlnLnkMsgNoAnchor : "Mesedez aingura bat aukeratu", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "Popup lehioaren izenak karaktere alfabetiko batekin hasi behar du eta eta ezin du zuriunerik izan", // Color Dialog DlgColorTitle : "Kolore Aukeraketa", @@ -323,6 +337,9 @@ DlgCellBackColor : "Atzeko Kolorea", DlgCellBorderColor : "Ertzako Kolorea", DlgCellBtnSelect : "Aukertau...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Bilatu eta Ordeztu", + // Find Dialog DlgFindTitle : "Bilaketa", DlgFindFindBtn : "Bilatu", @@ -345,10 +362,9 @@ PasteAsText : "Testu Arrunta bezala Itsatsi", PasteFromWord : "Word-etik itsatsi", DlgPasteMsg2 : "Mesedez teklatua erabilita (Ctrl+V) ondorego eremuan testua itsatsi eta OK sakatu.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.", DlgPasteIgnoreFont : "Letra Motaren definizioa ezikusi", DlgPasteRemoveStyles : "Estilo definizioak kendu", -DlgPasteCleanBox : "Testu-eremua Garbitu", // Color Picker ColorAutomatic : "Automatikoa", @@ -382,9 +398,9 @@ IeSpellDownload : "Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu na // Button Dialog DlgButtonText : "Testua (Balorea)", DlgButtonType : "Mota", -DlgButtonTypeBtn : "Button", //MISSING -DlgButtonTypeSbm : "Submit", //MISSING -DlgButtonTypeRst : "Reset", //MISSING +DlgButtonTypeBtn : "Botoia", +DlgButtonTypeSbm : "Bidali", +DlgButtonTypeRst : "Garbitu", // Checkbox and Radio Button Dialogs DlgCheckboxName : "Izena", @@ -433,7 +449,7 @@ DlgHiddenValue : "Balorea", // Bulleted List Dialog BulletedListProp : "Buletdun Zerrendaren Ezarpenak", NumberedListProp : "Zenbakidun Zerrendaren Ezarpenak", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Hasiera", DlgLstType : "Mota", DlgLstTypeCircle : "Zirkulua", DlgLstTypeDisc : "Diskoa", @@ -456,16 +472,16 @@ DlgDocLangDirLTR : "Ezkerretik eskumara (LTR)", DlgDocLangDirRTL : "Eskumatik ezkerrera (RTL)", DlgDocLangCode : "Hizkuntzaren Kodea", DlgDocCharSet : "Karaktere Multzoaren Kodeketa", -DlgDocCharSetCE : "Central European", //MISSING -DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING -DlgDocCharSetCR : "Cyrillic", //MISSING -DlgDocCharSetGR : "Greek", //MISSING -DlgDocCharSetJP : "Japanese", //MISSING -DlgDocCharSetKR : "Korean", //MISSING -DlgDocCharSetTR : "Turkish", //MISSING -DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING -DlgDocCharSetWE : "Western European", //MISSING -DlgDocCharSetOther : "Beste Karaktere Multzoaren Kodeketa", +DlgDocCharSetCE : "Erdialdeko Europakoa", +DlgDocCharSetCT : "Txinatar Tradizionala (Big5)", +DlgDocCharSetCR : "Zirilikoa", +DlgDocCharSetGR : "Grekoa", +DlgDocCharSetJP : "Japoniarra", +DlgDocCharSetKR : "Korearra", +DlgDocCharSetTR : "Turkiarra", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Mendebaldeko Europakoa", +DlgDocCharSetOther : "Beste Karaktere Multzoko Kodeketa", DlgDocDocType : "Document Type Goiburua", DlgDocDocTypeOther : "Beste Document Type Goiburua", @@ -494,12 +510,18 @@ DlgTemplatesTitle : "Eduki Txantiloiak", DlgTemplatesSelMsg : "Mesedez txantiloia aukeratu editorean kargatzeko
    (orain dauden edukiak galduko dira):", DlgTemplatesLoading : "Txantiloiak kargatzen. Itxaron mesedez...", DlgTemplatesNoTpl : "(Ez dago definitutako txantiloirik)", -DlgTemplatesReplace : "Replace actual contents", //MISSING +DlgTemplatesReplace : "Ordeztu oraingo edukiak", // About Dialog DlgAboutAboutTab : "Honi buruz", DlgAboutBrowserInfoTab : "Nabigatzailearen Informazioa", DlgAboutLicenseTab : "Lizentzia", DlgAboutVersion : "bertsioa", -DlgAboutInfo : "Informazio gehiago eskuratzeko hona joan" -}; \ No newline at end of file +DlgAboutInfo : "Informazio gehiago eskuratzeko hona joan", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/fa.js b/static/contrib/fckeditor-2.6.3/editor/lang/fa.js old mode 100644 new mode 100755 similarity index 91% rename from static/fckeditor/editor/lang/fa.js rename to static/contrib/fckeditor-2.6.3/editor/lang/fa.js index e1bc973..a638526 --- a/static/fckeditor/editor/lang/fa.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/fa.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "برداشتن فرمت", InsertLinkLbl : "پیوند", InsertLink : "گنجاندن/ویرایش ِپیوند", RemoveLink : "برداشتن پیوند", +VisitLink : "باز کردن پیوند", Anchor : "گنجاندن/ویرایش ِلنگر", +AnchorDelete : "برداشتن لنگر", InsertImageLbl : "تصویر", InsertImage : "گنجاندن/ویرایش ِتصویر", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "راست‌چین", BlockJustify : "بلوک‌چین", DecreaseIndent : "کاهش تورفتگی", IncreaseIndent : "افزایش تورفتگی", +Blockquote : "بلوک نقل قول", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "واچیدن", Redo : "بازچیدن", NumberedListLbl : "فهرست شماره‌دار", @@ -103,20 +109,27 @@ SelectionField : "فیلد چندگزینه‌ای", ImageButton : "دکمهٴ تصویری", FitWindow : "بیشینه‌سازی ِاندازهٴ ویرایشگر", +ShowBlocks : "نمایش بلوک‌ها", // Context Menu EditLink : "ویرایش پیوند", CellCM : "سلول", RowCM : "سطر", ColumnCM : "ستون", -InsertRow : "گنجاندن سطر", +InsertRowAfter : "افزودن سطر بعد از", +InsertRowBefore : "افزودن سطر قبل از", DeleteRows : "حذف سطرها", -InsertColumn : "گنجاندن ستون", +InsertColumnAfter : "افزودن ستون بعد از", +InsertColumnBefore : "افزودن ستون قبل از", DeleteColumns : "حذف ستونها", -InsertCell : "گنجاندن سلول", +InsertCellAfter : "افزودن سلول بعد از", +InsertCellBefore : "افزودن سلول قبل از", DeleteCells : "حذف سلولها", MergeCells : "ادغام سلولها", -SplitCell : "جداسازی سلول", +MergeRight : "ادغام به راست", +MergeDown : "ادغام به پایین", +HorizontalSplitCell : "جدا کردن افقی سلول", +VerticalSplitCell : "جدا کردن عمودی سلول", TableDelete : "پاک‌کردن جدول", CellProperties : "ویژگیهای سلول", TableProperties : "ویژگیهای جدول", @@ -134,7 +147,7 @@ SelectionFieldProp : "ویژگیهای فیلد چندگزینه‌ای", TextareaProp : "ویژگیهای ناحیهٴ متنی", FormProp : "ویژگیهای فرم", -FontFormats : "نرمال;فرمت‌شده;آدرس;سرنویس 1;سرنویس 2;سرنویس 3;سرنویس 4;سرنویس 5;سرنویس 6;بند;(DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "نرمال;فرمت‌شده;آدرس;سرنویس 1;سرنویس 2;سرنویس 3;سرنویس 4;سرنویس 5;سرنویس 6;بند;(DIV)", // Alerts and Messages ProcessingXHTML : "پردازش XHTML. لطفا صبر کنید...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "مجموعهٴ نوارابزار \"%1\" وجود ندار NoActiveX : "تنظیمات امنیتی مرورگر شما ممکن است در بعضی از ویژگیهای مرورگر محدودیت ایجاد کند. شما باید گزینهٴ \"Run ActiveX controls and plug-ins\" را فعال کنید. ممکن است شما با خطاهایی روبرو باشید و متوجه کمبود ویژگیهایی شوید.", BrowseServerBlocked : "توانایی بازگشایی مرورگر منابع فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.", DialogBlocked : "توانایی بازگشایی پنجرهٴ کوچک ِگفتگو فراهم نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.", +VisitLinkBlocked : "امکان بازکردن یک پنجره جدید نیست. اطمینان حاصل کنید که تمامی برنامه‌های پیشگیری از نمایش popup را از کار بازداشته‌اید.", // Dialogs DlgBtnOK : "پذیرش", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "یک لنگر برگزینید", DlgLnkAnchorByName : "با نام لنگر", DlgLnkAnchorById : "با شناسهٴ المان", -DlgLnkNoAnchors : "(در این سند لنگری دردسترس نیست)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(در این سند لنگری دردسترس نیست)", DlgLnkEMail : "نشانی پست الکترونیکی", DlgLnkEMailSubject : "موضوع پیام", DlgLnkEMailBody : "متن پیام", @@ -322,6 +336,9 @@ DlgCellBackColor : "رنگ پس‌زمینه", DlgCellBorderColor : "رنگ لبه", DlgCellBtnSelect : "برگزینید...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "جستجو و جایگزینی", + // Find Dialog DlgFindTitle : "یافتن", DlgFindFindBtn : "یافتن", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "لطفا متن را با کلیدهای (Ctrl+V", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Ei ankkureita tässä dokumentissa)", DlgLnkEMail : "Sähköpostiosoite", DlgLnkEMailSubject : "Aihe", DlgLnkEMailBody : "Viesti", @@ -322,6 +336,9 @@ DlgCellBackColor : "Taustaväri", DlgCellBorderColor : "Rajan väri", DlgCellBtnSelect : "Valitse...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Etsi ja korvaa", + // Find Dialog DlgFindTitle : "Etsi", DlgFindFindBtn : "Etsi", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Liitä painamalla (Ctrl+V) ja painamalla with ( and ) +DlgLnkNoAnchors : "(Eingir marknasteinar eru í hesum dokumentið)", DlgLnkEMail : "Teldupost-adressa", DlgLnkEMailSubject : "Evni", DlgLnkEMailBody : "Breyðtekstur", @@ -322,6 +336,9 @@ DlgCellBackColor : "Bakgrundslitur", DlgCellBorderColor : "Litur á borda", DlgCellBtnSelect : "Vel...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Finn og broyt", + // Find Dialog DlgFindTitle : "Finn", DlgFindFindBtn : "Finn", @@ -337,20 +354,19 @@ DlgReplaceReplAllBtn : "Yvirskriva alt", DlgReplaceWordChk : "Bert heil orð", // Paste Operations / Dialog -PasteErrorCut : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).", +PasteErrorCut : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).", PasteErrorCopy : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).", PasteAsText : "Innrita som reinan tekst", PasteFromWord : "Innrita fra Word", DlgPasteMsg2 : "Vinarliga koyr tekstin í hendan rútin við knappaborðinum (CTRL+V) og klikk á Góðtak.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.", DlgPasteIgnoreFont : "Forfjóna Font definitiónirnar", -DlgPasteRemoveStyles : "Strika Styles definitiónir", -DlgPasteCleanBox : "Reinskanarkassi", +DlgPasteRemoveStyles : "Strika typografi definitiónir", // Color Picker -ColorAutomatic : "Av sær sjálvum", +ColorAutomatic : "Automatiskt", ColorMoreColors : "Fleiri litir...", // Document Properties @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Um", DlgAboutBrowserInfoTab : "Upplýsingar um alnótskagan", DlgAboutLicenseTab : "License", DlgAboutVersion : "version", -DlgAboutInfo : "Fyri fleiri upplýsingar, far til" -}; \ No newline at end of file +DlgAboutInfo : "Fyri fleiri upplýsingar, far til", + +// Div Dialog +DlgDivGeneralTab : "Generelt", +DlgDivAdvancedTab : "Fjølbroytt", +DlgDivStyle : "Typografi", +DlgDivInlineStyle : "Inline typografi" +}; diff --git a/static/contrib/fckeditor-2.6.3/editor/lang/fr-ca.js b/static/contrib/fckeditor-2.6.3/editor/lang/fr-ca.js new file mode 100755 index 0000000..eb40f8b --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/lang/fr-ca.js @@ -0,0 +1,526 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Canadian French language file. + */ + +var FCKLang = +{ +// Language direction : "ltr" (left to right) or "rtl" (right to left). +Dir : "ltr", + +ToolbarCollapse : "Masquer Outils", +ToolbarExpand : "Afficher Outils", + +// Toolbar Items and Context Menu +Save : "Sauvegarder", +NewPage : "Nouvelle page", +Preview : "Previsualiser", +Cut : "Couper", +Copy : "Copier", +Paste : "Coller", +PasteText : "Coller en tant que texte", +PasteWord : "Coller en tant que Word (formaté)", +Print : "Imprimer", +SelectAll : "Tout sélectionner", +RemoveFormat : "Supprimer le formatage", +InsertLinkLbl : "Lien", +InsertLink : "Insérer/modifier le lien", +RemoveLink : "Supprimer le lien", +VisitLink : "Suivre le lien", +Anchor : "Insérer/modifier l'ancre", +AnchorDelete : "Supprimer l'ancre", +InsertImageLbl : "Image", +InsertImage : "Insérer/modifier l'image", +InsertFlashLbl : "Animation Flash", +InsertFlash : "Insérer/modifier l'animation Flash", +InsertTableLbl : "Tableau", +InsertTable : "Insérer/modifier le tableau", +InsertLineLbl : "Séparateur", +InsertLine : "Insérer un séparateur", +InsertSpecialCharLbl: "Caractères spéciaux", +InsertSpecialChar : "Insérer un caractère spécial", +InsertSmileyLbl : "Emoticon", +InsertSmiley : "Insérer un Emoticon", +About : "A propos de FCKeditor", +Bold : "Gras", +Italic : "Italique", +Underline : "Souligné", +StrikeThrough : "Barrer", +Subscript : "Indice", +Superscript : "Exposant", +LeftJustify : "Aligner à gauche", +CenterJustify : "Centrer", +RightJustify : "Aligner à Droite", +BlockJustify : "Texte justifié", +DecreaseIndent : "Diminuer le retrait", +IncreaseIndent : "Augmenter le retrait", +Blockquote : "Citation", +CreateDiv : "Créer Balise Div", +EditDiv : "Modifier Balise Div", +DeleteDiv : "Supprimer Balise Div", +Undo : "Annuler", +Redo : "Refaire", +NumberedListLbl : "Liste numérotée", +NumberedList : "Insérer/supprimer la liste numérotée", +BulletedListLbl : "Liste à puces", +BulletedList : "Insérer/supprimer la liste à puces", +ShowTableBorders : "Afficher les bordures du tableau", +ShowDetails : "Afficher les caractères invisibles", +Style : "Style", +FontFormat : "Format", +Font : "Police", +FontSize : "Taille", +TextColor : "Couleur de caractère", +BGColor : "Couleur de fond", +Source : "Source", +Find : "Chercher", +Replace : "Remplacer", +SpellCheck : "Orthographe", +UniversalKeyboard : "Clavier universel", +PageBreakLbl : "Saut de page", +PageBreak : "Insérer un saut de page", + +Form : "Formulaire", +Checkbox : "Case à cocher", +RadioButton : "Bouton radio", +TextField : "Champ texte", +Textarea : "Zone de texte", +HiddenField : "Champ caché", +Button : "Bouton", +SelectionField : "Champ de sélection", +ImageButton : "Bouton image", + +FitWindow : "Edition pleine page", +ShowBlocks : "Afficher les blocs", + +// Context Menu +EditLink : "Modifier le lien", +CellCM : "Cellule", +RowCM : "Ligne", +ColumnCM : "Colonne", +InsertRowAfter : "Insérer une ligne après", +InsertRowBefore : "Insérer une ligne avant", +DeleteRows : "Supprimer des lignes", +InsertColumnAfter : "Insérer une colonne après", +InsertColumnBefore : "Insérer une colonne avant", +DeleteColumns : "Supprimer des colonnes", +InsertCellAfter : "Insérer une cellule après", +InsertCellBefore : "Insérer une cellule avant", +DeleteCells : "Supprimer des cellules", +MergeCells : "Fusionner les cellules", +MergeRight : "Fusionner à droite", +MergeDown : "Fusionner en bas", +HorizontalSplitCell : "Scinder la cellule horizontalement", +VerticalSplitCell : "Scinder la cellule verticalement", +TableDelete : "Supprimer le tableau", +CellProperties : "Propriétés de cellule", +TableProperties : "Propriétés du tableau", +ImageProperties : "Propriétés de l'image", +FlashProperties : "Propriétés de l'animation Flash", + +AnchorProp : "Propriétés de l'ancre", +ButtonProp : "Propriétés du bouton", +CheckboxProp : "Propriétés de la case à cocher", +HiddenFieldProp : "Propriétés du champ caché", +RadioButtonProp : "Propriétés du bouton radio", +ImageButtonProp : "Propriétés du bouton image", +TextFieldProp : "Propriétés du champ texte", +SelectionFieldProp : "Propriétés de la liste/du menu", +TextareaProp : "Propriétés de la zone de texte", +FormProp : "Propriétés du formulaire", + +FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)", + +// Alerts and Messages +ProcessingXHTML : "Calcul XHTML. Veuillez patienter...", +Done : "Terminé", +PasteWordConfirm : "Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?", +NotCompatiblePaste : "Cette commande nécessite Internet Explorer version 5.5 et plus. Souhaitez-vous coller sans nettoyage?", +UnknownToolbarItem : "Élément de barre d'outil inconnu \"%1\"", +UnknownCommand : "Nom de commande inconnu \"%1\"", +NotImplemented : "Commande indisponible", +UnknownToolbarSet : "La barre d'outils \"%1\" n'existe pas", +NoActiveX : "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.", +BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.", +DialogBlocked : "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING + +// Dialogs +DlgBtnOK : "OK", +DlgBtnCancel : "Annuler", +DlgBtnClose : "Fermer", +DlgBtnBrowseServer : "Parcourir le serveur", +DlgAdvancedTag : "Avancée", +DlgOpOther : "", +DlgInfoTab : "Info", +DlgAlertUrl : "Veuillez saisir l'URL", + +// General Dialogs Labels +DlgGenNotSet : "", +DlgGenId : "Id", +DlgGenLangDir : "Sens d'écriture", +DlgGenLangDirLtr : "De gauche à droite (LTR)", +DlgGenLangDirRtl : "De droite à gauche (RTL)", +DlgGenLangCode : "Code langue", +DlgGenAccessKey : "Équivalent clavier", +DlgGenName : "Nom", +DlgGenTabIndex : "Ordre de tabulation", +DlgGenLongDescr : "URL de description longue", +DlgGenClass : "Classes de feuilles de style", +DlgGenTitle : "Titre", +DlgGenContType : "Type de contenu", +DlgGenLinkCharset : "Encodage de caractère", +DlgGenStyle : "Style", + +// Image Dialog +DlgImgTitle : "Propriétés de l'image", +DlgImgInfoTab : "Informations sur l'image", +DlgImgBtnUpload : "Envoyer sur le serveur", +DlgImgURL : "URL", +DlgImgUpload : "Télécharger", +DlgImgAlt : "Texte de remplacement", +DlgImgWidth : "Largeur", +DlgImgHeight : "Hauteur", +DlgImgLockRatio : "Garder les proportions", +DlgBtnResetSize : "Taille originale", +DlgImgBorder : "Bordure", +DlgImgHSpace : "Espacement horizontal", +DlgImgVSpace : "Espacement vertical", +DlgImgAlign : "Alignement", +DlgImgAlignLeft : "Gauche", +DlgImgAlignAbsBottom: "Abs Bas", +DlgImgAlignAbsMiddle: "Abs Milieu", +DlgImgAlignBaseline : "Bas du texte", +DlgImgAlignBottom : "Bas", +DlgImgAlignMiddle : "Milieu", +DlgImgAlignRight : "Droite", +DlgImgAlignTextTop : "Haut du texte", +DlgImgAlignTop : "Haut", +DlgImgPreview : "Prévisualisation", +DlgImgAlertUrl : "Veuillez saisir l'URL de l'image", +DlgImgLinkTab : "Lien", + +// Flash Dialog +DlgFlashTitle : "Propriétés de l'animation Flash", +DlgFlashChkPlay : "Lecture automatique", +DlgFlashChkLoop : "Boucle", +DlgFlashChkMenu : "Activer le menu Flash", +DlgFlashScale : "Affichage", +DlgFlashScaleAll : "Par défaut (tout montrer)", +DlgFlashScaleNoBorder : "Sans bordure", +DlgFlashScaleFit : "Ajuster aux dimensions", + +// Link Dialog +DlgLnkWindowTitle : "Propriétés du lien", +DlgLnkInfoTab : "Informations sur le lien", +DlgLnkTargetTab : "Destination", + +DlgLnkType : "Type de lien", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "Ancre dans cette page", +DlgLnkTypeEMail : "E-Mail", +DlgLnkProto : "Protocole", +DlgLnkProtoOther : "", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "Sélectionner une ancre", +DlgLnkAnchorByName : "Par nom", +DlgLnkAnchorById : "Par id", +DlgLnkNoAnchors : "(Pas d'ancre disponible dans le document)", +DlgLnkEMail : "Adresse E-Mail", +DlgLnkEMailSubject : "Sujet du message", +DlgLnkEMailBody : "Corps du message", +DlgLnkUpload : "Télécharger", +DlgLnkBtnUpload : "Envoyer sur le serveur", + +DlgLnkTarget : "Destination", +DlgLnkTargetFrame : "", +DlgLnkTargetPopup : "", +DlgLnkTargetBlank : "Nouvelle fenêtre (_blank)", +DlgLnkTargetParent : "Fenêtre mère (_parent)", +DlgLnkTargetSelf : "Même fenêtre (_self)", +DlgLnkTargetTop : "Fenêtre supérieure (_top)", +DlgLnkTargetFrameName : "Nom du cadre de destination", +DlgLnkPopWinName : "Nom de la fenêtre popup", +DlgLnkPopWinFeat : "Caractéristiques de la fenêtre popup", +DlgLnkPopResize : "Taille modifiable", +DlgLnkPopLocation : "Barre d'adresses", +DlgLnkPopMenu : "Barre de menu", +DlgLnkPopScroll : "Barres de défilement", +DlgLnkPopStatus : "Barre d'état", +DlgLnkPopToolbar : "Barre d'outils", +DlgLnkPopFullScrn : "Plein écran (IE)", +DlgLnkPopDependent : "Dépendante (Netscape)", +DlgLnkPopWidth : "Largeur", +DlgLnkPopHeight : "Hauteur", +DlgLnkPopLeft : "Position à partir de la gauche", +DlgLnkPopTop : "Position à partir du haut", + +DlnLnkMsgNoUrl : "Veuillez saisir l'URL", +DlnLnkMsgNoEMail : "Veuillez saisir l'adresse e-mail", +DlnLnkMsgNoAnchor : "Veuillez sélectionner une ancre", +DlnLnkMsgInvPopName : "Le nom de la fenêtre popup doit commencer par une lettre et ne doit pas contenir d'espace", + +// Color Dialog +DlgColorTitle : "Sélectionner", +DlgColorBtnClear : "Effacer", +DlgColorHighlight : "Prévisualisation", +DlgColorSelected : "Sélectionné", + +// Smiley Dialog +DlgSmileyTitle : "Insérer un Emoticon", + +// Special Character Dialog +DlgSpecialCharTitle : "Insérer un caractère spécial", + +// Table Dialog +DlgTableTitle : "Propriétés du tableau", +DlgTableRows : "Lignes", +DlgTableColumns : "Colonnes", +DlgTableBorder : "Taille de la bordure", +DlgTableAlign : "Alignement", +DlgTableAlignNotSet : "", +DlgTableAlignLeft : "Gauche", +DlgTableAlignCenter : "Centré", +DlgTableAlignRight : "Droite", +DlgTableWidth : "Largeur", +DlgTableWidthPx : "pixels", +DlgTableWidthPc : "pourcentage", +DlgTableHeight : "Hauteur", +DlgTableCellSpace : "Espacement", +DlgTableCellPad : "Contour", +DlgTableCaption : "Titre", +DlgTableSummary : "Résumé", + +// Table Cell Dialog +DlgCellTitle : "Propriétés de la cellule", +DlgCellWidth : "Largeur", +DlgCellWidthPx : "pixels", +DlgCellWidthPc : "pourcentage", +DlgCellHeight : "Hauteur", +DlgCellWordWrap : "Retour à la ligne", +DlgCellWordWrapNotSet : "", +DlgCellWordWrapYes : "Oui", +DlgCellWordWrapNo : "Non", +DlgCellHorAlign : "Alignement horizontal", +DlgCellHorAlignNotSet : "", +DlgCellHorAlignLeft : "Gauche", +DlgCellHorAlignCenter : "Centré", +DlgCellHorAlignRight: "Droite", +DlgCellVerAlign : "Alignement vertical", +DlgCellVerAlignNotSet : "", +DlgCellVerAlignTop : "Haut", +DlgCellVerAlignMiddle : "Milieu", +DlgCellVerAlignBottom : "Bas", +DlgCellVerAlignBaseline : "Bas du texte", +DlgCellRowSpan : "Lignes fusionnées", +DlgCellCollSpan : "Colonnes fusionnées", +DlgCellBackColor : "Couleur de fond", +DlgCellBorderColor : "Couleur de bordure", +DlgCellBtnSelect : "Sélectionner...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Chercher et Remplacer", + +// Find Dialog +DlgFindTitle : "Chercher", +DlgFindFindBtn : "Chercher", +DlgFindNotFoundMsg : "Le texte indiqué est introuvable.", + +// Replace Dialog +DlgReplaceTitle : "Remplacer", +DlgReplaceFindLbl : "Rechercher:", +DlgReplaceReplaceLbl : "Remplacer par:", +DlgReplaceCaseChk : "Respecter la casse", +DlgReplaceReplaceBtn : "Remplacer", +DlgReplaceReplAllBtn : "Tout remplacer", +DlgReplaceWordChk : "Mot entier", + +// Paste Operations / Dialog +PasteErrorCut : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+X).", +PasteErrorCopy : "Les paramètres de sécurité de votre navigateur empêchent l'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).", + +PasteAsText : "Coller comme texte", +PasteFromWord : "Coller à partir de Word", + +DlgPasteMsg2 : "Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl+V) et appuyer sur OK.", +DlgPasteSec : "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.", +DlgPasteIgnoreFont : "Ignorer les polices de caractères", +DlgPasteRemoveStyles : "Supprimer les styles", + +// Color Picker +ColorAutomatic : "Automatique", +ColorMoreColors : "Plus de couleurs...", + +// Document Properties +DocProps : "Propriétés du document", + +// Anchor Dialog +DlgAnchorTitle : "Propriétés de l'ancre", +DlgAnchorName : "Nom de l'ancre", +DlgAnchorErrorName : "Veuillez saisir le nom de l'ancre", + +// Speller Pages Dialog +DlgSpellNotInDic : "Pas dans le dictionnaire", +DlgSpellChangeTo : "Changer en", +DlgSpellBtnIgnore : "Ignorer", +DlgSpellBtnIgnoreAll : "Ignorer tout", +DlgSpellBtnReplace : "Remplacer", +DlgSpellBtnReplaceAll : "Remplacer tout", +DlgSpellBtnUndo : "Annuler", +DlgSpellNoSuggestions : "- Pas de suggestion -", +DlgSpellProgress : "Vérification d'orthographe en cours...", +DlgSpellNoMispell : "Vérification d'orthographe terminée: pas d'erreur trouvée", +DlgSpellNoChanges : "Vérification d'orthographe terminée: Pas de modifications", +DlgSpellOneChange : "Vérification d'orthographe terminée: Un mot modifié", +DlgSpellManyChanges : "Vérification d'orthographe terminée: %1 mots modifiés", + +IeSpellDownload : "Le Correcteur d'orthographe n'est pas installé. Souhaitez-vous le télécharger maintenant?", + +// Button Dialog +DlgButtonText : "Texte (Valeur)", +DlgButtonType : "Type", +DlgButtonTypeBtn : "Bouton", +DlgButtonTypeSbm : "Soumettre", +DlgButtonTypeRst : "Réinitialiser", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "Nom", +DlgCheckboxValue : "Valeur", +DlgCheckboxSelected : "Sélectionné", + +// Form Dialog +DlgFormName : "Nom", +DlgFormAction : "Action", +DlgFormMethod : "Méthode", + +// Select Field Dialog +DlgSelectName : "Nom", +DlgSelectValue : "Valeur", +DlgSelectSize : "Taille", +DlgSelectLines : "lignes", +DlgSelectChkMulti : "Sélection multiple", +DlgSelectOpAvail : "Options disponibles", +DlgSelectOpText : "Texte", +DlgSelectOpValue : "Valeur", +DlgSelectBtnAdd : "Ajouter", +DlgSelectBtnModify : "Modifier", +DlgSelectBtnUp : "Monter", +DlgSelectBtnDown : "Descendre", +DlgSelectBtnSetValue : "Valeur sélectionnée", +DlgSelectBtnDelete : "Supprimer", + +// Textarea Dialog +DlgTextareaName : "Nom", +DlgTextareaCols : "Colonnes", +DlgTextareaRows : "Lignes", + +// Text Field Dialog +DlgTextName : "Nom", +DlgTextValue : "Valeur", +DlgTextCharWidth : "Largeur en caractères", +DlgTextMaxChars : "Nombre maximum de caractères", +DlgTextType : "Type", +DlgTextTypeText : "Texte", +DlgTextTypePass : "Mot de passe", + +// Hidden Field Dialog +DlgHiddenName : "Nom", +DlgHiddenValue : "Valeur", + +// Bulleted List Dialog +BulletedListProp : "Propriétés de liste à puces", +NumberedListProp : "Propriétés de liste numérotée", +DlgLstStart : "Début", +DlgLstType : "Type", +DlgLstTypeCircle : "Cercle", +DlgLstTypeDisc : "Disque", +DlgLstTypeSquare : "Carré", +DlgLstTypeNumbers : "Nombres (1, 2, 3)", +DlgLstTypeLCase : "Lettres minuscules (a, b, c)", +DlgLstTypeUCase : "Lettres majuscules (A, B, C)", +DlgLstTypeSRoman : "Chiffres romains minuscules (i, ii, iii)", +DlgLstTypeLRoman : "Chiffres romains majuscules (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "Général", +DlgDocBackTab : "Fond", +DlgDocColorsTab : "Couleurs et Marges", +DlgDocMetaTab : "Méta-Données", + +DlgDocPageTitle : "Titre de la page", +DlgDocLangDir : "Sens d'écriture", +DlgDocLangDirLTR : "De la gauche vers la droite (LTR)", +DlgDocLangDirRTL : "De la droite vers la gauche (RTL)", +DlgDocLangCode : "Code langue", +DlgDocCharSet : "Encodage de caractère", +DlgDocCharSetCE : "Europe Centrale", +DlgDocCharSetCT : "Chinois Traditionnel (Big5)", +DlgDocCharSetCR : "Cyrillique", +DlgDocCharSetGR : "Grecque", +DlgDocCharSetJP : "Japonais", +DlgDocCharSetKR : "Coréen", +DlgDocCharSetTR : "Turcque", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Occidental", +DlgDocCharSetOther : "Autre encodage de caractère", + +DlgDocDocType : "Type de document", +DlgDocDocTypeOther : "Autre type de document", +DlgDocIncXHTML : "Inclure les déclarations XHTML", +DlgDocBgColor : "Couleur de fond", +DlgDocBgImage : "Image de fond", +DlgDocBgNoScroll : "Image fixe sans défilement", +DlgDocCText : "Texte", +DlgDocCLink : "Lien", +DlgDocCVisited : "Lien visité", +DlgDocCActive : "Lien activé", +DlgDocMargins : "Marges", +DlgDocMaTop : "Haut", +DlgDocMaLeft : "Gauche", +DlgDocMaRight : "Droite", +DlgDocMaBottom : "Bas", +DlgDocMeIndex : "Mots-clés (séparés par des virgules)", +DlgDocMeDescr : "Description", +DlgDocMeAuthor : "Auteur", +DlgDocMeCopy : "Copyright", +DlgDocPreview : "Prévisualisation", + +// Templates Dialog +Templates : "Modèles", +DlgTemplatesTitle : "Modèles de contenu", +DlgTemplatesSelMsg : "Sélectionner le modèle à ouvrir dans l'éditeur
    (le contenu actuel sera remplacé):", +DlgTemplatesLoading : "Chargement de la liste des modèles. Veuillez patienter...", +DlgTemplatesNoTpl : "(Aucun modèle disponible)", +DlgTemplatesReplace : "Remplacer tout le contenu actuel", + +// About Dialog +DlgAboutAboutTab : "Á propos de", +DlgAboutBrowserInfoTab : "Navigateur", +DlgAboutLicenseTab : "License", +DlgAboutVersion : "Version", +DlgAboutInfo : "Pour plus d'informations, visiter", + +// Div Dialog +DlgDivGeneralTab : "Général", +DlgDivAdvancedTab : "Avancé", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Attribut Style" +}; diff --git a/static/fckeditor/editor/lang/fr.js b/static/contrib/fckeditor-2.6.3/editor/lang/fr.js old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/editor/lang/fr.js rename to static/contrib/fckeditor-2.6.3/editor/lang/fr.js index 6d46fa0..7b744ad --- a/static/fckeditor/editor/lang/fr.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/fr.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Supprimer le format", InsertLinkLbl : "Lien", InsertLink : "Insérer/modifier le lien", RemoveLink : "Supprimer le lien", +VisitLink : "Suivre le lien", Anchor : "Insérer/modifier l'ancre", +AnchorDelete : "Supprimer l'ancre", InsertImageLbl : "Image", InsertImage : "Insérer/modifier l'image", InsertFlashLbl : "Animation Flash", @@ -70,6 +72,10 @@ RightJustify : "Aligné à Droite", BlockJustify : "Texte justifié", DecreaseIndent : "Diminuer le retrait", IncreaseIndent : "Augmenter le retrait", +Blockquote : "Citation", +CreateDiv : "Créer Balise Div", +EditDiv : "Modifier Balise Div", +DeleteDiv : "Supprimer Balise Div", Undo : "Annuler", Redo : "Refaire", NumberedListLbl : "Liste numérotée", @@ -103,20 +109,27 @@ SelectionField : "Liste/menu", ImageButton : "Bouton image", FitWindow : "Edition pleine page", +ShowBlocks : "Afficher les blocs", // Context Menu EditLink : "Modifier le lien", CellCM : "Cellule", RowCM : "Ligne", ColumnCM : "Colonne", -InsertRow : "Insérer une ligne", +InsertRowAfter : "Insérer une ligne après", +InsertRowBefore : "Insérer une ligne avant", DeleteRows : "Supprimer des lignes", -InsertColumn : "Insérer une colonne", +InsertColumnAfter : "Insérer une colonne après", +InsertColumnBefore : "Insérer une colonne avant", DeleteColumns : "Supprimer des colonnes", -InsertCell : "Insérer une cellule", +InsertCellAfter : "Insérer une cellule après", +InsertCellBefore : "Insérer une cellule avant", DeleteCells : "Supprimer des cellules", MergeCells : "Fusionner les cellules", -SplitCell : "Scinder les cellules", +MergeRight : "Fusionner à droite", +MergeDown : "Fusionner en bas", +HorizontalSplitCell : "Scinder la cellule horizontalement", +VerticalSplitCell : "Scinder la cellule verticalement", TableDelete : "Supprimer le tableau", CellProperties : "Propriétés de cellule", TableProperties : "Propriétés du tableau", @@ -134,7 +147,7 @@ SelectionFieldProp : "Propriétés de la liste/du menu", TextareaProp : "Propriétés de la zone de texte", FormProp : "Propriétés du formulaire", -FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formaté;Adresse;En-tête 1;En-tête 2;En-tête 3;En-tête 4;En-tête 5;En-tête 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Calcul XHTML. Veuillez patienter...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "La barre d'outils \"%1\" n'existe pas", NoActiveX : "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.", BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.", DialogBlocked : "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.", +VisitLinkBlocked : "Impossible d'ouvrir une nouvelle fenêtre. Assurez-vous que les bloqueurs de popups soient désactivés.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Sélectionner une ancre", DlgLnkAnchorByName : "Par nom", DlgLnkAnchorById : "Par id", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Pas d'ancre disponible dans le document)", DlgLnkEMail : "Adresse E-Mail", DlgLnkEMailSubject : "Sujet du message", DlgLnkEMailBody : "Corps du message", @@ -237,7 +251,7 @@ DlgLnkUpload : "Télécharger", DlgLnkBtnUpload : "Envoyer sur le serveur", DlgLnkTarget : "Destination", -DlgLnkTargetFrame : "", +DlgLnkTargetFrame : "", DlgLnkTargetPopup : "", DlgLnkTargetBlank : "Nouvelle fenêtre (_blank)", DlgLnkTargetParent : "Fenêtre mère (_parent)", @@ -322,6 +336,9 @@ DlgCellBackColor : "Fond", DlgCellBorderColor : "Bordure", DlgCellBtnSelect : "Choisir...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Chercher et Remplacer", + // Find Dialog DlgFindTitle : "Chercher", DlgFindFindBtn : "Chercher", @@ -344,10 +361,9 @@ PasteAsText : "Coller comme texte", PasteFromWord : "Coller à partir de Word", DlgPasteMsg2 : "Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl+V) et cliquez sur OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "A cause des paramètres de sécurité de votre navigateur, l'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.", DlgPasteIgnoreFont : "Ignorer les polices de caractères", DlgPasteRemoveStyles : "Supprimer les styles", -DlgPasteCleanBox : "Effacer le contenu", // Color Picker ColorAutomatic : "Automatique", @@ -459,7 +475,7 @@ DlgDocCharSetCE : "Europe Centrale", DlgDocCharSetCT : "Chinois Traditionnel (Big5)", DlgDocCharSetCR : "Cyrillique", DlgDocCharSetGR : "Grec", -DlgDocCharSetJP : "Japanais", +DlgDocCharSetJP : "Japonais", DlgDocCharSetKR : "Coréen", DlgDocCharSetTR : "Turc", DlgDocCharSetUN : "Unicode (UTF-8)", @@ -498,7 +514,13 @@ DlgTemplatesReplace : "Remplacer tout le contenu", // About Dialog DlgAboutAboutTab : "A propos de", DlgAboutBrowserInfoTab : "Navigateur", -DlgAboutLicenseTab : "License", -DlgAboutVersion : "version", -DlgAboutInfo : "Pour plus d'informations, aller à" -}; \ No newline at end of file +DlgAboutLicenseTab : "Licence", +DlgAboutVersion : "Version", +DlgAboutInfo : "Pour plus d'informations, aller à", + +// Div Dialog +DlgDivGeneralTab : "Général", +DlgDivAdvancedTab : "Avancé", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Attribut Style" +}; diff --git a/static/fckeditor/editor/lang/gl.js b/static/contrib/fckeditor-2.6.3/editor/lang/gl.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/gl.js rename to static/contrib/fckeditor-2.6.3/editor/lang/gl.js index 238d108..560969f --- a/static/fckeditor/editor/lang/gl.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/gl.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Eliminar Formato", InsertLinkLbl : "Ligazón", InsertLink : "Inserir/Editar Ligazón", RemoveLink : "Eliminar Ligazón", +VisitLink : "Open Link", //MISSING Anchor : "Inserir/Editar Referencia", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Imaxe", InsertImage : "Inserir/Editar Imaxe", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Aliñar á Dereita", BlockJustify : "Xustificado", DecreaseIndent : "Disminuir Sangría", IncreaseIndent : "Aumentar Sangría", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Desfacer", Redo : "Refacer", NumberedListLbl : "Lista Numerada", @@ -103,20 +109,27 @@ SelectionField : "Campo de Selección", ImageButton : "Botón de Imaxe", FitWindow : "Maximizar o tamaño do editor", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Editar Ligazón", CellCM : "Cela", RowCM : "Fila", ColumnCM : "Columna", -InsertRow : "Inserir Fila", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Borrar Filas", -InsertColumn : "Inserir Columna", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Borrar Columnas", -InsertCell : "Inserir Cela", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Borrar Cela", MergeCells : "Unir Celas", -SplitCell : "Partir Celas", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Borrar Táboa", CellProperties : "Propriedades da Cela", TableProperties : "Propriedades da Táboa", @@ -134,7 +147,7 @@ SelectionFieldProp : "Propriedades do Campo de Selección", TextareaProp : "Propriedades da Área de Texto", FormProp : "Propriedades do Formulario", -FontFormats : "Normal;Formateado;Enderezo;Enacabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Paragraph (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formateado;Enderezo;Enacabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Paragraph (DIV)", // Alerts and Messages ProcessingXHTML : "Procesando XHTML. Por facor, agarde...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "O conxunto de ferramentas \"%1\" non existe", NoActiveX : "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros", BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes", DialogBlocked : "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Seleccionar unha Referencia", DlgLnkAnchorByName : "Por Nome de Referencia", DlgLnkAnchorById : "Por Element Id", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Non hai referencias disponibles no documento)", DlgLnkEMail : "Enderezo de E-Mail", DlgLnkEMailSubject : "Asunto do Mensaxe", DlgLnkEMailBody : "Corpo do Mensaxe", @@ -322,6 +336,9 @@ DlgCellBackColor : "Color de Fondo", DlgCellBorderColor : "Color de Borde", DlgCellBtnSelect : "Seleccionar...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Procurar", DlgFindFindBtn : "Procurar", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Por favor, pegue dentro do seguinte cadro usando o teclado (", +DlgInfoTab : "સૂચના", +DlgAlertUrl : "URL ઇન્સર્ટ કરો", + +// General Dialogs Labels +DlgGenNotSet : "<સેટ નથી>", +DlgGenId : "Id", +DlgGenLangDir : "ભાષા લેખવાની પદ્ધતિ", +DlgGenLangDirLtr : "ડાબે થી જમણે (LTR)", +DlgGenLangDirRtl : "જમણે થી ડાબે (RTL)", +DlgGenLangCode : "ભાષા કોડ", +DlgGenAccessKey : "ઍક્સેસ કી", +DlgGenName : "નામ", +DlgGenTabIndex : "ટૅબ ઇન્ડેક્સ", +DlgGenLongDescr : "વધારે માહિતી માટે URL", +DlgGenClass : "સ્ટાઇલ-શીટ ક્લાસ", +DlgGenTitle : "મુખ્ય મથાળું", +DlgGenContType : "મુખ્ય કન્ટેન્ટ પ્રકાર", +DlgGenLinkCharset : "લિંક રિસૉર્સ કૅરિક્ટર સેટ", +DlgGenStyle : "સ્ટાઇલ", + +// Image Dialog +DlgImgTitle : "ચિત્રના ગુણ", +DlgImgInfoTab : "ચિત્ર ની જાણકારી", +DlgImgBtnUpload : "આ સર્વરને મોકલવું", +DlgImgURL : "URL", +DlgImgUpload : "અપલોડ", +DlgImgAlt : "ઑલ્ટર્નટ ટેક્સ્ટ", +DlgImgWidth : "પહોળાઈ", +DlgImgHeight : "ઊંચાઈ", +DlgImgLockRatio : "લૉક ગુણોત્તર", +DlgBtnResetSize : "રીસેટ સાઇઝ", +DlgImgBorder : "બોર્ડર", +DlgImgHSpace : "સમસ્તરીય જગ્યા", +DlgImgVSpace : "લંબરૂપ જગ્યા", +DlgImgAlign : "લાઇનદોરીમાં ગોઠવવું", +DlgImgAlignLeft : "ડાબી બાજુ ગોઠવવું", +DlgImgAlignAbsBottom: "Abs નીચે", +DlgImgAlignAbsMiddle: "Abs ઉપર", +DlgImgAlignBaseline : "આધાર લીટી", +DlgImgAlignBottom : "નીચે", +DlgImgAlignMiddle : "વચ્ચે", +DlgImgAlignRight : "જમણી", +DlgImgAlignTextTop : "ટેક્સ્ટ ઉપર", +DlgImgAlignTop : "ઉપર", +DlgImgPreview : "પૂર્વદર્શન", +DlgImgAlertUrl : "ચિત્રની URL ટાઇપ કરો", +DlgImgLinkTab : "લિંક", + +// Flash Dialog +DlgFlashTitle : "ફ્લૅશ ગુણ", +DlgFlashChkPlay : "ઑટો/સ્વયં પ્લે", +DlgFlashChkLoop : "લૂપ", +DlgFlashChkMenu : "ફ્લૅશ મેન્યૂ નો પ્રયોગ કરો", +DlgFlashScale : "સ્કેલ", +DlgFlashScaleAll : "સ્કેલ ઓલ/બધુ બતાવો", +DlgFlashScaleNoBorder : "સ્કેલ બોર્ડર વગર", +DlgFlashScaleFit : "સ્કેલ એકદમ ફીટ", + +// Link Dialog +DlgLnkWindowTitle : "લિંક", +DlgLnkInfoTab : "લિંક ઇન્ફૉ ટૅબ", +DlgLnkTargetTab : "ટાર્ગેટ/લક્ષ્ય ટૅબ", + +DlgLnkType : "લિંક પ્રકાર", +DlgLnkTypeURL : "URL", +DlgLnkTypeAnchor : "આ પેજનો ઍંકર", +DlgLnkTypeEMail : "ઈ-મેલ", +DlgLnkProto : "પ્રોટોકૉલ", +DlgLnkProtoOther : "<અન્ય>", +DlgLnkURL : "URL", +DlgLnkAnchorSel : "ઍંકર પસંદ કરો", +DlgLnkAnchorByName : "ઍંકર નામથી પસંદ કરો", +DlgLnkAnchorById : "ઍંકર એલિમન્ટ Id થી પસંદ કરો", +DlgLnkNoAnchors : "(ડૉક્યુમન્ટમાં ઍંકરની સંખ્યા)", +DlgLnkEMail : "ઈ-મેલ સરનામું", +DlgLnkEMailSubject : "ઈ-મેલ વિષય", +DlgLnkEMailBody : "સંદેશ", +DlgLnkUpload : "અપલોડ", +DlgLnkBtnUpload : "આ સર્વરને મોકલવું", + +DlgLnkTarget : "ટાર્ગેટ/લક્ષ્ય", +DlgLnkTargetFrame : "<ફ્રેમ>", +DlgLnkTargetPopup : "<પૉપ-અપ વિન્ડો>", +DlgLnkTargetBlank : "નવી વિન્ડો (_blank)", +DlgLnkTargetParent : "મૂળ વિન્ડો (_parent)", +DlgLnkTargetSelf : "આજ વિન્ડો (_self)", +DlgLnkTargetTop : "ઉપરની વિન્ડો (_top)", +DlgLnkTargetFrameName : "ટાર્ગેટ ફ્રેમ નું નામ", +DlgLnkPopWinName : "પૉપ-અપ વિન્ડો નું નામ", +DlgLnkPopWinFeat : "પૉપ-અપ વિન્ડો ફીચરસૅ", +DlgLnkPopResize : "સાઇઝ બદલી સકાય છે", +DlgLnkPopLocation : "લોકેશન બાર", +DlgLnkPopMenu : "મેન્યૂ બાર", +DlgLnkPopScroll : "સ્ક્રોલ બાર", +DlgLnkPopStatus : "સ્ટૅટસ બાર", +DlgLnkPopToolbar : "ટૂલ બાર", +DlgLnkPopFullScrn : "ફુલ સ્ક્રીન (IE)", +DlgLnkPopDependent : "ડિપેન્ડન્ટ (Netscape)", +DlgLnkPopWidth : "પહોળાઈ", +DlgLnkPopHeight : "ઊંચાઈ", +DlgLnkPopLeft : "ડાબી બાજુ", +DlgLnkPopTop : "જમણી બાજુ", + +DlnLnkMsgNoUrl : "લિંક URL ટાઇપ કરો", +DlnLnkMsgNoEMail : "ઈ-મેલ સરનામું ટાઇપ કરો", +DlnLnkMsgNoAnchor : "ઍંકર પસંદ કરો", +DlnLnkMsgInvPopName : "પૉપ-અપ વિન્ડો નું નામ ઍલ્ફબેટથી શરૂ કરવો અને તેમાં સ્પેઇસ ન હોવી જોઈએ", + +// Color Dialog +DlgColorTitle : "રંગ પસંદ કરો", +DlgColorBtnClear : "સાફ કરો", +DlgColorHighlight : "હાઈલાઇટ", +DlgColorSelected : "સિલેક્ટેડ/પસંદ કરવું", + +// Smiley Dialog +DlgSmileyTitle : "સ્માઇલી પસંદ કરો", + +// Special Character Dialog +DlgSpecialCharTitle : "સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો", + +// Table Dialog +DlgTableTitle : "ટેબલ, કોઠાનું મથાળું", +DlgTableRows : "પંક્તિના ખાના", +DlgTableColumns : "કૉલમ/ઊભી કટાર", +DlgTableBorder : "કોઠાની બાજુ(બોર્ડર) સાઇઝ", +DlgTableAlign : "અલાઇનમન્ટ/ગોઠવાયેલું ", +DlgTableAlignNotSet : "<સેટ નથી>", +DlgTableAlignLeft : "ડાબી બાજુ", +DlgTableAlignCenter : "મધ્ય સેન્ટર", +DlgTableAlignRight : "જમણી બાજુ", +DlgTableWidth : "પહોળાઈ", +DlgTableWidthPx : "પિકસલ", +DlgTableWidthPc : "પ્રતિશત", +DlgTableHeight : "ઊંચાઈ", +DlgTableCellSpace : "સેલ અંતર", +DlgTableCellPad : "સેલ પૅડિંગ", +DlgTableCaption : "મથાળું/કૅપ્શન ", +DlgTableSummary : "ટૂંકો એહેવાલ", + +// Table Cell Dialog +DlgCellTitle : "પંક્તિના ખાનાના ગુણ", +DlgCellWidth : "પહોળાઈ", +DlgCellWidthPx : "પિકસલ", +DlgCellWidthPc : "પ્રતિશત", +DlgCellHeight : "ઊંચાઈ", +DlgCellWordWrap : "વર્ડ રૅપ", +DlgCellWordWrapNotSet : "<સેટ નથી>", +DlgCellWordWrapYes : "હા", +DlgCellWordWrapNo : "ના", +DlgCellHorAlign : "સમસ્તરીય ગોઠવવું", +DlgCellHorAlignNotSet : "<સેટ નથી>", +DlgCellHorAlignLeft : "ડાબી બાજુ", +DlgCellHorAlignCenter : "મધ્ય સેન્ટર", +DlgCellHorAlignRight: "જમણી બાજુ", +DlgCellVerAlign : "લંબરૂપ ગોઠવવું", +DlgCellVerAlignNotSet : "<સેટ નથી>", +DlgCellVerAlignTop : "ઉપર", +DlgCellVerAlignMiddle : "મધ્ય સેન્ટર", +DlgCellVerAlignBottom : "નીચે", +DlgCellVerAlignBaseline : "મૂળ રેખા", +DlgCellRowSpan : "પંક્તિ સ્પાન", +DlgCellCollSpan : "કૉલમ/ઊભી કટાર સ્પાન", +DlgCellBackColor : "બૅકગ્રાઉન્ડ રંગ", +DlgCellBorderColor : "બોર્ડરનો રંગ", +DlgCellBtnSelect : "પસંદ કરો...", + +// Find and Replace Dialog +DlgFindAndReplaceTitle : "શોધવું અને બદલવું", + +// Find Dialog +DlgFindTitle : "શોધવું", +DlgFindFindBtn : "શોધવું", +DlgFindNotFoundMsg : "તમે શોધેલી ટેક્સ્ટ નથી મળી", + +// Replace Dialog +DlgReplaceTitle : "બદલવું", +DlgReplaceFindLbl : "આ શોધો", +DlgReplaceReplaceLbl : "આનાથી બદલો", +DlgReplaceCaseChk : "કેસ સરખા રાખો", +DlgReplaceReplaceBtn : "બદલવું", +DlgReplaceReplAllBtn : "બઘા બદલી ", +DlgReplaceWordChk : "બઘા શબ્દ સરખા રાખો", + +// Paste Operations / Dialog +PasteErrorCut : "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.", +PasteErrorCopy : "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl+C) का प्रयोग करें।", + +PasteAsText : "પેસ્ટ (ટેક્સ્ટ)", +PasteFromWord : "પેસ્ટ (વર્ડ થી)", + +DlgPasteMsg2 : "Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો", +DlgPasteSec : "તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.", +DlgPasteIgnoreFont : "ફૉન્ટફેસ વ્યાખ્યાની અવગણના", +DlgPasteRemoveStyles : "સ્ટાઇલ વ્યાખ્યા કાઢી નાખવી", + +// Color Picker +ColorAutomatic : "સ્વચાલિત", +ColorMoreColors : "ઔર રંગ...", + +// Document Properties +DocProps : "ડૉક્યુમન્ટ ગુણ/પ્રૉપર્ટિઝ", + +// Anchor Dialog +DlgAnchorTitle : "ઍંકર ગુણ/પ્રૉપર્ટિઝ", +DlgAnchorName : "ઍંકરનું નામ", +DlgAnchorErrorName : "ઍંકરનું નામ ટાઈપ કરો", + +// Speller Pages Dialog +DlgSpellNotInDic : "શબ્દકોશમાં નથી", +DlgSpellChangeTo : "આનાથી બદલવું", +DlgSpellBtnIgnore : "ઇગ્નોર/અવગણના કરવી", +DlgSpellBtnIgnoreAll : "બધાની ઇગ્નોર/અવગણના કરવી", +DlgSpellBtnReplace : "બદલવું", +DlgSpellBtnReplaceAll : "બધા બદલી કરો", +DlgSpellBtnUndo : "અન્ડૂ", +DlgSpellNoSuggestions : "- કઇ સજેશન નથી -", +DlgSpellProgress : "શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...", +DlgSpellNoMispell : "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી", +DlgSpellNoChanges : "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી", +DlgSpellOneChange : "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે", +DlgSpellManyChanges : "શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે", + +IeSpellDownload : "સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?", + +// Button Dialog +DlgButtonText : "ટેક્સ્ટ (વૅલ્યૂ)", +DlgButtonType : "પ્રકાર", +DlgButtonTypeBtn : "બટન", +DlgButtonTypeSbm : "સબ્મિટ", +DlgButtonTypeRst : "રિસેટ", + +// Checkbox and Radio Button Dialogs +DlgCheckboxName : "નામ", +DlgCheckboxValue : "વૅલ્યૂ", +DlgCheckboxSelected : "સિલેક્ટેડ", + +// Form Dialog +DlgFormName : "નામ", +DlgFormAction : "ક્રિયા", +DlgFormMethod : "પદ્ધતિ", + +// Select Field Dialog +DlgSelectName : "નામ", +DlgSelectValue : "વૅલ્યૂ", +DlgSelectSize : "સાઇઝ", +DlgSelectLines : "લીટીઓ", +DlgSelectChkMulti : "એકથી વધારે પસંદ કરી શકો", +DlgSelectOpAvail : "ઉપલબ્ધ વિકલ્પ", +DlgSelectOpText : "ટેક્સ્ટ", +DlgSelectOpValue : "વૅલ્યૂ", +DlgSelectBtnAdd : "ઉમેરવું", +DlgSelectBtnModify : "બદલવું", +DlgSelectBtnUp : "ઉપર", +DlgSelectBtnDown : "નીચે", +DlgSelectBtnSetValue : "પસંદ કરલી વૅલ્યૂ સેટ કરો", +DlgSelectBtnDelete : "રદ કરવું", + +// Textarea Dialog +DlgTextareaName : "નામ", +DlgTextareaCols : "કૉલમ/ઊભી કટાર", +DlgTextareaRows : "પંક્તિઓ", + +// Text Field Dialog +DlgTextName : "નામ", +DlgTextValue : "વૅલ્યૂ", +DlgTextCharWidth : "કેરેક્ટરની પહોળાઈ", +DlgTextMaxChars : "અધિકતમ કેરેક્ટર", +DlgTextType : "ટાઇપ", +DlgTextTypeText : "ટેક્સ્ટ", +DlgTextTypePass : "પાસવર્ડ", + +// Hidden Field Dialog +DlgHiddenName : "નામ", +DlgHiddenValue : "વૅલ્યૂ", + +// Bulleted List Dialog +BulletedListProp : "બુલેટ સૂચિ ગુણ", +NumberedListProp : "સંખ્યાંક્તિ સૂચિ ગુણ", +DlgLstStart : "શરૂઆતથી", +DlgLstType : "પ્રકાર", +DlgLstTypeCircle : "વર્તુળ", +DlgLstTypeDisc : "ડિસ્ક", +DlgLstTypeSquare : "ચોરસ", +DlgLstTypeNumbers : "સંખ્યા (1, 2, 3)", +DlgLstTypeLCase : "નાના અક્ષર (a, b, c)", +DlgLstTypeUCase : "મોટા અક્ષર (A, B, C)", +DlgLstTypeSRoman : "નાના રોમન આંક (i, ii, iii)", +DlgLstTypeLRoman : "મોટા રોમન આંક (I, II, III)", + +// Document Properties Dialog +DlgDocGeneralTab : "સાધારણ", +DlgDocBackTab : "બૅકગ્રાઉન્ડ", +DlgDocColorsTab : "રંગ અને માર્જિન/કિનાર", +DlgDocMetaTab : "મેટાડૅટા", + +DlgDocPageTitle : "પેજ મથાળું/ટાઇટલ", +DlgDocLangDir : "ભાષા લેખવાની પદ્ધતિ", +DlgDocLangDirLTR : "ડાબે થી જમણે (LTR)", +DlgDocLangDirRTL : "જમણે થી ડાબે (RTL)", +DlgDocLangCode : "ભાષા કોડ", +DlgDocCharSet : "કેરેક્ટર સેટ એન્કોડિંગ", +DlgDocCharSetCE : "મધ્ય યુરોપિઅન (Central European)", +DlgDocCharSetCT : "ચાઇનીઝ (Chinese Traditional Big5)", +DlgDocCharSetCR : "સિરીલિક (Cyrillic)", +DlgDocCharSetGR : "ગ્રીક (Greek)", +DlgDocCharSetJP : "જાપાનિઝ (Japanese)", +DlgDocCharSetKR : "કોરીયન (Korean)", +DlgDocCharSetTR : "ટર્કિ (Turkish)", +DlgDocCharSetUN : "યૂનિકોડ (UTF-8)", +DlgDocCharSetWE : "પશ્ચિમ યુરોપિઅન (Western European)", +DlgDocCharSetOther : "અન્ય કેરેક્ટર સેટ એન્કોડિંગ", + +DlgDocDocType : "ડૉક્યુમન્ટ પ્રકાર શીર્ષક", +DlgDocDocTypeOther : "અન્ય ડૉક્યુમન્ટ પ્રકાર શીર્ષક", +DlgDocIncXHTML : "XHTML સૂચના સમાવિષ્ટ કરવી", +DlgDocBgColor : "બૅકગ્રાઉન્ડ રંગ", +DlgDocBgImage : "બૅકગ્રાઉન્ડ ચિત્ર URL", +DlgDocBgNoScroll : "સ્ક્રોલ ન થાય તેવું બૅકગ્રાઉન્ડ", +DlgDocCText : "ટેક્સ્ટ", +DlgDocCLink : "લિંક", +DlgDocCVisited : "વિઝિટેડ લિંક", +DlgDocCActive : "સક્રિય લિંક", +DlgDocMargins : "પેજ માર્જિન", +DlgDocMaTop : "ઉપર", +DlgDocMaLeft : "ડાબી", +DlgDocMaRight : "જમણી", +DlgDocMaBottom : "નીચે", +DlgDocMeIndex : "ડૉક્યુમન્ટ ઇન્ડેક્સ સંકેતશબ્દ (અલ્પવિરામ (,) થી અલગ કરો)", +DlgDocMeDescr : "ડૉક્યુમન્ટ વર્ણન", +DlgDocMeAuthor : "લેખક", +DlgDocMeCopy : "કૉપિરાઇટ", +DlgDocPreview : "પૂર્વદર્શન", + +// Templates Dialog +Templates : "ટેમ્પ્લેટ", +DlgTemplatesTitle : "કન્ટેન્ટ ટેમ્પ્લેટ", +DlgTemplatesSelMsg : "એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):", +DlgTemplatesLoading : "ટેમ્પ્લેટ સૂચિ લોડ થાય છે. રાહ જુઓ...", +DlgTemplatesNoTpl : "(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)", +DlgTemplatesReplace : "મૂળ શબ્દને બદલો", + +// About Dialog +DlgAboutAboutTab : "FCKEditor ના વિષે", +DlgAboutBrowserInfoTab : "બ્રાઉઝર ના વિષે", +DlgAboutLicenseTab : "લાઇસન્સ", +DlgAboutVersion : "વર્ઝન", +DlgAboutInfo : "વધારે માહિતી માટે:", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/he.js b/static/contrib/fckeditor-2.6.3/editor/lang/he.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/he.js rename to static/contrib/fckeditor-2.6.3/editor/lang/he.js index ef2b979..63cf976 --- a/static/fckeditor/editor/lang/he.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/he.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "הסרת העיצוב", InsertLinkLbl : "קישור", InsertLink : "הוספת/עריכת קישור", RemoveLink : "הסרת הקישור", +VisitLink : "פתח קישור", Anchor : "הוספת/עריכת נקודת עיגון", +AnchorDelete : "הסר נקודת עיגון", InsertImageLbl : "תמונה", InsertImage : "הוספת/עריכת תמונה", InsertFlashLbl : "פלאש", @@ -70,6 +72,10 @@ RightJustify : "יישור לימין", BlockJustify : "יישור לשוליים", DecreaseIndent : "הקטנת אינדנטציה", IncreaseIndent : "הגדלת אינדנטציה", +Blockquote : "בלוק ציטוט", +CreateDiv : "צור מיכל(תג)DIV", +EditDiv : "ערוך מיכל (תג)DIV", +DeleteDiv : "הסר מיכל(תג) DIV", Undo : "ביטול צעד אחרון", Redo : "חזרה על צעד אחרון", NumberedListLbl : "רשימה ממוספרת", @@ -103,20 +109,27 @@ SelectionField : "שדה בחירה", ImageButton : "כפתור תמונה", FitWindow : "הגדל את גודל העורך", +ShowBlocks : "הצג בלוקים", // Context Menu EditLink : "עריכת קישור", CellCM : "תא", RowCM : "שורה", ColumnCM : "עמודה", -InsertRow : "הוספת שורה", +InsertRowAfter : "הוסף שורה אחרי", +InsertRowBefore : "הוסף שורה לפני", DeleteRows : "מחיקת שורות", -InsertColumn : "הוספת עמודה", +InsertColumnAfter : "הוסף עמודה אחרי", +InsertColumnBefore : "הוסף עמודה לפני", DeleteColumns : "מחיקת עמודות", -InsertCell : "הוספת תא", +InsertCellAfter : "הוסף תא אחרי", +InsertCellBefore : "הוסף תא אחרי", DeleteCells : "מחיקת תאים", MergeCells : "מיזוג תאים", -SplitCell : "פיצול תאים", +MergeRight : "מזג ימינה", +MergeDown : "מזג למטה", +HorizontalSplitCell : "פצל תא אופקית", +VerticalSplitCell : "פצל תא אנכית", TableDelete : "מחק טבלה", CellProperties : "תכונות התא", TableProperties : "תכונות הטבלה", @@ -134,7 +147,7 @@ SelectionFieldProp : "מאפייני שדה בחירה", TextareaProp : "מאפיני איזור טקסט", FormProp : "מאפיני טופס", -FontFormats : "נורמלי;קוד;כתובת;כותרת;כותרת 2;כותרת 3;כותרת 4;כותרת 5;כותרת 6", //REVIEW : Check _getfontformat.html +FontFormats : "נורמלי;קוד;כתובת;כותרת;כותרת 2;כותרת 3;כותרת 4;כותרת 5;כותרת 6", // Alerts and Messages ProcessingXHTML : "מעבד XHTML, נא להמתין...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "ערכת סרגל הכלים \"%1\" לא קיימת", NoActiveX : "הגדרות אבטחה של הדפדפן עלולות לגביל את אפשרויות העריכה.יש לאפשר את האופציה \"הרץ פקדים פעילים ותוספות\". תוכל לחוות טעויות וחיווים של אפשרויות שחסרים.", BrowseServerBlocked : "לא ניתן לגשת לדפדפן משאבים.אנא וודא שחוסם חלונות הקופצים לא פעיל.", DialogBlocked : "לא היה ניתן לפתוח חלון דיאלוג. אנא וודא שחוסם חלונות קופצים לא פעיל.", +VisitLinkBlocked : "לא ניתן לפתוח חלון חדש.נא לוודא שחוסמי החלונות הקופצים לא פעילים.", // Dialogs DlgBtnOK : "אישור", @@ -157,7 +171,7 @@ DlgBtnBrowseServer : "סייר השרת", DlgAdvancedTag : "אפשרויות מתקדמות", DlgOpOther : "<אחר>", DlgInfoTab : "מידע", -DlgAlertUrl : "אנה הזן URL", +DlgAlertUrl : "אנא הזן URL", // General Dialogs Labels DlgGenNotSet : "<לא נקבע>", @@ -229,7 +243,7 @@ DlgLnkURL : "כתובת (URL)", DlgLnkAnchorSel : "בחירת עוגן", DlgLnkAnchorByName : "עפ''י שם העוגן", DlgLnkAnchorById : "עפ''י זיהוי (Id) הרכיב", -DlgLnkNoAnchors : "(אין עוגנים זמינים בדף)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(אין עוגנים זמינים בדף)", DlgLnkEMail : "כתובת הדוא''ל", DlgLnkEMailSubject : "נושא ההודעה", DlgLnkEMailBody : "גוף ההודעה", @@ -322,6 +336,9 @@ DlgCellBackColor : "צבע רקע", DlgCellBorderColor : "צבע מסגרת", DlgCellBtnSelect : "בחירה...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "חפש והחלף", + // Find Dialog DlgFindTitle : "חיפוש", DlgFindFindBtn : "חיפוש", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "אנא הדבק בתוך הקופסה באמצעות (C DlgPasteSec : "עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (clipboard) בצורה ישירה.אנא בצע הדבק שוב בחלון זה.", DlgPasteIgnoreFont : "התעלם מהגדרות סוג פונט", DlgPasteRemoveStyles : "הסר הגדרות סגנון", -DlgPasteCleanBox : "ניקוי קופסה", // Color Picker ColorAutomatic : "אוטומטי", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "אודות", DlgAboutBrowserInfoTab : "גירסת דפדפן", DlgAboutLicenseTab : "רשיון", DlgAboutVersion : "גירסא", -DlgAboutInfo : "מידע נוסף ניתן למצוא כאן:" -}; \ No newline at end of file +DlgAboutInfo : "מידע נוסף ניתן למצוא כאן:", + +// Div Dialog +DlgDivGeneralTab : "כללי", +DlgDivAdvancedTab : "מתקדם", +DlgDivStyle : "סגנון", +DlgDivInlineStyle : "סגנון בתוך השורה" +}; diff --git a/static/fckeditor/editor/lang/hi.js b/static/contrib/fckeditor-2.6.3/editor/lang/hi.js old mode 100644 new mode 100755 similarity index 86% rename from static/fckeditor/editor/lang/hi.js rename to static/contrib/fckeditor-2.6.3/editor/lang/hi.js index fdc5e39..52dacde --- a/static/fckeditor/editor/lang/hi.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/hi.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "फ़ॉर्मैट हटायें", InsertLinkLbl : "लिंक", InsertLink : "लिंक इन्सर्ट/संपादन", RemoveLink : "लिंक हटायें", +VisitLink : "लिंक खोलें", Anchor : "ऐंकर इन्सर्ट/संपादन", +AnchorDelete : "ऐंकर हटायें", InsertImageLbl : "तस्वीर", InsertImage : "तस्वीर इन्सर्ट/संपादन", InsertFlashLbl : "फ़्लैश", @@ -70,6 +72,10 @@ RightJustify : "दायीं तरफ", BlockJustify : "ब्लॉक जस्टीफ़ाई", DecreaseIndent : "इन्डॅन्ट कम करें", IncreaseIndent : "इन्डॅन्ट बढ़ायें", +Blockquote : "ब्लॉक-कोट", +CreateDiv : "डिव (Div) कन्टेनर बनायें", +EditDiv : "डिव (Div) कन्टेनर बदलें", +DeleteDiv : "डिव कन्टेनर हटायें", Undo : "अन्डू", Redo : "रीडू", NumberedListLbl : "अंकीय सूची", @@ -103,22 +109,29 @@ SelectionField : "चुनाव फ़ील्ड", ImageButton : "तस्वीर बटन", FitWindow : "एडिटर साइज़ को चरम सीमा तक बढ़ायें", +ShowBlocks : "ब्लॉक दिखायें", // Context Menu EditLink : "लिंक संपादन", CellCM : "खाना", RowCM : "पंक्ति", ColumnCM : "कालम", -InsertRow : "पंक्ति इन्सर्ट करें", +InsertRowAfter : "बाद में पंक्ति डालें", +InsertRowBefore : "पहले पंक्ति डालें", DeleteRows : "पंक्तियाँ डिलीट करें", -InsertColumn : "कॉलम इन्सर्ट करें", -DeleteColumns : "कॉलम डिलीट करें", -InsertCell : "सॅल इन्सर्ट करें", -DeleteCells : "सॅल डिलीट करें", -MergeCells : "सॅल मिलायें", -SplitCell : "सॅल अलग करें", +InsertColumnAfter : "बाद में कालम डालें", +InsertColumnBefore : "पहले कालम डालें", +DeleteColumns : "कालम डिलीट करें", +InsertCellAfter : "बाद में सैल डालें", +InsertCellBefore : "पहले सैल डालें", +DeleteCells : "सैल डिलीट करें", +MergeCells : "सैल मिलायें", +MergeRight : "बाँया विलय", +MergeDown : "नीचे विलय करें", +HorizontalSplitCell : "सैल को क्षैतिज स्थिति में विभाजित करें", +VerticalSplitCell : "सैल को लम्बाकार में विभाजित करें", TableDelete : "टेबल डिलीट करें", -CellProperties : "सॅल प्रॉपर्टीज़", +CellProperties : "सैल प्रॉपर्टीज़", TableProperties : "टेबल प्रॉपर्टीज़", ImageProperties : "तस्वीर प्रॉपर्टीज़", FlashProperties : "फ़्लैश प्रॉपर्टीज़", @@ -134,7 +147,7 @@ SelectionFieldProp : "चुनाव फ़ील्ड प्रॉपर्ट TextareaProp : "टेक्स्त एरिया प्रॉपर्टीज़", FormProp : "फ़ॉर्म प्रॉपर्टीज़", -FontFormats : "साधारण;फ़ॉर्मैटॅड;पता;शीर्षक 1;शीर्षक 2;शीर्षक 3;शीर्षक 4;शीर्षक 5;शीर्षक 6;शीर्षक (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "साधारण;फ़ॉर्मैटॅड;पता;शीर्षक 1;शीर्षक 2;शीर्षक 3;शीर्षक 4;शीर्षक 5;शीर्षक 6;शीर्षक (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML प्रोसॅस हो रहा है। ज़रा ठहरें...", @@ -146,8 +159,9 @@ UnknownCommand : "अनजान कमान्ड \"%1\"", NotImplemented : "कमान्ड इम्प्लीमॅन्ट नहीं किया गया है", UnknownToolbarSet : "टूलबार सॅट \"%1\" उपलब्ध नहीं है", NoActiveX : "आपके ब्राउज़र् की सुरक्शा सेटिंग्स् एडिटर की कुछ् फ़ीचरों को सीमित कर् सकती हैं। क्रिपया \"Run ActiveX controls and plug-ins\" विकल्प को एनेबल करें. आपको एरर्स् और गायब फ़ीचर्स् का अनुभव हो सकता है।", -BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।", -DialogBlocked : "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।", +BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।", +DialogBlocked : "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।", +VisitLinkBlocked : "नया विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को निष्क्रिय करें।", // Dialogs DlgBtnOK : "ठीक है", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "ऐंकर चुनें", DlgLnkAnchorByName : "ऐंकर नाम से", DlgLnkAnchorById : "ऍलीमॅन्ट Id से", -DlgLnkNoAnchors : "<डॉक्यूमॅन्ट में ऐंकर्स की संख्या>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(डॉक्यूमॅन्ट में ऐंकर्स की संख्या)", DlgLnkEMail : "ई-मेल पता", DlgLnkEMailSubject : "संदेश विषय", DlgLnkEMailBody : "संदेश", @@ -279,7 +293,7 @@ DlgSpecialCharTitle : "विशेष करॅक्टर चुनें", // Table Dialog DlgTableTitle : "टेबल प्रॉपर्टीज़", DlgTableRows : "पंक्तियाँ", -DlgTableColumns : "कॉलम", +DlgTableColumns : "कालम", DlgTableBorder : "बॉर्डर साइज़", DlgTableAlign : "ऍलाइन्मॅन्ट", DlgTableAlignNotSet : "<सॅट नहीं>", @@ -287,18 +301,18 @@ DlgTableAlignLeft : "दायें", DlgTableAlignCenter : "बीच में", DlgTableAlignRight : "बायें", DlgTableWidth : "चौड़ाई", -DlgTableWidthPx : "पिक्सॅल", +DlgTableWidthPx : "पिक्सैल", DlgTableWidthPc : "प्रतिशत", DlgTableHeight : "ऊँचाई", -DlgTableCellSpace : "सॅल अंतर", -DlgTableCellPad : "सॅल पैडिंग", +DlgTableCellSpace : "सैल अंतर", +DlgTableCellPad : "सैल पैडिंग", DlgTableCaption : "शीर्षक", DlgTableSummary : "सारांश", // Table Cell Dialog -DlgCellTitle : "सॅल प्रॉपर्टीज़", +DlgCellTitle : "सैल प्रॉपर्टीज़", DlgCellWidth : "चौड़ाई", -DlgCellWidthPx : "पिक्सॅल", +DlgCellWidthPx : "पिक्सैल", DlgCellWidthPc : "प्रतिशत", DlgCellHeight : "ऊँचाई", DlgCellWordWrap : "वर्ड रैप", @@ -317,11 +331,14 @@ DlgCellVerAlignMiddle : "मध्य", DlgCellVerAlignBottom : "नीचे", DlgCellVerAlignBaseline : "मूलरेखा", DlgCellRowSpan : "पंक्ति स्पैन", -DlgCellCollSpan : "कॉलम स्पैन", +DlgCellCollSpan : "कालम स्पैन", DlgCellBackColor : "बैक्ग्राउन्ड रंग", DlgCellBorderColor : "बॉर्डर का रंग", DlgCellBtnSelect : "चुनें...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "खोजें और बदलें", + // Find Dialog DlgFindTitle : "खोजें", DlgFindFindBtn : "खोजें", @@ -344,13 +361,12 @@ PasteAsText : "पेस्ट (सादा टॅक्स्ट)", PasteFromWord : "पेस्ट (वर्ड से)", DlgPasteMsg2 : "Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.", DlgPasteIgnoreFont : "फ़ॉन्ट परिभाषा निकालें", DlgPasteRemoveStyles : "स्टाइल परिभाषा निकालें", -DlgPasteCleanBox : "बॉक्स साफ़ करें", // Color Picker -ColorAutomatic : "ऑटोमैटिक", +ColorAutomatic : "स्वचालित", ColorMoreColors : "और रंग...", // Document Properties @@ -392,7 +408,7 @@ DlgCheckboxSelected : "सॅलॅक्टॅड", // Form Dialog DlgFormName : "नाम", -DlgFormAction : "ऍक्शन", +DlgFormAction : "क्रिया", DlgFormMethod : "तरीका", // Select Field Dialog @@ -413,7 +429,7 @@ DlgSelectBtnDelete : "डिलीट", // Textarea Dialog DlgTextareaName : "नाम", -DlgTextareaCols : "कॉलम", +DlgTextareaCols : "कालम", DlgTextareaRows : "पंक्तियां", // Text Field Dialog @@ -500,5 +516,11 @@ DlgAboutAboutTab : "FCKEditor के बारे में", DlgAboutBrowserInfoTab : "ब्राउज़र के बारे में", DlgAboutLicenseTab : "लाइसैन्स", DlgAboutVersion : "वर्ज़न", -DlgAboutInfo : "अधिक जानकारी के लिये यहाँ जायें:" -}; \ No newline at end of file +DlgAboutInfo : "अधिक जानकारी के लिये यहाँ जायें:", + +// Div Dialog +DlgDivGeneralTab : "सामान्य", +DlgDivAdvancedTab : "एड्वान्स्ड", +DlgDivStyle : "स्टाइल", +DlgDivInlineStyle : "इनलाइन स्टाइल" +}; diff --git a/static/fckeditor/editor/lang/hr.js b/static/contrib/fckeditor-2.6.3/editor/lang/hr.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/hr.js rename to static/contrib/fckeditor-2.6.3/editor/lang/hr.js index f088b10..4601e96 --- a/static/fckeditor/editor/lang/hr.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/hr.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Ukloni formatiranje", InsertLinkLbl : "Link", InsertLink : "Ubaci/promijeni link", RemoveLink : "Ukloni link", +VisitLink : "Otvori link", Anchor : "Ubaci/promijeni sidro", +AnchorDelete : "Ukloni sidro", InsertImageLbl : "Slika", InsertImage : "Ubaci/promijeni sliku", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Desno poravnanje", BlockJustify : "Blok poravnanje", DecreaseIndent : "Pomakni ulijevo", IncreaseIndent : "Pomakni udesno", +Blockquote : "Blockquote", +CreateDiv : "Napravi Div kontejner", +EditDiv : "Uredi Div kontejner", +DeleteDiv : "Ukloni Div kontejner", Undo : "Poništi", Redo : "Ponovi", NumberedListLbl : "Brojčana lista", @@ -103,20 +109,27 @@ SelectionField : "Selection Field", ImageButton : "Image Button", FitWindow : "Povećaj veličinu editora", +ShowBlocks : "Prikaži blokove", // Context Menu EditLink : "Promijeni link", CellCM : "Ćelija", RowCM : "Red", ColumnCM : "Kolona", -InsertRow : "Ubaci red", +InsertRowAfter : "Ubaci red poslije", +InsertRowBefore : "Ubaci red prije", DeleteRows : "Izbriši redove", -InsertColumn : "Ubaci kolonu", +InsertColumnAfter : "Ubaci kolonu poslije", +InsertColumnBefore : "Ubaci kolonu prije", DeleteColumns : "Izbriši kolone", -InsertCell : "Ubaci ćelije", +InsertCellAfter : "Ubaci ćeliju poslije", +InsertCellBefore : "Ubaci ćeliju prije", DeleteCells : "Izbriši ćelije", MergeCells : "Spoji ćelije", -SplitCell : "Razdvoji ćelije", +MergeRight : "Spoji desno", +MergeDown : "Spoji dolje", +HorizontalSplitCell : "Podijeli ćeliju vodoravno", +VerticalSplitCell : "Podijeli ćeliju okomito", TableDelete : "Izbriši tablicu", CellProperties : "Svojstva ćelije", TableProperties : "Svojstva tablice", @@ -134,7 +147,7 @@ SelectionFieldProp : "Selection svojstva", TextareaProp : "Textarea svojstva", FormProp : "Form svojstva", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Obrađujem XHTML. Molimo pričekajte...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Traka s alatima \"%1\" ne postoji", NoActiveX : "Vaše postavke pretraživača mogle bi ograničiti neke od mogućnosti editora. Morate uključiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne učinite, moguće su razliite greške tijekom rada.", BrowseServerBlocked : "Pretraivač nije moguće otvoriti. Provjerite da li je uključeno blokiranje pop-up prozora.", DialogBlocked : "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.", +VisitLinkBlocked : "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Odaberi sidro", DlgLnkAnchorByName : "Po nazivu sidra", DlgLnkAnchorById : "Po Id elementa", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nema dostupnih sidra)", DlgLnkEMail : "E-Mail adresa", DlgLnkEMailSubject : "Naslov", DlgLnkEMailBody : "Sadržaj poruke", @@ -322,6 +336,9 @@ DlgCellBackColor : "Boja pozadine", DlgCellBorderColor : "Boja okvira", DlgCellBtnSelect : "Odaberi...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Pronađi i zamijeni", + // Find Dialog DlgFindTitle : "Pronađi", DlgFindFindBtn : "Pronađi", @@ -344,10 +361,9 @@ PasteAsText : "Zalijepi kao čisti tekst", PasteFromWord : "Zalijepi iz Worda", DlgPasteMsg2 : "Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl+V) i kliknite OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.", DlgPasteIgnoreFont : "Zanemari definiciju vrste fonta", DlgPasteRemoveStyles : "Ukloni definicije stilova", -DlgPasteCleanBox : "Očisti okvir", // Color Picker ColorAutomatic : "Automatski", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "O FCKEditoru", DlgAboutBrowserInfoTab : "Podaci o pretraživaču", DlgAboutLicenseTab : "Licenca", DlgAboutVersion : "inačica", -DlgAboutInfo : "Za više informacija posjetite" -}; \ No newline at end of file +DlgAboutInfo : "Za više informacija posjetite", + +// Div Dialog +DlgDivGeneralTab : "Općenito", +DlgDivAdvancedTab : "Napredno", +DlgDivStyle : "Stil", +DlgDivInlineStyle : "Stil u redu" +}; diff --git a/static/fckeditor/editor/lang/hu.js b/static/contrib/fckeditor-2.6.3/editor/lang/hu.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/hu.js rename to static/contrib/fckeditor-2.6.3/editor/lang/hu.js index 73b912c..b9803e6 --- a/static/fckeditor/editor/lang/hu.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/hu.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Formázás eltávolítása", InsertLinkLbl : "Hivatkozás", InsertLink : "Hivatkozás beillesztése/módosítása", RemoveLink : "Hivatkozás törlése", +VisitLink : "Open Link", //MISSING Anchor : "Horgony beillesztése/szerkesztése", +AnchorDelete : "Horgony eltávolítása", InsertImageLbl : "Kép", InsertImage : "Kép beillesztése/módosítása", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Jobbra", BlockJustify : "Sorkizárt", DecreaseIndent : "Behúzás csökkentése", IncreaseIndent : "Behúzás növelése", +Blockquote : "Idézet blokk", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Visszavonás", Redo : "Ismétlés", NumberedListLbl : "Számozás", @@ -103,20 +109,27 @@ SelectionField : "Legördülő lista", ImageButton : "Képgomb", FitWindow : "Maximalizálás", +ShowBlocks : "Blokkok megjelenítése", // Context Menu EditLink : "Hivatkozás módosítása", CellCM : "Cella", RowCM : "Sor", ColumnCM : "Oszlop", -InsertRow : "Sor beszúrása", +InsertRowAfter : "Sor beillesztése az aktuális sor mögé", +InsertRowBefore : "Sor beillesztése az aktuális sor elé", DeleteRows : "Sorok törlése", -InsertColumn : "Oszlop beszúrása", +InsertColumnAfter : "Oszlop beillesztése az aktuális oszlop mögé", +InsertColumnBefore : "Oszlop beillesztése az aktuális oszlop elé", DeleteColumns : "Oszlopok törlése", -InsertCell : "Cella beszúrása", +InsertCellAfter : "Cella beillesztése az aktuális cella mögé", +InsertCellBefore : "Cella beillesztése az aktuális cella elé", DeleteCells : "Cellák törlése", MergeCells : "Cellák egyesítése", -SplitCell : "Cella szétválasztása", +MergeRight : "Cellák egyesítése jobbra", +MergeDown : "Cellák egyesítése lefelé", +HorizontalSplitCell : "Cellák szétválasztása vízszintesen", +VerticalSplitCell : "Cellák szétválasztása függőlegesen", TableDelete : "Táblázat törlése", CellProperties : "Cella tulajdonságai", TableProperties : "Táblázat tulajdonságai", @@ -134,7 +147,7 @@ SelectionFieldProp : "Legördülő lista tulajdonságai", TextareaProp : "Szövegterület tulajdonságai", FormProp : "Űrlap tulajdonságai", -FontFormats : "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML feldolgozása. Kérem várjon...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Az eszközkészlet \"%1\" nem létezik", NoActiveX : "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.", BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.", DialogBlocked : "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "Rendben", @@ -229,7 +243,7 @@ DlgLnkURL : "Webcím", DlgLnkAnchorSel : "Horgony választása", DlgLnkAnchorByName : "Horgony név szerint", DlgLnkAnchorById : "Azonosító szerint", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nincs horgony a dokumentumban)", DlgLnkEMail : "E-Mail cím", DlgLnkEMailSubject : "Üzenet tárgya", DlgLnkEMailBody : "Üzenet", @@ -322,6 +336,9 @@ DlgCellBackColor : "Háttérszín", DlgCellBorderColor : "Szegélyszín", DlgCellBtnSelect : "Kiválasztás...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Keresés és csere", + // Find Dialog DlgFindTitle : "Keresés", DlgFindFindBtn : "Keresés", @@ -344,10 +361,9 @@ PasteAsText : "Beillesztés formázatlan szövegként", PasteFromWord : "Beillesztés Word-ből", DlgPasteMsg2 : "Másolja be az alábbi mezőbe a Ctrl+V billentyűk lenyomásával, majd nyomjon Rendben-t.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.", DlgPasteIgnoreFont : "Betű formázások megszüntetése", DlgPasteRemoveStyles : "Stílusok eltávolítása", -DlgPasteCleanBox : "Törlés", // Color Picker ColorAutomatic : "Automatikus", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Névjegy", DlgAboutBrowserInfoTab : "Böngésző információ", DlgAboutLicenseTab : "Licensz", DlgAboutVersion : "verzió", -DlgAboutInfo : "További információkért látogasson el ide:" -}; \ No newline at end of file +DlgAboutInfo : "További információkért látogasson el ide:", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/it.js b/static/contrib/fckeditor-2.6.3/editor/lang/it.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/it.js rename to static/contrib/fckeditor-2.6.3/editor/lang/it.js index a3dee1b..8b59211 --- a/static/fckeditor/editor/lang/it.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/it.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Elimina formattazione", InsertLinkLbl : "Collegamento", InsertLink : "Inserisci/Modifica collegamento", RemoveLink : "Elimina collegamento", +VisitLink : "Open Link", //MISSING Anchor : "Inserisci/Modifica Ancora", +AnchorDelete : "Rimuovi Ancora", InsertImageLbl : "Immagine", InsertImage : "Inserisci/Modifica immagine", InsertFlashLbl : "Oggetto Flash", @@ -70,6 +72,10 @@ RightJustify : "Allinea a destra", BlockJustify : "Giustifica", DecreaseIndent : "Riduci rientro", IncreaseIndent : "Aumenta rientro", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Annulla", Redo : "Ripristina", NumberedListLbl : "Elenco numerato", @@ -103,20 +109,27 @@ SelectionField : "Menu di selezione", ImageButton : "Bottone immagine", FitWindow : "Massimizza l'area dell'editor", +ShowBlocks : "Visualizza Blocchi", // Context Menu EditLink : "Modifica collegamento", CellCM : "Cella", RowCM : "Riga", ColumnCM : "Colonna", -InsertRow : "Inserisci riga", +InsertRowAfter : "Inserisci Riga Dopo", +InsertRowBefore : "Inserisci Riga Prima", DeleteRows : "Elimina righe", -InsertColumn : "Inserisci colonna", +InsertColumnAfter : "Inserisci Colonna Dopo", +InsertColumnBefore : "Inserisci Colonna Prima", DeleteColumns : "Elimina colonne", -InsertCell : "Inserisci cella", +InsertCellAfter : "Inserisci Cella Dopo", +InsertCellBefore : "Inserisci Cella Prima", DeleteCells : "Elimina celle", MergeCells : "Unisce celle", -SplitCell : "Dividi celle", +MergeRight : "Unisci a Destra", +MergeDown : "Unisci in Basso", +HorizontalSplitCell : "Dividi Cella Orizzontalmente", +VerticalSplitCell : "Dividi Cella Verticalmente", TableDelete : "Cancella Tabella", CellProperties : "Proprietà cella", TableProperties : "Proprietà tabella", @@ -134,7 +147,7 @@ SelectionFieldProp : "Proprietà menu di selezione", TextareaProp : "Proprietà area di testo", FormProp : "Proprietà modulo", -FontFormats : "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normale;Formattato;Indirizzo;Titolo 1;Titolo 2;Titolo 3;Titolo 4;Titolo 5;Titolo 6;Paragrafo (DIV)", // Alerts and Messages ProcessingXHTML : "Elaborazione XHTML in corso. Attendere prego...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "La barra di strumenti \"%1\" non esiste", NoActiveX : "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.", BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.", DialogBlocked : "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Scegli Ancora", DlgLnkAnchorByName : "Per Nome", DlgLnkAnchorById : "Per id elemento", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nessuna ancora disponibile nel documento)", DlgLnkEMail : "Indirizzo E-Mail", DlgLnkEMailSubject : "Oggetto del messaggio", DlgLnkEMailBody : "Corpo del messaggio", @@ -322,6 +336,9 @@ DlgCellBackColor : "Colore sfondo", DlgCellBorderColor : "Colore bordo", DlgCellBtnSelect : "Scegli...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Cerca e Sostituisci", + // Find Dialog DlgFindTitle : "Trova", DlgFindFindBtn : "Trova", @@ -344,10 +361,9 @@ PasteAsText : "Incolla come testo semplice", PasteFromWord : "Incolla da Word", DlgPasteMsg2 : "Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (Ctrl+V) e premi OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.", DlgPasteIgnoreFont : "Ignora le definizioni di Font", DlgPasteRemoveStyles : "Rimuovi le definizioni di Stile", -DlgPasteCleanBox : "Svuota area di testo", // Color Picker ColorAutomatic : "Automatico", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Informazioni", DlgAboutBrowserInfoTab : "Informazioni Browser", DlgAboutLicenseTab : "Licenza", DlgAboutVersion : "versione", -DlgAboutInfo : "Per maggiori informazioni visitare" -}; \ No newline at end of file +DlgAboutInfo : "Per maggiori informazioni visitare", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/ja.js b/static/contrib/fckeditor-2.6.3/editor/lang/ja.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/ja.js rename to static/contrib/fckeditor-2.6.3/editor/lang/ja.js index c567d21..9f0cffa --- a/static/fckeditor/editor/lang/ja.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/ja.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "フォーマット削除", InsertLinkLbl : "リンク", InsertLink : "リンク挿入/編集", RemoveLink : "リンク削除", +VisitLink : "リンクを開く", Anchor : "アンカー挿入/編集", +AnchorDelete : "アンカー削除", InsertImageLbl : "イメージ", InsertImage : "イメージ挿入/編集", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "右揃え", BlockJustify : "両端揃え", DecreaseIndent : "インデント解除", IncreaseIndent : "インデント", +Blockquote : "ブロック引用", +CreateDiv : "Div 作成", +EditDiv : "Div 編集", +DeleteDiv : "Div 削除", Undo : "元に戻す", Redo : "やり直し", NumberedListLbl : "段落番号", @@ -103,20 +109,27 @@ SelectionField : "選択フィールド", ImageButton : "画像ボタン", FitWindow : "エディタサイズを最大にします", +ShowBlocks : "ブロック表示", // Context Menu EditLink : "リンク編集", CellCM : "セル", RowCM : "行", ColumnCM : "カラム", -InsertRow : "行挿入", +InsertRowAfter : "列の後に挿入", +InsertRowBefore : "列の前に挿入", DeleteRows : "行削除", -InsertColumn : "列挿入", +InsertColumnAfter : "カラムの後に挿入", +InsertColumnBefore : "カラムの前に挿入", DeleteColumns : "列削除", -InsertCell : "セル挿入", +InsertCellAfter : "セルの後に挿入", +InsertCellBefore : "セルの前に挿入", DeleteCells : "セル削除", MergeCells : "セル結合", -SplitCell : "セル分割", +MergeRight : "右に結合", +MergeDown : "下に結合", +HorizontalSplitCell : "セルを水平方向分割", +VerticalSplitCell : "セルを垂直方向に分割", TableDelete : "テーブル削除", CellProperties : "セル プロパティ", TableProperties : "テーブル プロパティ", @@ -134,7 +147,7 @@ SelectionFieldProp : "選択フィールド プロパティ", TextareaProp : "テキストエリア プロパティ", FormProp : "フォーム プロパティ", -FontFormats : "標準;書式付き;アドレス;見出し 1;見出し 2;見出し 3;見出し 4;見出し 5;見出し 6;標準 (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "標準;書式付き;アドレス;見出し 1;見出し 2;見出し 3;見出し 4;見出し 5;見出し 6;標準 (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML処理中. しばらくお待ちください...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "ツールバー設定 \"%1\" 存在しません。", NoActiveX : "エラー、警告メッセージなどが発生した場合、ブラウザーのセキュリティ設定によりエディタのいくつかの機能が制限されている可能性があります。セキュリティ設定のオプションで\"ActiveXコントロールとプラグインの実行\"を有効にするにしてください。", BrowseServerBlocked : "サーバーブラウザーを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。", DialogBlocked : "ダイアログウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。", +VisitLinkBlocked : "新しいウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "アンカーを選択", DlgLnkAnchorByName : "アンカー名", DlgLnkAnchorById : "エレメントID", -DlgLnkNoAnchors : "<ドキュメントにおいて利用可能なアンカーはありません。>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(ドキュメントにおいて利用可能なアンカーはありません。)", DlgLnkEMail : "E-Mail アドレス", DlgLnkEMailSubject : "件名", DlgLnkEMailBody : "本文", @@ -322,6 +336,9 @@ DlgCellBackColor : "背景色", DlgCellBorderColor : "ボーダーカラー", DlgCellBtnSelect : "選択...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "検索して置換", + // Find Dialog DlgFindTitle : "検索", DlgFindFindBtn : "検索", @@ -344,10 +361,9 @@ PasteAsText : "プレーンテキスト貼り付け", PasteFromWord : "ワード文章から貼り付け", DlgPasteMsg2 : "キーボード(Ctrl+V)を使用して、次の入力エリア内で貼って、OKを押してください。", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。", DlgPasteIgnoreFont : "FontタグのFace属性を無視します。", DlgPasteRemoveStyles : "スタイル定義を削除します。", -DlgPasteCleanBox : "入力エリアクリア", // Color Picker ColorAutomatic : "自動", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "バージョン情報", DlgAboutBrowserInfoTab : "ブラウザ情報", DlgAboutLicenseTab : "ライセンス", DlgAboutVersion : "バージョン", -DlgAboutInfo : "より詳しい情報はこちらで" -}; \ No newline at end of file +DlgAboutInfo : "より詳しい情報はこちらで", + +// Div Dialog +DlgDivGeneralTab : "全般", +DlgDivAdvancedTab : "高度な設定", +DlgDivStyle : "スタイル", +DlgDivInlineStyle : "インラインスタイル" +}; diff --git a/static/fckeditor/editor/lang/km.js b/static/contrib/fckeditor-2.6.3/editor/lang/km.js old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/lang/km.js rename to static/contrib/fckeditor-2.6.3/editor/lang/km.js index e90291f..829e843 --- a/static/fckeditor/editor/lang/km.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/km.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "លប់ចោល ការរចនា", InsertLinkLbl : "ឈ្នាប់", InsertLink : "បន្ថែម/កែប្រែ ឈ្នាប់", RemoveLink : "លប់ឈ្នាប់", +VisitLink : "Open Link", //MISSING Anchor : "បន្ថែម/កែប្រែ យុថ្កា", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "រូបភាព", InsertImage : "បន្ថែម/កែប្រែ រូបភាព", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "តំរឹមស្តាំ", BlockJustify : "តំរឹមសងខាង", DecreaseIndent : "បន្ថយការចូលបន្ទាត់", IncreaseIndent : "បន្ថែមការចូលបន្ទាត់", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "សារឡើងវិញ", Redo : "ធ្វើឡើងវិញ", NumberedListLbl : "បញ្ជីជាអក្សរ", @@ -103,20 +109,27 @@ SelectionField : "ជួរជ្រើសរើស", ImageButton : "ប៉ូតុនរូបភាព", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "កែប្រែឈ្នាប់", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "បន្ថែមជួរផ្តេក", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "លប់ជួរផ្តេក", -InsertColumn : "បន្ថែមជួរឈរ", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "លប់ជួរឈរ", -InsertCell : "បន្ថែម សែល", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "លប់សែល", MergeCells : "បញ្ជូលសែល", -SplitCell : "ផ្តាច់សែល", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "លប់តារាង", CellProperties : "ការកំណត់សែល", TableProperties : "ការកំណត់តារាង", @@ -134,7 +147,7 @@ SelectionFieldProp : "ការកំណត់ជួរជ្រើសរើស" TextareaProp : "ការកំណត់កន្លែងសរសេរអត្ថបទ", FormProp : "ការកំណត់បែបបទ", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "កំពុងដំណើរការ XHTML ។ សូមរងចាំ...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "របាឧបរកណ៍ \"%1\" ពុំមាន ។", NoActiveX : "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​អាចធ្វើអោយលោកអ្នកមិនអាចប្រើមុខងារខ្លះរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។ លោកអ្នកត្រូវកំណត់អោយ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាត់បង់មុខងារណាមួយរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។", BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "វីនដូវមិនអាចបើកបានទេ ។ សូមពិនិត្យចំពោះកម្មវិធីបិទ វីនដូវលោត (popup) ថាតើវាដំណើរការរឺទេ ។", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "យល់ព្រម", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "ជ្រើសរើសយុថ្កា", DlgLnkAnchorByName : "តាមឈ្មោះរបស់យុថ្កា", DlgLnkAnchorById : "តាម Id", -DlgLnkNoAnchors : "<ពុំមានយុថ្កានៅក្នុងឯកសារនេះទេ>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(No anchors available in the document)", //MISSING DlgLnkEMail : "អ៊ីមែល", DlgLnkEMailSubject : "ចំណងជើងអត្ថបទ", DlgLnkEMailBody : "អត្ថបទ", @@ -322,6 +336,9 @@ DlgCellBackColor : "ពណ៌ផ្នែកខាងក្រោម", DlgCellBorderColor : "ពណ៌ស៊ុម", DlgCellBtnSelect : "ជ្រើសរើស...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "ស្វែងរក", DlgFindFindBtn : "ស្វែងរក", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "សូមចំលងអត្ថបទទៅដាក់ក្ DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "មិនគិតអំពីប្រភេទពុម្ភអក្សរ", DlgPasteRemoveStyles : "លប់ម៉ូត", -DlgPasteCleanBox : "លប់អត្ថបទចេញពីប្រអប់", // Color Picker ColorAutomatic : "ស្វ័យប្រវត្ត", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "អំពី", DlgAboutBrowserInfoTab : "ព៌តមានកម្មវិធីរុករក", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "ជំនាន់", -DlgAboutInfo : "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង" -}; \ No newline at end of file +DlgAboutInfo : "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/ko.js b/static/contrib/fckeditor-2.6.3/editor/lang/ko.js old mode 100644 new mode 100755 similarity index 84% rename from static/fckeditor/editor/lang/ko.js rename to static/contrib/fckeditor-2.6.3/editor/lang/ko.js index 0a2efa6..00870de --- a/static/fckeditor/editor/lang/ko.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/ko.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "포맷 지우기", InsertLinkLbl : "링크", InsertLink : "링크 삽입/변경", RemoveLink : "링크 삭제", +VisitLink : "Open Link", //MISSING Anchor : "책갈피 삽입/변경", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "이미지", InsertImage : "이미지 삽입/변경", InsertFlashLbl : "플래쉬", @@ -70,6 +72,10 @@ RightJustify : "오른쪽 정렬", BlockJustify : "양쪽 맞춤", DecreaseIndent : "내어쓰기", IncreaseIndent : "들여쓰기", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "취소", Redo : "재실행", NumberedListLbl : "순서있는 목록", @@ -102,22 +108,29 @@ Button : "버튼", SelectionField : "펼침목록", ImageButton : "이미지버튼", -FitWindow : "Maximize the editor size", //MISSING +FitWindow : "에디터 최대화", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "링크 수정", -CellCM : "Cell", //MISSING -RowCM : "Row", //MISSING -ColumnCM : "Column", //MISSING -InsertRow : "가로줄 삽입", +CellCM : "셀/칸(Cell)", +RowCM : "행(Row)", +ColumnCM : "열(Column)", +InsertRowAfter : "뒤에 행 삽입", +InsertRowBefore : "앞에 행 삽입", DeleteRows : "가로줄 삭제", -InsertColumn : "세로줄 삽입", +InsertColumnAfter : "뒤에 열 삽입", +InsertColumnBefore : "앞에 열 삽입", DeleteColumns : "세로줄 삭제", -InsertCell : "셀 삽입", +InsertCellAfter : "뒤에 셀/칸 삽입", +InsertCellBefore : "앞에 셀/칸 삽입", DeleteCells : "셀 삭제", MergeCells : "셀 합치기", -SplitCell : "셀 나누기", -TableDelete : "Delete Table", //MISSING +MergeRight : "오른쪽 뭉치기", +MergeDown : "왼쪽 뭉치기", +HorizontalSplitCell : "수평 나누기", +VerticalSplitCell : "수직 나누기", +TableDelete : "표 삭제", CellProperties : "셀 속성", TableProperties : "표 속성", ImageProperties : "이미지 속성", @@ -134,7 +147,7 @@ SelectionFieldProp : "펼침목록 속성", TextareaProp : "입력영역 속성", FormProp : "폼 속성", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", // Alerts and Messages ProcessingXHTML : "XHTML 처리중. 잠시만 기다려주십시요.", @@ -145,9 +158,10 @@ UnknownToolbarItem : "알수없는 툴바입니다. : \"%1\"", UnknownCommand : "알수없는 기능입니다. : \"%1\"", NotImplemented : "기능이 실행되지 않았습니다.", UnknownToolbarSet : "툴바 설정이 없습니다. : \"%1\"", -NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING -BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING -DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +NoActiveX : "브러우저의 보안 설정으로 인해 몇몇 기능의 작동에 장애가 있을 수 있습니다. \"액티브-액스 기능과 플러그 인\" 옵션을 허용하여 주시지 않으면 오류가 발생할 수 있습니다.", +BrowseServerBlocked : "브러우저 요소가 열리지 않습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.", +DialogBlocked : "윈도우 대화창을 열 수 없습니다. 팝업차단 설정이 꺼져있는지 확인하여 주십시오.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "예", @@ -198,7 +212,7 @@ DlgImgAlignBaseline : "기준선", DlgImgAlignBottom : "아래", DlgImgAlignMiddle : "중간", DlgImgAlignRight : "오른쪽", -DlgImgAlignTextTop : "글자위(Text Top)", +DlgImgAlignTextTop : "글자상단", DlgImgAlignTop : "위", DlgImgPreview : "미리보기", DlgImgAlertUrl : "이미지 URL을 입력하십시요", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "책갈피 선택", DlgLnkAnchorByName : "책갈피 이름", DlgLnkAnchorById : "책갈피 ID", -DlgLnkNoAnchors : "<문서에 책갈피가 없습니다.>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(문서에 책갈피가 없습니다.)", DlgLnkEMail : "이메일 주소", DlgLnkEMailSubject : "제목", DlgLnkEMailBody : "내용", @@ -262,7 +276,7 @@ DlgLnkPopTop : "윗쪽 위치", DlnLnkMsgNoUrl : "링크 URL을 입력하십시요.", DlnLnkMsgNoEMail : "이메일주소를 입력하십시요.", DlnLnkMsgNoAnchor : "책갈피명을 입력하십시요.", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "팝업창의 타이틀은 공백을 허용하지 않습니다.", // Color Dialog DlgColorTitle : "색상 선택", @@ -322,6 +336,9 @@ DlgCellBackColor : "배경 색상", DlgCellBorderColor : "테두리 색상", DlgCellBtnSelect : "선택", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "찾기 & 바꾸기", + // Find Dialog DlgFindTitle : "찾기", DlgFindFindBtn : "찾기", @@ -344,10 +361,9 @@ PasteAsText : "텍스트로 붙여넣기", PasteFromWord : "MS Word 형식에서 붙여넣기", DlgPasteMsg2 : "키보드의 (Ctrl+V) 를 이용해서 상자안에 붙여넣고 OK 를 누르세요.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.", DlgPasteIgnoreFont : "폰트 설정 무시", DlgPasteRemoveStyles : "스타일 정의 제거", -DlgPasteCleanBox : "글상자 제거", // Color Picker ColorAutomatic : "기본색상", @@ -493,12 +509,18 @@ DlgTemplatesTitle : "내용 템플릿", DlgTemplatesSelMsg : "에디터에서 사용할 템플릿을 선택하십시요.
    (지금까지 작성된 내용은 사라집니다.):", DlgTemplatesLoading : "템플릿 목록을 불러오는중입니다. 잠시만 기다려주십시요.", DlgTemplatesNoTpl : "(템플릿이 없습니다.)", -DlgTemplatesReplace : "Replace actual contents", //MISSING +DlgTemplatesReplace : "현재 내용 바꾸기", // About Dialog DlgAboutAboutTab : "About", DlgAboutBrowserInfoTab : "브라우저 정보", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "버전", -DlgAboutInfo : "For further information go to" -}; \ No newline at end of file +DlgAboutInfo : "더 많은 정보를 보시려면 다음 사이트로 가십시오.", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/lt.js b/static/contrib/fckeditor-2.6.3/editor/lang/lt.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/lt.js rename to static/contrib/fckeditor-2.6.3/editor/lang/lt.js index db994d0..de2f8f5 --- a/static/fckeditor/editor/lang/lt.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/lt.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Panaikinti formatą", InsertLinkLbl : "Nuoroda", InsertLink : "Įterpti/taisyti nuorodą", RemoveLink : "Panaikinti nuorodą", +VisitLink : "Open Link", //MISSING Anchor : "Įterpti/modifikuoti žymę", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Vaizdas", InsertImage : "Įterpti/taisyti vaizdą", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Lygiuoti dešinę", BlockJustify : "Lygiuoti abi puses", DecreaseIndent : "Sumažinti įtrauką", IncreaseIndent : "Padidinti įtrauką", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Atšaukti", Redo : "Atstatyti", NumberedListLbl : "Numeruotas sąrašas", @@ -103,20 +109,27 @@ SelectionField : "Atrankos laukas", ImageButton : "Vaizdinis mygtukas", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Taisyti nuorodą", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Įterpti eilutę", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Šalinti eilutes", -InsertColumn : "Įterpti stulpelį", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Šalinti stulpelius", -InsertCell : "Įterpti langelį", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Šalinti langelius", MergeCells : "Sujungti langelius", -SplitCell : "Skaidyti langelius", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Šalinti lentelę", CellProperties : "Langelio savybės", TableProperties : "Lentelės savybės", @@ -134,7 +147,7 @@ SelectionFieldProp : "Atrankos lauko savybės", TextareaProp : "Teksto srities savybės", FormProp : "Formos savybės", -FontFormats : "Normalus;Formuotas;Kreipinio;Antraštinis 1;Antraštinis 2;Antraštinis 3;Antraštinis 4;Antraštinis 5;Antraštinis 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normalus;Formuotas;Kreipinio;Antraštinis 1;Antraštinis 2;Antraštinis 3;Antraštinis 4;Antraštinis 5;Antraštinis 6", // Alerts and Messages ProcessingXHTML : "Apdorojamas XHTML. Prašome palaukti...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Mygtukų juostos rinkinys \"%1\" neegzistuoja", NoActiveX : "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.", BrowseServerBlocked : "Neįmanoma atidaryti naujo naršyklės lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.", DialogBlocked : "Neįmanoma atidaryti dialogo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Pasirinkite žymę", DlgLnkAnchorByName : "Pagal žymės vardą", DlgLnkAnchorById : "Pagal žymės Id", -DlgLnkNoAnchors : "<Šiame dokumente žymių nėra>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Šiame dokumente žymių nėra)", DlgLnkEMail : "El.pašto adresas", DlgLnkEMailSubject : "Žinutės tema", DlgLnkEMailBody : "Žinutės turinys", @@ -322,6 +336,9 @@ DlgCellBackColor : "Fono spalva", DlgCellBorderColor : "Rėmelio spalva", DlgCellBtnSelect : "Pažymėti...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Paieška", DlgFindFindBtn : "Surasti", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami k DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Ignoruoti šriftų nustatymus", DlgPasteRemoveStyles : "Pašalinti stilių nustatymus", -DlgPasteCleanBox : "Trinti įvedimo lauką", // Color Picker ColorAutomatic : "Automatinis", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Apie", DlgAboutBrowserInfoTab : "Naršyklės informacija", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "versija", -DlgAboutInfo : "Papildomą informaciją galima gauti" -}; \ No newline at end of file +DlgAboutInfo : "Papildomą informaciją galima gauti", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/lv.js b/static/contrib/fckeditor-2.6.3/editor/lang/lv.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/lv.js rename to static/contrib/fckeditor-2.6.3/editor/lang/lv.js index 6809426..1db14ab --- a/static/fckeditor/editor/lang/lv.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/lv.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Noņemt stilus", InsertLinkLbl : "Hipersaite", InsertLink : "Ievietot/Labot hipersaiti", RemoveLink : "Noņemt hipersaiti", +VisitLink : "Open Link", //MISSING Anchor : "Ievietot/Labot iezīmi", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Attēls", InsertImage : "Ievietot/Labot Attēlu", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Izlīdzināt pa labi", BlockJustify : "Izlīdzināt malas", DecreaseIndent : "Samazināt atkāpi", IncreaseIndent : "Palielināt atkāpi", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Atcelt", Redo : "Atkārtot", NumberedListLbl : "Numurēts saraksts", @@ -103,20 +109,27 @@ SelectionField : "Iezīmēšanas lauks", ImageButton : "Attēlpoga", FitWindow : "Maksimizēt redaktora izmēru", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Labot hipersaiti", CellCM : "Šūna", RowCM : "Rinda", ColumnCM : "Kolonna", -InsertRow : "Ievietot rindu", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Dzēst rindas", -InsertColumn : "Ievietot kolonnu", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Dzēst kolonnas", -InsertCell : "Ievietot rūtiņu", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Dzēst rūtiņas", MergeCells : "Apvienot rūtiņas", -SplitCell : "Sadalīt rūtiņu", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Dzēst tabulu", CellProperties : "Rūtiņas īpašības", TableProperties : "Tabulas īpašības", @@ -134,7 +147,7 @@ SelectionFieldProp : "Iezīmēšanas lauka īpašības", TextareaProp : "Teksta laukuma īpašības", FormProp : "Formas īpašības", -FontFormats : "Normāls teksts;Formatēts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normāls teksts;Formatēts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)", // Alerts and Messages ProcessingXHTML : "Tiek apstrādāts XHTML. Lūdzu uzgaidiet...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Rīku joslas komplekts \"%1\" neeksistē", NoActiveX : "Interneta pārlūkprogrammas drošības uzstādījumi varētu ietekmēt dažas no redaktora īpašībām. Jābūt aktivizētai sadaļai \"Run ActiveX controls and plug-ins\". Savādāk ir iespējamas kļūdas darbībā un kļūdu paziņojumu parādīšanās.", BrowseServerBlocked : "Resursu pārlūks nevar tikt atvērts. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.", DialogBlocked : "Nav iespējams atvērt dialoglogu. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "Darīts!", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Izvēlēties iezīmi", DlgLnkAnchorByName : "Pēc iezīmes nosaukuma", DlgLnkAnchorById : "Pēc elementa ID", -DlgLnkNoAnchors : "<Šajā dokumentā nav iezīmju>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Šajā dokumentā nav iezīmju)", DlgLnkEMail : "E-pasta adrese", DlgLnkEMailSubject : "Ziņas tēma", DlgLnkEMailBody : "Ziņas saturs", @@ -322,6 +336,9 @@ DlgCellBackColor : "Fona krāsa", DlgCellBorderColor : "Rāmja krāsa", DlgCellBtnSelect : "Iezīmē...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Meklētājs", DlgFindFindBtn : "Meklēt", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatū DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Ignorēt iepriekš norādītos fontus", DlgPasteRemoveStyles : "Noņemt norādītos stilus", -DlgPasteCleanBox : "Apstrādāt laukuma saturu", // Color Picker ColorAutomatic : "Automātiska", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Par", DlgAboutBrowserInfoTab : "Informācija par pārlūkprogrammu", DlgAboutLicenseTab : "Licence", DlgAboutVersion : "versija", -DlgAboutInfo : "Papildus informācija ir pieejama" -}; \ No newline at end of file +DlgAboutInfo : "Papildus informācija ir pieejama", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/mn.js b/static/contrib/fckeditor-2.6.3/editor/lang/mn.js old mode 100644 new mode 100755 similarity index 50% rename from static/fckeditor/editor/lang/mn.js rename to static/contrib/fckeditor-2.6.3/editor/lang/mn.js index ba8f798..e78b167 --- a/static/fckeditor/editor/lang/mn.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/mn.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,11 +44,13 @@ RemoveFormat : "Формат авч хаях", InsertLinkLbl : "Линк", InsertLink : "Линк Оруулах/Засварлах", RemoveLink : "Линк авч хаях", -Anchor : "Insert/Edit Anchor", //MISSING +VisitLink : "Open Link", //MISSING +Anchor : "Холбоос Оруулах/Засварлах", +AnchorDelete : "Холбоос Авах", InsertImageLbl : "Зураг", InsertImage : "Зураг Оруулах/Засварлах", -InsertFlashLbl : "Flash", //MISSING -InsertFlash : "Insert/Edit Flash", //MISSING +InsertFlashLbl : "Флаш", +InsertFlash : "Флаш Оруулах/Засварлах", InsertTableLbl : "Хүснэгт", InsertTable : "Хүснэгт Оруулах/Засварлах", InsertLineLbl : "Зураас", @@ -70,6 +72,10 @@ RightJustify : "Баруун талд байрлуулах", BlockJustify : "Блок хэлбэрээр байрлуулах", DecreaseIndent : "Догол мөр нэмэх", IncreaseIndent : "Догол мөр хасах", +Blockquote : "Хайрцаглах", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Хүчингүй болгох", Redo : "Өмнөх үйлдлээ сэргээх", NumberedListLbl : "Дугаарлагдсан жагсаалт", @@ -87,54 +93,61 @@ BGColor : "Фонны өнгө", Source : "Код", Find : "Хайх", Replace : "Солих", -SpellCheck : "Check Spelling", //MISSING -UniversalKeyboard : "Universal Keyboard", //MISSING -PageBreakLbl : "Page Break", //MISSING -PageBreak : "Insert Page Break", //MISSING +SpellCheck : "Үгийн дүрэх шалгах", +UniversalKeyboard : "Униварсал гар", +PageBreakLbl : "Хуудас тусгаарлах", +PageBreak : "Хуудас тусгаарлагч оруулах", -Form : "Form", //MISSING -Checkbox : "Checkbox", //MISSING -RadioButton : "Radio Button", //MISSING -TextField : "Text Field", //MISSING -Textarea : "Textarea", //MISSING -HiddenField : "Hidden Field", //MISSING -Button : "Button", //MISSING -SelectionField : "Selection Field", //MISSING -ImageButton : "Image Button", //MISSING +Form : "Форм", +Checkbox : "Чекбокс", +RadioButton : "Радио товч", +TextField : "Техт талбар", +Textarea : "Техт орчин", +HiddenField : "Нууц талбар", +Button : "Товч", +SelectionField : "Сонгогч талбар", +ImageButton : "Зурагтай товч", -FitWindow : "Maximize the editor size", //MISSING +FitWindow : "editor-н хэмжээг томруулах", +ShowBlocks : "Block-уудыг үзүүлэх", // Context Menu EditLink : "Холбоос засварлах", -CellCM : "Cell", //MISSING -RowCM : "Row", //MISSING -ColumnCM : "Column", //MISSING -InsertRow : "Мөр оруулах", +CellCM : "Нүх/зай", +RowCM : "Мөр", +ColumnCM : "Багана", +InsertRowAfter : "Мөр дараа нь оруулах", +InsertRowBefore : "Мөр өмнө нь оруулах", DeleteRows : "Мөр устгах", -InsertColumn : "Багана оруулах", +InsertColumnAfter : "Багана дараа нь оруулах", +InsertColumnBefore : "Багана өмнө нь оруулах", DeleteColumns : "Багана устгах", -InsertCell : "Нүх оруулах", +InsertCellAfter : "Нүх/зай дараа нь оруулах", +InsertCellBefore : "Нүх/зай өмнө нь оруулах", DeleteCells : "Нүх устгах", MergeCells : "Нүх нэгтэх", -SplitCell : "Нүх тусгайрлах", -TableDelete : "Delete Table", //MISSING -CellProperties : "Хоосон зайн шинж чанар", +MergeRight : "Баруун тийш нэгтгэх", +MergeDown : "Доош нэгтгэх", +HorizontalSplitCell : "Нүх/зайг босоогоор нь тусгаарлах", +VerticalSplitCell : "Нүх/зайг хөндлөнгөөр нь тусгаарлах", +TableDelete : "Хүснэгт устгах", +CellProperties : "Нүх/зай зайн шинж чанар", TableProperties : "Хүснэгт", ImageProperties : "Зураг", -FlashProperties : "Flash Properties", //MISSING +FlashProperties : "Флаш шинж чанар", -AnchorProp : "Anchor Properties", //MISSING -ButtonProp : "Button Properties", //MISSING -CheckboxProp : "Checkbox Properties", //MISSING -HiddenFieldProp : "Hidden Field Properties", //MISSING -RadioButtonProp : "Radio Button Properties", //MISSING -ImageButtonProp : "Image Button Properties", //MISSING -TextFieldProp : "Text Field Properties", //MISSING -SelectionFieldProp : "Selection Field Properties", //MISSING -TextareaProp : "Textarea Properties", //MISSING -FormProp : "Form Properties", //MISSING +AnchorProp : "Холбоос шинж чанар", +ButtonProp : "Товчны шинж чанар", +CheckboxProp : "Чекбоксны шинж чанар", +HiddenFieldProp : "Нууц талбарын шинж чанар", +RadioButtonProp : "Радио товчны шинж чанар", +ImageButtonProp : "Зурган товчны шинж чанар", +TextFieldProp : "Текст талбарын шинж чанар", +SelectionFieldProp : "Согогч талбарын шинж чанар", +TextareaProp : "Текст орчны шинж чанар", +FormProp : "Форм шинж чанар", -FontFormats : "Хэвийн;Formatted;Хаяг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Хэвийн;Formatted;Хаяг;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML үйл явц явагдаж байна. Хүлээнэ үү...", @@ -145,19 +158,20 @@ UnknownToolbarItem : "Багажны хэсгийн \"%1\" item мэдэгдэх UnknownCommand : "\"%1\" комманд нэр мэдагдэхгүй байна", NotImplemented : "Зөвшөөрөгдөхгүй комманд", UnknownToolbarSet : "Багажны хэсэгт \"%1\" оноох, үүсээгүй байна", -NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING -BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING -DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +NoActiveX : "Таны үзүүлэгч/browser-н хамгаалалтын тохиргоо editor-н зарим боломжийг хязгаарлаж байна. Та \"Run ActiveX controls ба plug-ins\" сонголыг идвэхитэй болго.", +BrowseServerBlocked : "Нөөц үзүүгч нээж чадсангүй. Бүх popup blocker-г disabled болгоно уу.", +DialogBlocked : "Харилцах цонхонд энийг нээхэд боломжгүй ээ. Бүх popup blocker-г disabled болгоно уу.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", DlgBtnCancel : "Болих", DlgBtnClose : "Хаах", -DlgBtnBrowseServer : "Browse Server", //MISSING +DlgBtnBrowseServer : "Сервер харуулах", DlgAdvancedTag : "Нэмэлт", -DlgOpOther : "", //MISSING -DlgInfoTab : "Info", //MISSING -DlgAlertUrl : "Please insert the URL", //MISSING +DlgOpOther : "<Бусад>", +DlgInfoTab : "Мэдээлэл", +DlgAlertUrl : "URL оруулна уу", // General Dialogs Labels DlgGenNotSet : "<Оноохгүй>", @@ -185,7 +199,7 @@ DlgImgUpload : "Хуулах", DlgImgAlt : "Тайлбар текст", DlgImgWidth : "Өргөн", DlgImgHeight : "Өндөр", -DlgImgLockRatio : "Lock Ratio", +DlgImgLockRatio : "Радио түгжих", DlgBtnResetSize : "хэмжээ дахин оноох", DlgImgBorder : "Хүрээ", DlgImgHSpace : "Хөндлөн зай", @@ -202,17 +216,17 @@ DlgImgAlignTextTop : "Текст дээр", DlgImgAlignTop : "Дээд талд", DlgImgPreview : "Уридчлан харах", DlgImgAlertUrl : "Зурагны URL-ын төрлийн сонгоно уу", -DlgImgLinkTab : "Link", //MISSING +DlgImgLinkTab : "Линк", // Flash Dialog -DlgFlashTitle : "Flash Properties", //MISSING -DlgFlashChkPlay : "Auto Play", //MISSING -DlgFlashChkLoop : "Loop", //MISSING -DlgFlashChkMenu : "Enable Flash Menu", //MISSING -DlgFlashScale : "Scale", //MISSING -DlgFlashScaleAll : "Show all", //MISSING -DlgFlashScaleNoBorder : "No Border", //MISSING -DlgFlashScaleFit : "Exact Fit", //MISSING +DlgFlashTitle : "Флаш шинж чанар", +DlgFlashChkPlay : "Автоматаар тоглох", +DlgFlashChkLoop : "Давтах", +DlgFlashChkMenu : "Флаш цэс идвэхжүүлэх", +DlgFlashScale : "Өргөгтгөх", +DlgFlashScaleAll : "Бүгдийг харуулах", +DlgFlashScaleNoBorder : "Хүрээгүй", +DlgFlashScaleFit : "Яг тааруулах", // Link Dialog DlgLnkWindowTitle : "Линк", @@ -229,9 +243,9 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Холбоос сонгох", DlgLnkAnchorByName : "Холбоосын нэрээр", DlgLnkAnchorById : "Элемэнт Id-гаар", -DlgLnkNoAnchors : "<Баримт бичиг холбоосгүй байна>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Баримт бичиг холбоосгүй байна)", DlgLnkEMail : "E-Mail Хаяг", -DlgLnkEMailSubject : "Message Subject", +DlgLnkEMailSubject : "Message гарчиг", DlgLnkEMailBody : "Message-ийн агуулга", DlgLnkUpload : "Хуулах", DlgLnkBtnUpload : "Үүнийг серверрүү илгээ", @@ -243,7 +257,7 @@ DlgLnkTargetBlank : "Шинэ цонх (_blank)", DlgLnkTargetParent : "Эцэг цонх (_parent)", DlgLnkTargetSelf : "Төстэй цонх (_self)", DlgLnkTargetTop : "Хамгийн түрүүн байх цонх (_top)", -DlgLnkTargetFrameName : "Target Frame Name", //MISSING +DlgLnkTargetFrameName : "Очих фремын нэр", DlgLnkPopWinName : "Popup цонхны нэр", DlgLnkPopWinFeat : "Popup цонхны онцлог", DlgLnkPopResize : "Хэмжээ өөрчлөх", @@ -262,7 +276,7 @@ DlgLnkPopTop : "Дээд байрлал", DlnLnkMsgNoUrl : "Линк URL-ээ төрөлжүүлнэ үү", DlnLnkMsgNoEMail : "Е-mail хаягаа төрөлжүүлнэ үү", DlnLnkMsgNoAnchor : "Холбоосоо сонгоно уу", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "popup нэр нь үсгэн тэмдэгтээр эхэлсэн байх ба хоосон зай агуулаагүй байх ёстой.", // Color Dialog DlgColorTitle : "Өнгө сонгох", @@ -290,10 +304,10 @@ DlgTableWidth : "Өргөн", DlgTableWidthPx : "цэг", DlgTableWidthPc : "хувь", DlgTableHeight : "Өндөр", -DlgTableCellSpace : "Нүх хоорондын зай", -DlgTableCellPad : "Нүх доторлох", +DlgTableCellSpace : "Нүх хоорондын зай (spacing)", +DlgTableCellPad : "Нүх доторлох(padding)", DlgTableCaption : "Тайлбар", -DlgTableSummary : "Summary", //MISSING +DlgTableSummary : "Тайлбар", // Table Cell Dialog DlgCellTitle : "Хоосон зайн шинж чанар", @@ -316,12 +330,15 @@ DlgCellVerAlignTop : "Дээд тал", DlgCellVerAlignMiddle : "Дунд", DlgCellVerAlignBottom : "Доод тал", DlgCellVerAlignBaseline : "Baseline", -DlgCellRowSpan : "Нийт мөр", -DlgCellCollSpan : "Нийт багана", +DlgCellRowSpan : "Нийт мөр (span)", +DlgCellCollSpan : "Нийт багана (span)", DlgCellBackColor : "Фонны өнгө", DlgCellBorderColor : "Хүрээний өнгө", DlgCellBtnSelect : "Сонго...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Хай мөн Дарж бич", + // Find Dialog DlgFindTitle : "Хайх", DlgFindFindBtn : "Хайх", @@ -343,162 +360,167 @@ PasteErrorCopy : "Таны browser-ын хамгаалалтын тохирго PasteAsText : "Plain Text-ээс буулгах", PasteFromWord : "Word-оос буулгах", -DlgPasteMsg2 : "Please paste inside the following box using the keyboard (Ctrl+V) and hit OK.", //MISSING -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING -DlgPasteIgnoreFont : "Ignore Font Face definitions", //MISSING -DlgPasteRemoveStyles : "Remove Styles definitions", //MISSING -DlgPasteCleanBox : "Clean Up Box", //MISSING +DlgPasteMsg2 : "(Ctrl+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.", +DlgPasteSec : "Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.", +DlgPasteIgnoreFont : "Тодорхойлогдсон Font Face зөвшөөрнө", +DlgPasteRemoveStyles : "Тодорхойлогдсон загварыг авах", // Color Picker ColorAutomatic : "Автоматаар", ColorMoreColors : "Нэмэлт өнгөнүүд...", // Document Properties -DocProps : "Document Properties", //MISSING +DocProps : "Баримт бичиг шинж чанар", // Anchor Dialog -DlgAnchorTitle : "Anchor Properties", //MISSING -DlgAnchorName : "Anchor Name", //MISSING -DlgAnchorErrorName : "Please type the anchor name", //MISSING +DlgAnchorTitle : "Холбоос шинж чанар", +DlgAnchorName : "Холбоос нэр", +DlgAnchorErrorName : "Холбоос төрөл оруулна уу", // Speller Pages Dialog -DlgSpellNotInDic : "Not in dictionary", //MISSING -DlgSpellChangeTo : "Change to", //MISSING -DlgSpellBtnIgnore : "Ignore", //MISSING -DlgSpellBtnIgnoreAll : "Ignore All", //MISSING -DlgSpellBtnReplace : "Replace", //MISSING -DlgSpellBtnReplaceAll : "Replace All", //MISSING -DlgSpellBtnUndo : "Undo", //MISSING -DlgSpellNoSuggestions : "- No suggestions -", //MISSING -DlgSpellProgress : "Spell check in progress...", //MISSING -DlgSpellNoMispell : "Spell check complete: No misspellings found", //MISSING -DlgSpellNoChanges : "Spell check complete: No words changed", //MISSING -DlgSpellOneChange : "Spell check complete: One word changed", //MISSING -DlgSpellManyChanges : "Spell check complete: %1 words changed", //MISSING +DlgSpellNotInDic : "Толь бичиггүй", +DlgSpellChangeTo : "Өөрчлөх", +DlgSpellBtnIgnore : "Зөвшөөрөх", +DlgSpellBtnIgnoreAll : "Бүгдийг зөвшөөрөх", +DlgSpellBtnReplace : "Дарж бичих", +DlgSpellBtnReplaceAll : "Бүгдийг Дарж бичих", +DlgSpellBtnUndo : "Буцаах", +DlgSpellNoSuggestions : "- Тайлбаргүй -", +DlgSpellProgress : "Дүрэм шалгаж байгаа үйл явц...", +DlgSpellNoMispell : "Дүрэм шалгаад дууссан: Алдаа олдсонгүй", +DlgSpellNoChanges : "Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй", +DlgSpellOneChange : "Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн", +DlgSpellManyChanges : "Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн", -IeSpellDownload : "Spell checker not installed. Do you want to download it now?", //MISSING +IeSpellDownload : "Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?", // Button Dialog -DlgButtonText : "Text (Value)", //MISSING -DlgButtonType : "Type", //MISSING -DlgButtonTypeBtn : "Button", //MISSING -DlgButtonTypeSbm : "Submit", //MISSING -DlgButtonTypeRst : "Reset", //MISSING +DlgButtonText : "Тэкст (Утга)", +DlgButtonType : "Төрөл", +DlgButtonTypeBtn : "Товч", +DlgButtonTypeSbm : "Submit", +DlgButtonTypeRst : "Болих", // Checkbox and Radio Button Dialogs -DlgCheckboxName : "Name", //MISSING -DlgCheckboxValue : "Value", //MISSING -DlgCheckboxSelected : "Selected", //MISSING +DlgCheckboxName : "Нэр", +DlgCheckboxValue : "Утга", +DlgCheckboxSelected : "Сонгогдсон", // Form Dialog -DlgFormName : "Name", //MISSING -DlgFormAction : "Action", //MISSING -DlgFormMethod : "Method", //MISSING +DlgFormName : "Нэр", +DlgFormAction : "Үйлдэл", +DlgFormMethod : "Арга", // Select Field Dialog -DlgSelectName : "Name", //MISSING -DlgSelectValue : "Value", //MISSING -DlgSelectSize : "Size", //MISSING -DlgSelectLines : "lines", //MISSING -DlgSelectChkMulti : "Allow multiple selections", //MISSING -DlgSelectOpAvail : "Available Options", //MISSING -DlgSelectOpText : "Text", //MISSING -DlgSelectOpValue : "Value", //MISSING -DlgSelectBtnAdd : "Add", //MISSING -DlgSelectBtnModify : "Modify", //MISSING -DlgSelectBtnUp : "Up", //MISSING -DlgSelectBtnDown : "Down", //MISSING -DlgSelectBtnSetValue : "Set as selected value", //MISSING -DlgSelectBtnDelete : "Delete", //MISSING +DlgSelectName : "Нэр", +DlgSelectValue : "Утга", +DlgSelectSize : "Хэмжээ", +DlgSelectLines : "Мөр", +DlgSelectChkMulti : "Олон сонголт зөвшөөрөх", +DlgSelectOpAvail : "Идвэхтэй сонголт", +DlgSelectOpText : "Тэкст", +DlgSelectOpValue : "Утга", +DlgSelectBtnAdd : "Нэмэх", +DlgSelectBtnModify : "Өөрчлөх", +DlgSelectBtnUp : "Дээш", +DlgSelectBtnDown : "Доош", +DlgSelectBtnSetValue : "Сонгогдсан утга оноох", +DlgSelectBtnDelete : "Устгах", // Textarea Dialog -DlgTextareaName : "Name", //MISSING -DlgTextareaCols : "Columns", //MISSING -DlgTextareaRows : "Rows", //MISSING +DlgTextareaName : "Нэр", +DlgTextareaCols : "Багана", +DlgTextareaRows : "Мөр", // Text Field Dialog -DlgTextName : "Name", //MISSING -DlgTextValue : "Value", //MISSING -DlgTextCharWidth : "Character Width", //MISSING -DlgTextMaxChars : "Maximum Characters", //MISSING -DlgTextType : "Type", //MISSING -DlgTextTypeText : "Text", //MISSING -DlgTextTypePass : "Password", //MISSING +DlgTextName : "Нэр", +DlgTextValue : "Утга", +DlgTextCharWidth : "Тэмдэгтын өргөн", +DlgTextMaxChars : "Хамгийн их тэмдэгт", +DlgTextType : "Төрөл", +DlgTextTypeText : "Текст", +DlgTextTypePass : "Нууц үг", // Hidden Field Dialog -DlgHiddenName : "Name", //MISSING -DlgHiddenValue : "Value", //MISSING +DlgHiddenName : "Нэр", +DlgHiddenValue : "Утга", // Bulleted List Dialog -BulletedListProp : "Bulleted List Properties", //MISSING -NumberedListProp : "Numbered List Properties", //MISSING -DlgLstStart : "Start", //MISSING -DlgLstType : "Type", //MISSING -DlgLstTypeCircle : "Circle", //MISSING -DlgLstTypeDisc : "Disc", //MISSING -DlgLstTypeSquare : "Square", //MISSING -DlgLstTypeNumbers : "Numbers (1, 2, 3)", //MISSING -DlgLstTypeLCase : "Lowercase Letters (a, b, c)", //MISSING -DlgLstTypeUCase : "Uppercase Letters (A, B, C)", //MISSING -DlgLstTypeSRoman : "Small Roman Numerals (i, ii, iii)", //MISSING -DlgLstTypeLRoman : "Large Roman Numerals (I, II, III)", //MISSING +BulletedListProp : "Bulleted жагсаалын шинж чанар", +NumberedListProp : "Дугаарласан жагсаалын шинж чанар", +DlgLstStart : "Эхлэх", +DlgLstType : "Төрөл", +DlgLstTypeCircle : "Тойрог", +DlgLstTypeDisc : "Тайлбар", +DlgLstTypeSquare : "Square", +DlgLstTypeNumbers : "Тоо (1, 2, 3)", +DlgLstTypeLCase : "Жижиг үсэг (a, b, c)", +DlgLstTypeUCase : "Том үсэг (A, B, C)", +DlgLstTypeSRoman : "Жижиг Ром тоо (i, ii, iii)", +DlgLstTypeLRoman : "Том Ром тоо (I, II, III)", // Document Properties Dialog -DlgDocGeneralTab : "General", //MISSING -DlgDocBackTab : "Background", //MISSING -DlgDocColorsTab : "Colors and Margins", //MISSING -DlgDocMetaTab : "Meta Data", //MISSING +DlgDocGeneralTab : "Ерөнхий", +DlgDocBackTab : "Фоно", +DlgDocColorsTab : "Захын зай ба Өнгө", +DlgDocMetaTab : "Meta өгөгдөл", -DlgDocPageTitle : "Page Title", //MISSING -DlgDocLangDir : "Language Direction", //MISSING -DlgDocLangDirLTR : "Left to Right (LTR)", //MISSING -DlgDocLangDirRTL : "Right to Left (RTL)", //MISSING -DlgDocLangCode : "Language Code", //MISSING -DlgDocCharSet : "Character Set Encoding", //MISSING -DlgDocCharSetCE : "Central European", //MISSING -DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING -DlgDocCharSetCR : "Cyrillic", //MISSING -DlgDocCharSetGR : "Greek", //MISSING -DlgDocCharSetJP : "Japanese", //MISSING -DlgDocCharSetKR : "Korean", //MISSING -DlgDocCharSetTR : "Turkish", //MISSING -DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING -DlgDocCharSetWE : "Western European", //MISSING -DlgDocCharSetOther : "Other Character Set Encoding", //MISSING +DlgDocPageTitle : "Хуудасны гарчиг", +DlgDocLangDir : "Хэлний чиглэл", +DlgDocLangDirLTR : "Зүүнээс баруунруу (LTR)", +DlgDocLangDirRTL : "Баруунаас зүүнрүү (RTL)", +DlgDocLangCode : "Хэлний код", +DlgDocCharSet : "Encoding тэмдэгт", +DlgDocCharSetCE : "Төв европ", +DlgDocCharSetCT : "Хятадын уламжлалт (Big5)", +DlgDocCharSetCR : "Крил", +DlgDocCharSetGR : "Гред", +DlgDocCharSetJP : "Япон", +DlgDocCharSetKR : "Солонгос", +DlgDocCharSetTR : "Tурк", +DlgDocCharSetUN : "Юникод (UTF-8)", +DlgDocCharSetWE : "Баруун европ", +DlgDocCharSetOther : "Encoding-д өөр тэмдэгт оноох", -DlgDocDocType : "Document Type Heading", //MISSING -DlgDocDocTypeOther : "Other Document Type Heading", //MISSING -DlgDocIncXHTML : "Include XHTML Declarations", //MISSING -DlgDocBgColor : "Background Color", //MISSING -DlgDocBgImage : "Background Image URL", //MISSING -DlgDocBgNoScroll : "Nonscrolling Background", //MISSING -DlgDocCText : "Text", //MISSING -DlgDocCLink : "Link", //MISSING -DlgDocCVisited : "Visited Link", //MISSING -DlgDocCActive : "Active Link", //MISSING -DlgDocMargins : "Page Margins", //MISSING -DlgDocMaTop : "Top", //MISSING -DlgDocMaLeft : "Left", //MISSING -DlgDocMaRight : "Right", //MISSING -DlgDocMaBottom : "Bottom", //MISSING -DlgDocMeIndex : "Document Indexing Keywords (comma separated)", //MISSING -DlgDocMeDescr : "Document Description", //MISSING -DlgDocMeAuthor : "Author", //MISSING -DlgDocMeCopy : "Copyright", //MISSING -DlgDocPreview : "Preview", //MISSING +DlgDocDocType : "Баримт бичгийн төрөл Heading", +DlgDocDocTypeOther : "Бусад баримт бичгийн төрөл Heading", +DlgDocIncXHTML : "XHTML агуулж зарлах", +DlgDocBgColor : "Фоно өнгө", +DlgDocBgImage : "Фоно зурагны URL", +DlgDocBgNoScroll : "Гүйдэггүй фоно", +DlgDocCText : "Текст", +DlgDocCLink : "Линк", +DlgDocCVisited : "Зочилсон линк", +DlgDocCActive : "Идвэхитэй линк", +DlgDocMargins : "Хуудасны захын зай", +DlgDocMaTop : "Дээд тал", +DlgDocMaLeft : "Зүүн тал", +DlgDocMaRight : "Баруун тал", +DlgDocMaBottom : "Доод тал", +DlgDocMeIndex : "Баримт бичгийн индекс түлхүүр үг (таслалаар тусгаарлагдана)", +DlgDocMeDescr : "Баримт бичгийн тайлбар", +DlgDocMeAuthor : "Зохиогч", +DlgDocMeCopy : "Зохиогчийн эрх", +DlgDocPreview : "Харах", // Templates Dialog -Templates : "Templates", //MISSING -DlgTemplatesTitle : "Content Templates", //MISSING -DlgTemplatesSelMsg : "Please select the template to open in the editor
    (the actual contents will be lost):", //MISSING -DlgTemplatesLoading : "Loading templates list. Please wait...", //MISSING -DlgTemplatesNoTpl : "(No templates defined)", //MISSING -DlgTemplatesReplace : "Replace actual contents", //MISSING +Templates : "Загварууд", +DlgTemplatesTitle : "Загварын агуулга", +DlgTemplatesSelMsg : "Загварыг нээж editor-рүү сонгож оруулна уу
    (Одоогийн агууллагыг устаж магадгүй):", +DlgTemplatesLoading : "Загваруудыг ачааллаж байна. Түр хүлээнэ үү...", +DlgTemplatesNoTpl : "(Загвар тодорхойлогдоогүй байна)", +DlgTemplatesReplace : "Одоогийн агууллагыг дарж бичих", // About Dialog -DlgAboutAboutTab : "About", //MISSING -DlgAboutBrowserInfoTab : "Browser Info", //MISSING -DlgAboutLicenseTab : "License", //MISSING +DlgAboutAboutTab : "Тухай", +DlgAboutBrowserInfoTab : "Мэдээлэл үзүүлэгч", +DlgAboutLicenseTab : "Лиценз", DlgAboutVersion : "Хувилбар", -DlgAboutInfo : "Мэдээллээр туслах" -}; \ No newline at end of file +DlgAboutInfo : "Мэдээллээр туслах", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/ms.js b/static/contrib/fckeditor-2.6.3/editor/lang/ms.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/ms.js rename to static/contrib/fckeditor-2.6.3/editor/lang/ms.js index efe0529..278c4c9 --- a/static/fckeditor/editor/lang/ms.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/ms.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Buang Format", InsertLinkLbl : "Sambungan", InsertLink : "Masukkan/Sunting Sambungan", RemoveLink : "Buang Sambungan", +VisitLink : "Open Link", //MISSING Anchor : "Masukkan/Sunting Pautan", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Gambar", InsertImage : "Masukkan/Sunting Gambar", InsertFlashLbl : "Flash", //MISSING @@ -70,6 +72,10 @@ RightJustify : "Jajaran Kanan", BlockJustify : "Jajaran Blok", DecreaseIndent : "Kurangkan Inden", IncreaseIndent : "Tambahkan Inden", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Batalkan", Redo : "Ulangkan", NumberedListLbl : "Senarai bernombor", @@ -103,20 +109,27 @@ SelectionField : "Field Pilihan", ImageButton : "Butang Bergambar", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Sunting Sambungan", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Masukkan Baris", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Buangkan Baris", -InsertColumn : "Masukkan Lajur", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Buangkan Lajur", -InsertCell : "Masukkan Sel", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Buangkan Sel-sel", MergeCells : "Cantumkan Sel-sel", -SplitCell : "Bahagikan Sel", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Delete Table", //MISSING CellProperties : "Ciri-ciri Sel", TableProperties : "Ciri-ciri Jadual", @@ -134,7 +147,7 @@ SelectionFieldProp : "Ciri-ciri Selection Field", TextareaProp : "Ciri-ciri Textarea", FormProp : "Ciri-ciri Borang", -FontFormats : "Normal;Telah Diformat;Alamat;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Perenggan (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Telah Diformat;Alamat;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Perenggan (DIV)", // Alerts and Messages ProcessingXHTML : "Memproses XHTML. Sila tunggu...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Set toolbar \"%1\" tidak wujud", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Sila pilih pautan", DlgLnkAnchorByName : "dengan menggunakan nama pautan", DlgLnkAnchorById : "dengan menggunakan ID elemen", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Tiada pautan terdapat dalam dokumen ini)", DlgLnkEMail : "Alamat E-Mail", DlgLnkEMailSubject : "Subjek Mesej", DlgLnkEMailBody : "Isi Kandungan Mesej", @@ -322,6 +336,9 @@ DlgCellBackColor : "Warna Latarbelakang", DlgCellBorderColor : "Warna Border", DlgCellBtnSelect : "Pilih...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Carian", DlgFindFindBtn : "Cari", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Please paste inside the following box using the keyboard (", DlgInfoTab : "Info", -DlgAlertUrl : "Vennligst skriv inn URL'en", +DlgAlertUrl : "Vennligst skriv inn URL-en", // General Dialogs Labels DlgGenNotSet : "", @@ -165,7 +179,7 @@ DlgGenId : "Id", DlgGenLangDir : "Språkretning", DlgGenLangDirLtr : "Venstre til høyre (VTH)", DlgGenLangDirRtl : "Høyre til venstre (HTV)", -DlgGenLangCode : "Språk kode", +DlgGenLangCode : "Språkkode", DlgGenAccessKey : "Aksessknapp", DlgGenName : "Navn", DlgGenTabIndex : "Tab Indeks", @@ -201,18 +215,18 @@ DlgImgAlignRight : "Høyre", DlgImgAlignTextTop : "Tekst topp", DlgImgAlignTop : "Topp", DlgImgPreview : "Forhåndsvis", -DlgImgAlertUrl : "Vennligst skriv bildeurlen", +DlgImgAlertUrl : "Vennligst skriv bilde-urlen", DlgImgLinkTab : "Lenke", // Flash Dialog -DlgFlashTitle : "Flash Egenskaper", -DlgFlashChkPlay : "Auto Spill", +DlgFlashTitle : "Flash-egenskaper", +DlgFlashChkPlay : "Autospill", DlgFlashChkLoop : "Loop", -DlgFlashChkMenu : "Slå på Flash meny", +DlgFlashChkMenu : "Slå på Flash-meny", DlgFlashScale : "Skaler", DlgFlashScaleAll : "Vis alt", DlgFlashScaleNoBorder : "Ingen ramme", -DlgFlashScaleFit : "Skaler til å passeExact Fit", +DlgFlashScaleFit : "Skaler til å passe", // Link Dialog DlgLnkWindowTitle : "Lenke", @@ -221,16 +235,16 @@ DlgLnkTargetTab : "Mål", DlgLnkType : "Lenketype", DlgLnkTypeURL : "URL", -DlgLnkTypeAnchor : "Lenke til bokmerke i teksten", -DlgLnkTypeEMail : "E-Post", +DlgLnkTypeAnchor : "Lenke til anker i teksten", +DlgLnkTypeEMail : "E-post", DlgLnkProto : "Protokoll", DlgLnkProtoOther : "", DlgLnkURL : "URL", -DlgLnkAnchorSel : "Velg ett anker", +DlgLnkAnchorSel : "Velg et anker", DlgLnkAnchorByName : "Anker etter navn", DlgLnkAnchorById : "Element etter ID", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) -DlgLnkEMail : "E-Post Addresse", +DlgLnkNoAnchors : "(Ingen anker i dokumentet)", +DlgLnkEMail : "E-postadresse", DlgLnkEMailSubject : "Meldingsemne", DlgLnkEMailBody : "Melding", DlgLnkUpload : "Last opp", @@ -240,12 +254,12 @@ DlgLnkTarget : "Mål", DlgLnkTargetFrame : "", DlgLnkTargetPopup : "", DlgLnkTargetBlank : "Nytt vindu (_blank)", -DlgLnkTargetParent : "Foreldre vindu (_parent)", +DlgLnkTargetParent : "Foreldrevindu (_parent)", DlgLnkTargetSelf : "Samme vindu (_self)", DlgLnkTargetTop : "Hele vindu (_top)", DlgLnkTargetFrameName : "Målramme", -DlgLnkPopWinName : "Popup vindus navn", -DlgLnkPopWinFeat : "Popup vindus egenskaper", +DlgLnkPopWinName : "Navn på popup-vindus", +DlgLnkPopWinFeat : "Egenskaper for popup-vindu", DlgLnkPopResize : "Endre størrelse", DlgLnkPopLocation : "Adresselinje", DlgLnkPopMenu : "Menylinje", @@ -257,18 +271,18 @@ DlgLnkPopDependent : "Avhenging (Netscape)", DlgLnkPopWidth : "Bredde", DlgLnkPopHeight : "Høyde", DlgLnkPopLeft : "Venstre posisjon", -DlgLnkPopTop : "Topp posisjon", +DlgLnkPopTop : "Topp-posisjon", DlnLnkMsgNoUrl : "Vennligst skriv inn lenkens url", DlnLnkMsgNoEMail : "Vennligst skriv inn e-postadressen", -DlnLnkMsgNoAnchor : "Vennligst velg ett anker", -DlnLnkMsgInvPopName : "Popup vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom", +DlnLnkMsgNoAnchor : "Vennligst velg et anker", +DlnLnkMsgInvPopName : "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom", // Color Dialog DlgColorTitle : "Velg farge", DlgColorBtnClear : "Tøm", DlgColorHighlight : "Marker", -DlgColorSelected : "Velg", +DlgColorSelected : "Valgt", // Smiley Dialog DlgSmileyTitle : "Sett inn smil", @@ -277,7 +291,7 @@ DlgSmileyTitle : "Sett inn smil", DlgSpecialCharTitle : "Velg spesielt tegn", // Table Dialog -DlgTableTitle : "Tabellegenskaper", +DlgTableTitle : "Egenskaper for tabell", DlgTableRows : "Rader", DlgTableColumns : "Kolonner", DlgTableBorder : "Rammestørrelse", @@ -287,18 +301,18 @@ DlgTableAlignLeft : "Venstre", DlgTableAlignCenter : "Midtjuster", DlgTableAlignRight : "Høyre", DlgTableWidth : "Bredde", -DlgTableWidthPx : "pixler", +DlgTableWidthPx : "piksler", DlgTableWidthPc : "prosent", DlgTableHeight : "Høyde", -DlgTableCellSpace : "Celle marg", -DlgTableCellPad : "Celle polstring", +DlgTableCellSpace : "Cellemarg", +DlgTableCellPad : "Cellepolstring", DlgTableCaption : "Tittel", DlgTableSummary : "Sammendrag", // Table Cell Dialog -DlgCellTitle : "Celle egenskaper", +DlgCellTitle : "Celleegenskaper", DlgCellWidth : "Bredde", -DlgCellWidthPx : "pixeler", +DlgCellWidthPx : "piksler", DlgCellWidthPc : "prosent", DlgCellHeight : "Høyde", DlgCellWordWrap : "Tekstbrytning", @@ -322,32 +336,34 @@ DlgCellBackColor : "Bakgrunnsfarge", DlgCellBorderColor : "Rammefarge", DlgCellBtnSelect : "Velg...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Søk og erstatt", + // Find Dialog -DlgFindTitle : "Finn", -DlgFindFindBtn : "Finn", -DlgFindNotFoundMsg : "Den spesifiserte teksten ble ikke funnet.", +DlgFindTitle : "Søk", +DlgFindFindBtn : "Søk", +DlgFindNotFoundMsg : "Fant ikke søketeksten.", // Replace Dialog DlgReplaceTitle : "Erstatt", -DlgReplaceFindLbl : "Finn hva:", +DlgReplaceFindLbl : "Søk etter:", DlgReplaceReplaceLbl : "Erstatt med:", -DlgReplaceCaseChk : "Riktig case", +DlgReplaceCaseChk : "Skill mellom store og små bokstaver", DlgReplaceReplaceBtn : "Erstatt", DlgReplaceReplAllBtn : "Erstatt alle", -DlgReplaceWordChk : "Finn hele ordet", +DlgReplaceWordChk : "Bare hele ord", // Paste Operations / Dialog -PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).", -PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).", +PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).", +PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).", PasteAsText : "Lim inn som ren tekst", -PasteFromWord : "Lim inn fra word", +PasteFromWord : "Lim inn fra Word", DlgPasteMsg2 : "Vennligst lim inn i den følgende boksen med tastaturet (Ctrl+V) og trykk OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.", DlgPasteIgnoreFont : "Fjern skrifttyper", DlgPasteRemoveStyles : "Fjern stildefinisjoner", -DlgPasteCleanBox : "Tøm boksen", // Color Picker ColorAutomatic : "Automatisk", @@ -369,17 +385,17 @@ DlgSpellBtnIgnoreAll : "Ignorer alle", DlgSpellBtnReplace : "Erstatt", DlgSpellBtnReplaceAll : "Erstatt alle", DlgSpellBtnUndo : "Angre", -DlgSpellNoSuggestions : "- ingen forslag -", +DlgSpellNoSuggestions : "- Ingen forslag -", DlgSpellProgress : "Stavekontroll pågår...", DlgSpellNoMispell : "Stavekontroll fullført: ingen feilstavinger funnet", DlgSpellNoChanges : "Stavekontroll fullført: ingen ord endret", DlgSpellOneChange : "Stavekontroll fullført: Ett ord endret", DlgSpellManyChanges : "Stavekontroll fullført: %1 ord endret", -IeSpellDownload : "Stavekontroll ikke installert, vil du laste den ned nå?", +IeSpellDownload : "Stavekontroll er ikke installert. Vil du laste den ned nå?", // Button Dialog -DlgButtonText : "Tekst", +DlgButtonText : "Tekst (verdi)", DlgButtonType : "Type", DlgButtonTypeBtn : "Knapp", DlgButtonTypeSbm : "Send", @@ -418,7 +434,7 @@ DlgTextareaRows : "Rader", // Text Field Dialog DlgTextName : "Navn", -DlgTextValue : "verdi", +DlgTextValue : "Verdi", DlgTextCharWidth : "Tegnbredde", DlgTextMaxChars : "Maks antall tegn", DlgTextType : "Type", @@ -430,24 +446,24 @@ DlgHiddenName : "Navn", DlgHiddenValue : "Verdi", // Bulleted List Dialog -BulletedListProp : "Uordnet listeegenskaper", -NumberedListProp : "Ordnet listeegenskaper", +BulletedListProp : "Egenskaper for uordnet liste", +NumberedListProp : "Egenskaper for ordnet liste", DlgLstStart : "Start", DlgLstType : "Type", DlgLstTypeCircle : "Sirkel", DlgLstTypeDisc : "Hel sirkel", DlgLstTypeSquare : "Firkant", -DlgLstTypeNumbers : "Numre(1, 2, 3)", +DlgLstTypeNumbers : "Numre (1, 2, 3)", DlgLstTypeLCase : "Små bokstaver (a, b, c)", -DlgLstTypeUCase : "Store bokstaver(A, B, C)", -DlgLstTypeSRoman : "Små romerske tall(i, ii, iii)", -DlgLstTypeLRoman : "Store romerske tall(I, II, III)", +DlgLstTypeUCase : "Store bokstaver (A, B, C)", +DlgLstTypeSRoman : "Små romerske tall (i, ii, iii)", +DlgLstTypeLRoman : "Store romerske tall (I, II, III)", // Document Properties Dialog -DlgDocGeneralTab : "Generalt", +DlgDocGeneralTab : "Generelt", DlgDocBackTab : "Bakgrunn", DlgDocColorsTab : "Farger og marginer", -DlgDocMetaTab : "Meta Data", +DlgDocMetaTab : "Meta-data", DlgDocPageTitle : "Sidetittel", DlgDocLangDir : "Språkretning", @@ -462,16 +478,16 @@ DlgDocCharSetGR : "Gresk", DlgDocCharSetJP : "Japansk", DlgDocCharSetKR : "Koreansk", DlgDocCharSetTR : "Tyrkisk", -DlgDocCharSetUN : "Unikode (UTF-8)", +DlgDocCharSetUN : "Unicode (UTF-8)", DlgDocCharSetWE : "Vesteuropeisk", DlgDocCharSetOther : "Annet tegnsett", DlgDocDocType : "Dokumenttype header", DlgDocDocTypeOther : "Annet dokumenttype header", -DlgDocIncXHTML : "Inkulder XHTML deklarasjon", +DlgDocIncXHTML : "Inkluder XHTML-deklarasjon", DlgDocBgColor : "Bakgrunnsfarge", -DlgDocBgImage : "Bakgrunnsbilde url", -DlgDocBgNoScroll : "Ikke scroll bakgrunnsbilde", +DlgDocBgImage : "URL for bakgrunnsbilde", +DlgDocBgNoScroll : "Lås bakgrunnsbilde", DlgDocCText : "Tekst", DlgDocCLink : "Link", DlgDocCVisited : "Besøkt lenke", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Om", DlgAboutBrowserInfoTab : "Nettleserinfo", DlgAboutLicenseTab : "Lisens", DlgAboutVersion : "versjon", -DlgAboutInfo : "For further information go to" //MISSING -}; \ No newline at end of file +DlgAboutInfo : "For mer informasjon, se", + +// Div Dialog +DlgDivGeneralTab : "Generelt", +DlgDivAdvancedTab : "Avansert", +DlgDivStyle : "Stil", +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/nl.js b/static/contrib/fckeditor-2.6.3/editor/lang/nl.js old mode 100644 new mode 100755 similarity index 88% rename from static/fckeditor/editor/lang/nl.js rename to static/contrib/fckeditor-2.6.3/editor/lang/nl.js index f6b26b4..adf4b58 --- a/static/fckeditor/editor/lang/nl.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/nl.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Opmaak verwijderen", InsertLinkLbl : "Link", InsertLink : "Link invoegen/wijzigen", RemoveLink : "Link verwijderen", +VisitLink : "Link volgen", Anchor : "Interne link", +AnchorDelete : "Anker verwijderen", InsertImageLbl : "Afbeelding", InsertImage : "Afbeelding invoegen/wijzigen", InsertFlashLbl : "Flash", @@ -52,7 +54,7 @@ InsertFlash : "Flash invoegen/wijzigen", InsertTableLbl : "Tabel", InsertTable : "Tabel invoegen/wijzigen", InsertLineLbl : "Lijn", -InsertLine : "Invoegen horizontale lijn", +InsertLine : "Horizontale lijn invoegen", InsertSpecialCharLbl: "Speciale tekens", InsertSpecialChar : "Speciaal teken invoegen", InsertSmileyLbl : "Smiley", @@ -70,6 +72,10 @@ RightJustify : "Rechts uitlijnen", BlockJustify : "Uitvullen", DecreaseIndent : "Inspringen verkleinen", IncreaseIndent : "Inspringen vergroten", +Blockquote : "Citaatblok", +CreateDiv : "DIV aanmaken", +EditDiv : "DIV wijzigen", +DeleteDiv : "DIV verwijderen", Undo : "Ongedaan maken", Redo : "Opnieuw uitvoeren", NumberedListLbl : "Genummerde lijst", @@ -103,20 +109,27 @@ SelectionField : "Selectieveld", ImageButton : "Afbeeldingsknop", FitWindow : "De editor maximaliseren", +ShowBlocks : "Toon blokken", // Context Menu EditLink : "Link wijzigen", CellCM : "Cel", RowCM : "Rij", ColumnCM : "Kolom", -InsertRow : "Rij invoegen", +InsertRowAfter : "Voeg rij in achter", +InsertRowBefore : "Voeg rij in voor", DeleteRows : "Rijen verwijderen", -InsertColumn : "Kolom invoegen", +InsertColumnAfter : "Voeg kolom in achter", +InsertColumnBefore : "Voeg kolom in voor", DeleteColumns : "Kolommen verwijderen", -InsertCell : "Cel", +InsertCellAfter : "Voeg cel in achter", +InsertCellBefore : "Voeg cel in voor", DeleteCells : "Cellen verwijderen", MergeCells : "Cellen samenvoegen", -SplitCell : "Cellen splitsen", +MergeRight : "Voeg samen naar rechts", +MergeDown : "Voeg samen naar beneden", +HorizontalSplitCell : "Splits cellen horizontaal", +VerticalSplitCell : "Splits cellen verticaal", TableDelete : "Tabel verwijderen", CellProperties : "Eigenschappen cel", TableProperties : "Eigenschappen tabel", @@ -134,7 +147,7 @@ SelectionFieldProp : "Eigenschappen selectieveld", TextareaProp : "Eigenschappen tekstvak", FormProp : "Eigenschappen formulier", -FontFormats : "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6;Normaal (DIV)", // Alerts and Messages ProcessingXHTML : "Bezig met verwerken XHTML. Even geduld aub...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Menubalk \"%1\" bestaat niet.", NoActiveX : "De beveilingsinstellingen van je browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.", BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.", DialogBlocked : "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.", +VisitLinkBlocked : "Het was niet mogelijk een nieuw venster te openen. Controleer of er geen pop-up-blocker aktief is.", // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Kies een interne link", DlgLnkAnchorByName : "Op naam interne link", DlgLnkAnchorById : "Op kenmerk interne link", -DlgLnkNoAnchors : "(Geen interne links in document gevonden)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Geen interne links in document gevonden)", DlgLnkEMail : "E-mailadres", DlgLnkEMailSubject : "Onderwerp bericht", DlgLnkEMailBody : "Inhoud bericht", @@ -322,6 +336,9 @@ DlgCellBackColor : "Achtergrondkleur", DlgCellBorderColor : "Randkleur", DlgCellBtnSelect : "Selecteren...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Zoeken en vervangen", + // Find Dialog DlgFindTitle : "Zoeken", DlgFindFindBtn : "Zoeken", @@ -343,11 +360,10 @@ PasteErrorCopy : "De beveiligingsinstelling van de browser verhinderen het autom PasteAsText : "Plakken als platte tekst", PasteFromWord : "Plakken als Word-gegevens", -DlgPasteMsg2 : "Plak de tekst in het volgende vak gebruik makend van je toetstenbord (Ctrl+V) en klik op OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteMsg2 : "Plak de tekst in het volgende vak gebruik makend van je toetstenbord (Ctrl+V) en klik op OK.", +DlgPasteSec : "Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.", DlgPasteIgnoreFont : "Negeer \"Font Face\"-definities", DlgPasteRemoveStyles : "Verwijder \"Style\"-definities", -DlgPasteCleanBox : "Vak opschonen", // Color Picker ColorAutomatic : "Automatisch", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Over", DlgAboutBrowserInfoTab : "Browserinformatie", DlgAboutLicenseTab : "Licentie", DlgAboutVersion : "Versie", -DlgAboutInfo : "Voor meer informatie ga naar " -}; \ No newline at end of file +DlgAboutInfo : "Voor meer informatie ga naar ", + +// Div Dialog +DlgDivGeneralTab : "Algemeen", +DlgDivAdvancedTab : "Geavanceerd", +DlgDivStyle : "Style", +DlgDivInlineStyle : "Inline Style" +}; diff --git a/static/fckeditor/editor/lang/no.js b/static/contrib/fckeditor-2.6.3/editor/lang/no.js old mode 100644 new mode 100755 similarity index 69% rename from static/fckeditor/editor/lang/no.js rename to static/contrib/fckeditor-2.6.3/editor/lang/no.js index d3b237d..a4e3515 --- a/static/fckeditor/editor/lang/no.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/no.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Fjern format", InsertLinkLbl : "Lenke", InsertLink : "Sett inn/Rediger lenke", RemoveLink : "Fjern lenke", +VisitLink : "Åpne lenke", Anchor : "Sett inn/Rediger anker", +AnchorDelete : "Fjern anker", InsertImageLbl : "Bilde", InsertImage : "Sett inn/Rediger bilde", InsertFlashLbl : "Flash", @@ -70,10 +72,14 @@ RightJustify : "Høyrejuster", BlockJustify : "Blokkjuster", DecreaseIndent : "Senk nivå", IncreaseIndent : "Øk nivå", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Angre", Redo : "Gjør om", -NumberedListLbl : "Numrert liste", -NumberedList : "Sett inn/Fjern numrert liste", +NumberedListLbl : "Nummerert liste", +NumberedList : "Sett inn/Fjern nummerert liste", BulletedListLbl : "Uordnet liste", BulletedList : "Sett inn/Fjern uordnet liste", ShowTableBorders : "Vis tabellrammer", @@ -85,7 +91,7 @@ FontSize : "Størrelse", TextColor : "Tekstfarge", BGColor : "Bakgrunnsfarge", Source : "Kilde", -Find : "Finn", +Find : "Søk", Replace : "Erstatt", SpellCheck : "Stavekontroll", UniversalKeyboard : "Universelt tastatur", @@ -93,61 +99,69 @@ PageBreakLbl : "Sideskift", PageBreak : "Sett inn sideskift", Form : "Skjema", -Checkbox : "Sjekkboks", -RadioButton : "Radioknapp", -TextField : "Tekstfelt", +Checkbox : "Avmerkingsboks", +RadioButton : "Alternativknapp", +TextField : "Tekstboks", Textarea : "Tekstområde", HiddenField : "Skjult felt", Button : "Knapp", -SelectionField : "Dropdown meny", +SelectionField : "Rullegardinliste", ImageButton : "Bildeknapp", FitWindow : "Maksimer størrelsen på redigeringsverktøyet", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Rediger lenke", CellCM : "Celle", RowCM : "Rader", ColumnCM : "Kolonne", -InsertRow : "Sett inn rad", +InsertRowAfter : "Sett inn rad etter", +InsertRowBefore : "Sett inn rad før", DeleteRows : "Slett rader", -InsertColumn : "Sett inn kolonne", +InsertColumnAfter : "Sett inn kolonne etter", +InsertColumnBefore : "Sett inn kolonne før", DeleteColumns : "Slett kolonner", -InsertCell : "Sett inn celle", +InsertCellAfter : "Sett inn celle etter", +InsertCellBefore : "Sett inn celle før", DeleteCells : "Slett celler", MergeCells : "Slå sammen celler", -SplitCell : "Splitt celler", +MergeRight : "Slå sammen høyre", +MergeDown : "Slå sammen ned", +HorizontalSplitCell : "Del celle horisontalt", +VerticalSplitCell : "Del celle vertikalt", TableDelete : "Slett tabell", -CellProperties : "Celleegenskaper", -TableProperties : "Tabellegenskaper", -ImageProperties : "Bildeegenskaper", -FlashProperties : "Flash Egenskaper", +CellProperties : "Egenskaper for celle", +TableProperties : "Egenskaper for tabell", +ImageProperties : "Egenskaper for bilde", +FlashProperties : "Egenskaper for Flash-objekt", -AnchorProp : "Ankeregenskaper", -ButtonProp : "Knappegenskaper", -CheckboxProp : "Sjekkboksegenskaper", -HiddenFieldProp : "Skjult felt egenskaper", -RadioButtonProp : "Radioknappegenskaper", -ImageButtonProp : "Bildeknappegenskaper", -TextFieldProp : "Tekstfeltegenskaper", -SelectionFieldProp : "Dropdown menyegenskaper", -TextareaProp : "Tekstfeltegenskaper", -FormProp : "Skjemaegenskaper", +AnchorProp : "Egenskaper for anker", +ButtonProp : "Egenskaper for knapp", +CheckboxProp : "Egenskaper for avmerkingsboks", +HiddenFieldProp : "Egenskaper for skjult felt", +RadioButtonProp : "Egenskaper for alternativknapp", +ImageButtonProp : "Egenskaper for bildeknapp", +TextFieldProp : "Egenskaper for tekstfelt", +SelectionFieldProp : "Egenskaper for rullegardinliste", +TextareaProp : "Egenskaper for tekstområde", +FormProp : "Egenskaper for skjema", -FontFormats : "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatert;Adresse;Tittel 1;Tittel 2;Tittel 3;Tittel 4;Tittel 5;Tittel 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Lager XHTML. Vennligst vent...", Done : "Ferdig", -PasteWordConfirm : "Teksten du prøver å lime inn ser ut som om den kommer fra word , du bør rense den før du limer inn , vil du gjøre dette?", -NotCompatiblePaste : "Denne kommandoen er tilgjenglig kun for Internet Explorer version 5.5 eller bedre. Vil du fortsette uten å rense?(Du kan lime inn som ren tekst)", +PasteWordConfirm : "Teksten du prøver å lime inn ser ut som om den kommer fra Word. Vil du rense den for unødvendig kode før du limer inn?", +NotCompatiblePaste : "Denne kommandoen er kun tilgjenglig for Internet Explorer versjon 5.5 eller bedre. Vil du fortsette uten å rense? (Du kan lime inn som ren tekst)", UnknownToolbarItem : "Ukjent menyvalg \"%1\"", UnknownCommand : "Ukjent kommando \"%1\"", -NotImplemented : "Kommando ikke ennå implimentert", +NotImplemented : "Kommando ikke implimentert", UnknownToolbarSet : "Verktøylinjesett \"%1\" finnes ikke", -NoActiveX : "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner", -BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.", -DialogBlocked : "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.", +NoActiveX : "Din nettlesers sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveX-kontroller og plugin-modeller\". Du kan oppleve feil og advarsler om manglende funksjoner", +BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Sjekk at popup-blokkering er deaktivert.", +DialogBlocked : "Kunne ikke åpne dialogboksen. Sjekk at popup-blokkering er deaktivert.", +VisitLinkBlocked : "Kunne ikke åpne et nytt vindu. Sjekk at popup-blokkering er deaktivert.", // Dialogs DlgBtnOK : "OK", @@ -157,7 +171,7 @@ DlgBtnBrowseServer : "Bla igjennom server", DlgAdvancedTag : "Avansert", DlgOpOther : "", DlgInfoTab : "Info", -DlgAlertUrl : "Vennligst skriv inn URL'en", +DlgAlertUrl : "Vennligst skriv inn URL-en", // General Dialogs Labels DlgGenNotSet : "", @@ -165,7 +179,7 @@ DlgGenId : "Id", DlgGenLangDir : "Språkretning", DlgGenLangDirLtr : "Venstre til høyre (VTH)", DlgGenLangDirRtl : "Høyre til venstre (HTV)", -DlgGenLangCode : "Språk kode", +DlgGenLangCode : "Språkkode", DlgGenAccessKey : "Aksessknapp", DlgGenName : "Navn", DlgGenTabIndex : "Tab Indeks", @@ -201,18 +215,18 @@ DlgImgAlignRight : "Høyre", DlgImgAlignTextTop : "Tekst topp", DlgImgAlignTop : "Topp", DlgImgPreview : "Forhåndsvis", -DlgImgAlertUrl : "Vennligst skriv bildeurlen", +DlgImgAlertUrl : "Vennligst skriv bilde-urlen", DlgImgLinkTab : "Lenke", // Flash Dialog -DlgFlashTitle : "Flash Egenskaper", -DlgFlashChkPlay : "Auto Spill", +DlgFlashTitle : "Flash-egenskaper", +DlgFlashChkPlay : "Autospill", DlgFlashChkLoop : "Loop", -DlgFlashChkMenu : "Slå på Flash meny", +DlgFlashChkMenu : "Slå på Flash-meny", DlgFlashScale : "Skaler", DlgFlashScaleAll : "Vis alt", DlgFlashScaleNoBorder : "Ingen ramme", -DlgFlashScaleFit : "Skaler til å passeExact Fit", +DlgFlashScaleFit : "Skaler til å passe", // Link Dialog DlgLnkWindowTitle : "Lenke", @@ -221,16 +235,16 @@ DlgLnkTargetTab : "Mål", DlgLnkType : "Lenketype", DlgLnkTypeURL : "URL", -DlgLnkTypeAnchor : "Lenke til bokmerke i teksten", -DlgLnkTypeEMail : "E-Post", +DlgLnkTypeAnchor : "Lenke til anker i teksten", +DlgLnkTypeEMail : "E-post", DlgLnkProto : "Protokoll", DlgLnkProtoOther : "", DlgLnkURL : "URL", -DlgLnkAnchorSel : "Velg ett anker", +DlgLnkAnchorSel : "Velg et anker", DlgLnkAnchorByName : "Anker etter navn", DlgLnkAnchorById : "Element etter ID", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) -DlgLnkEMail : "E-Post Addresse", +DlgLnkNoAnchors : "(Ingen anker i dokumentet)", +DlgLnkEMail : "E-postadresse", DlgLnkEMailSubject : "Meldingsemne", DlgLnkEMailBody : "Melding", DlgLnkUpload : "Last opp", @@ -240,12 +254,12 @@ DlgLnkTarget : "Mål", DlgLnkTargetFrame : "", DlgLnkTargetPopup : "", DlgLnkTargetBlank : "Nytt vindu (_blank)", -DlgLnkTargetParent : "Foreldre vindu (_parent)", +DlgLnkTargetParent : "Foreldrevindu (_parent)", DlgLnkTargetSelf : "Samme vindu (_self)", DlgLnkTargetTop : "Hele vindu (_top)", DlgLnkTargetFrameName : "Målramme", -DlgLnkPopWinName : "Popup vindus navn", -DlgLnkPopWinFeat : "Popup vindus egenskaper", +DlgLnkPopWinName : "Navn på popup-vindus", +DlgLnkPopWinFeat : "Egenskaper for popup-vindu", DlgLnkPopResize : "Endre størrelse", DlgLnkPopLocation : "Adresselinje", DlgLnkPopMenu : "Menylinje", @@ -257,18 +271,18 @@ DlgLnkPopDependent : "Avhenging (Netscape)", DlgLnkPopWidth : "Bredde", DlgLnkPopHeight : "Høyde", DlgLnkPopLeft : "Venstre posisjon", -DlgLnkPopTop : "Topp posisjon", +DlgLnkPopTop : "Topp-posisjon", DlnLnkMsgNoUrl : "Vennligst skriv inn lenkens url", DlnLnkMsgNoEMail : "Vennligst skriv inn e-postadressen", -DlnLnkMsgNoAnchor : "Vennligst velg ett anker", -DlnLnkMsgInvPopName : "Popup vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom", +DlnLnkMsgNoAnchor : "Vennligst velg et anker", +DlnLnkMsgInvPopName : "Popup-vinduets navn må begynne med en bokstav, og kan ikke inneholde mellomrom", // Color Dialog DlgColorTitle : "Velg farge", DlgColorBtnClear : "Tøm", DlgColorHighlight : "Marker", -DlgColorSelected : "Velg", +DlgColorSelected : "Valgt", // Smiley Dialog DlgSmileyTitle : "Sett inn smil", @@ -277,7 +291,7 @@ DlgSmileyTitle : "Sett inn smil", DlgSpecialCharTitle : "Velg spesielt tegn", // Table Dialog -DlgTableTitle : "Tabellegenskaper", +DlgTableTitle : "Egenskaper for tabell", DlgTableRows : "Rader", DlgTableColumns : "Kolonner", DlgTableBorder : "Rammestørrelse", @@ -287,18 +301,18 @@ DlgTableAlignLeft : "Venstre", DlgTableAlignCenter : "Midtjuster", DlgTableAlignRight : "Høyre", DlgTableWidth : "Bredde", -DlgTableWidthPx : "pixler", +DlgTableWidthPx : "piksler", DlgTableWidthPc : "prosent", DlgTableHeight : "Høyde", -DlgTableCellSpace : "Celle marg", -DlgTableCellPad : "Celle polstring", +DlgTableCellSpace : "Cellemarg", +DlgTableCellPad : "Cellepolstring", DlgTableCaption : "Tittel", DlgTableSummary : "Sammendrag", // Table Cell Dialog -DlgCellTitle : "Celle egenskaper", +DlgCellTitle : "Celleegenskaper", DlgCellWidth : "Bredde", -DlgCellWidthPx : "pixeler", +DlgCellWidthPx : "piksler", DlgCellWidthPc : "prosent", DlgCellHeight : "Høyde", DlgCellWordWrap : "Tekstbrytning", @@ -322,32 +336,34 @@ DlgCellBackColor : "Bakgrunnsfarge", DlgCellBorderColor : "Rammefarge", DlgCellBtnSelect : "Velg...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Søk og erstatt", + // Find Dialog -DlgFindTitle : "Finn", -DlgFindFindBtn : "Finn", -DlgFindNotFoundMsg : "Den spesifiserte teksten ble ikke funnet.", +DlgFindTitle : "Søk", +DlgFindFindBtn : "Søk", +DlgFindNotFoundMsg : "Fant ikke søketeksten.", // Replace Dialog DlgReplaceTitle : "Erstatt", -DlgReplaceFindLbl : "Finn hva:", +DlgReplaceFindLbl : "Søk etter:", DlgReplaceReplaceLbl : "Erstatt med:", -DlgReplaceCaseChk : "Riktig case", +DlgReplaceCaseChk : "Skill mellom store og små bokstaver", DlgReplaceReplaceBtn : "Erstatt", DlgReplaceReplAllBtn : "Erstatt alle", -DlgReplaceWordChk : "Finn hele ordet", +DlgReplaceWordChk : "Bare hele ord", // Paste Operations / Dialog -PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst brukt snareveien (Ctrl+X).", -PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst brukt snareveien (Ctrl+C).", +PasteErrorCut : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk klipping av tekst. Vennligst bruk snareveien (Ctrl+X).", +PasteErrorCopy : "Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).", PasteAsText : "Lim inn som ren tekst", -PasteFromWord : "Lim inn fra word", +PasteFromWord : "Lim inn fra Word", DlgPasteMsg2 : "Vennligst lim inn i den følgende boksen med tastaturet (Ctrl+V) og trykk OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.", DlgPasteIgnoreFont : "Fjern skrifttyper", DlgPasteRemoveStyles : "Fjern stildefinisjoner", -DlgPasteCleanBox : "Tøm boksen", // Color Picker ColorAutomatic : "Automatisk", @@ -369,17 +385,17 @@ DlgSpellBtnIgnoreAll : "Ignorer alle", DlgSpellBtnReplace : "Erstatt", DlgSpellBtnReplaceAll : "Erstatt alle", DlgSpellBtnUndo : "Angre", -DlgSpellNoSuggestions : "- ingen forslag -", +DlgSpellNoSuggestions : "- Ingen forslag -", DlgSpellProgress : "Stavekontroll pågår...", DlgSpellNoMispell : "Stavekontroll fullført: ingen feilstavinger funnet", DlgSpellNoChanges : "Stavekontroll fullført: ingen ord endret", DlgSpellOneChange : "Stavekontroll fullført: Ett ord endret", DlgSpellManyChanges : "Stavekontroll fullført: %1 ord endret", -IeSpellDownload : "Stavekontroll ikke installert, vil du laste den ned nå?", +IeSpellDownload : "Stavekontroll er ikke installert. Vil du laste den ned nå?", // Button Dialog -DlgButtonText : "Tekst", +DlgButtonText : "Tekst (verdi)", DlgButtonType : "Type", DlgButtonTypeBtn : "Knapp", DlgButtonTypeSbm : "Send", @@ -418,7 +434,7 @@ DlgTextareaRows : "Rader", // Text Field Dialog DlgTextName : "Navn", -DlgTextValue : "verdi", +DlgTextValue : "Verdi", DlgTextCharWidth : "Tegnbredde", DlgTextMaxChars : "Maks antall tegn", DlgTextType : "Type", @@ -430,24 +446,24 @@ DlgHiddenName : "Navn", DlgHiddenValue : "Verdi", // Bulleted List Dialog -BulletedListProp : "Uordnet listeegenskaper", -NumberedListProp : "Ordnet listeegenskaper", +BulletedListProp : "Egenskaper for uordnet liste", +NumberedListProp : "Egenskaper for ordnet liste", DlgLstStart : "Start", DlgLstType : "Type", DlgLstTypeCircle : "Sirkel", DlgLstTypeDisc : "Hel sirkel", DlgLstTypeSquare : "Firkant", -DlgLstTypeNumbers : "Numre(1, 2, 3)", +DlgLstTypeNumbers : "Numre (1, 2, 3)", DlgLstTypeLCase : "Små bokstaver (a, b, c)", -DlgLstTypeUCase : "Store bokstaver(A, B, C)", -DlgLstTypeSRoman : "Små romerske tall(i, ii, iii)", -DlgLstTypeLRoman : "Store romerske tall(I, II, III)", +DlgLstTypeUCase : "Store bokstaver (A, B, C)", +DlgLstTypeSRoman : "Små romerske tall (i, ii, iii)", +DlgLstTypeLRoman : "Store romerske tall (I, II, III)", // Document Properties Dialog -DlgDocGeneralTab : "Generalt", +DlgDocGeneralTab : "Generelt", DlgDocBackTab : "Bakgrunn", DlgDocColorsTab : "Farger og marginer", -DlgDocMetaTab : "Meta Data", +DlgDocMetaTab : "Meta-data", DlgDocPageTitle : "Sidetittel", DlgDocLangDir : "Språkretning", @@ -462,16 +478,16 @@ DlgDocCharSetGR : "Gresk", DlgDocCharSetJP : "Japansk", DlgDocCharSetKR : "Koreansk", DlgDocCharSetTR : "Tyrkisk", -DlgDocCharSetUN : "Unikode (UTF-8)", +DlgDocCharSetUN : "Unicode (UTF-8)", DlgDocCharSetWE : "Vesteuropeisk", DlgDocCharSetOther : "Annet tegnsett", DlgDocDocType : "Dokumenttype header", DlgDocDocTypeOther : "Annet dokumenttype header", -DlgDocIncXHTML : "Inkulder XHTML deklarasjon", +DlgDocIncXHTML : "Inkluder XHTML-deklarasjon", DlgDocBgColor : "Bakgrunnsfarge", -DlgDocBgImage : "Bakgrunnsbilde url", -DlgDocBgNoScroll : "Ikke scroll bakgrunnsbilde", +DlgDocBgImage : "URL for bakgrunnsbilde", +DlgDocBgNoScroll : "Lås bakgrunnsbilde", DlgDocCText : "Tekst", DlgDocCLink : "Link", DlgDocCVisited : "Besøkt lenke", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Om", DlgAboutBrowserInfoTab : "Nettleserinfo", DlgAboutLicenseTab : "Lisens", DlgAboutVersion : "versjon", -DlgAboutInfo : "For further information go to" //MISSING -}; \ No newline at end of file +DlgAboutInfo : "For mer informasjon, se", + +// Div Dialog +DlgDivGeneralTab : "Generelt", +DlgDivAdvancedTab : "Avansert", +DlgDivStyle : "Stil", +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/pl.js b/static/contrib/fckeditor-2.6.3/editor/lang/pl.js old mode 100644 new mode 100755 similarity index 81% rename from static/fckeditor/editor/lang/pl.js rename to static/contrib/fckeditor-2.6.3/editor/lang/pl.js index f01994d..e6d2ba4 --- a/static/fckeditor/editor/lang/pl.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/pl.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Usuń formatowanie", InsertLinkLbl : "Hiperłącze", InsertLink : "Wstaw/edytuj hiperłącze", RemoveLink : "Usuń hiperłącze", +VisitLink : "Open Link", //MISSING Anchor : "Wstaw/edytuj kotwicę", +AnchorDelete : "Usuń kotwicę", InsertImageLbl : "Obrazek", InsertImage : "Wstaw/edytuj obrazek", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Wyrównaj do prawej", BlockJustify : "Wyrównaj do lewej i prawej", DecreaseIndent : "Zmniejsz wcięcie", IncreaseIndent : "Zwiększ wcięcie", +Blockquote : "Cytat", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Cofnij", Redo : "Ponów", NumberedListLbl : "Lista numerowana", @@ -93,30 +99,37 @@ PageBreakLbl : "Odstęp", PageBreak : "Wstaw odstęp", Form : "Formularz", -Checkbox : "Checkbox", -RadioButton : "Pole wyboru", +Checkbox : "Pole wyboru (checkbox)", +RadioButton : "Pole wyboru (radio)", TextField : "Pole tekstowe", Textarea : "Obszar tekstowy", HiddenField : "Pole ukryte", Button : "Przycisk", SelectionField : "Lista wyboru", -ImageButton : "Przycisk obrazek", +ImageButton : "Przycisk-obrazek", FitWindow : "Maksymalizuj rozmiar edytora", +ShowBlocks : "Pokaż bloki", // Context Menu EditLink : "Edytuj hiperłącze", CellCM : "Komórka", RowCM : "Wiersz", ColumnCM : "Kolumna", -InsertRow : "Wstaw wiersz", +InsertRowAfter : "Wstaw wiersz poniżej", +InsertRowBefore : "Wstaw wiersz powyżej", DeleteRows : "Usuń wiersze", -InsertColumn : "Wstaw kolumnę", +InsertColumnAfter : "Wstaw kolumnę z prawej", +InsertColumnBefore : "Wstaw kolumnę z lewej", DeleteColumns : "Usuń kolumny", -InsertCell : "Wstaw komórkę", +InsertCellAfter : "Wstaw komórkę z prawej", +InsertCellBefore : "Wstaw komórkę z lewej", DeleteCells : "Usuń komórki", MergeCells : "Połącz komórki", -SplitCell : "Podziel komórkę", +MergeRight : "Połącz z komórką z prawej", +MergeDown : "Połącz z komórką poniżej", +HorizontalSplitCell : "Podziel komórkę poziomo", +VerticalSplitCell : "Podziel komórkę pionowo", TableDelete : "Usuń tabelę", CellProperties : "Właściwości komórki", TableProperties : "Właściwości tabeli", @@ -125,16 +138,16 @@ FlashProperties : "Właściwości elementu Flash", AnchorProp : "Właściwości kotwicy", ButtonProp : "Właściwości przycisku", -CheckboxProp : "Checkbox - właściwości", +CheckboxProp : "Właściwości pola wyboru (checkbox)", HiddenFieldProp : "Właściwości pola ukrytego", -RadioButtonProp : "Właściwości pola wyboru", +RadioButtonProp : "Właściwości pola wyboru (radio)", ImageButtonProp : "Właściwości przycisku obrazka", TextFieldProp : "Właściwości pola tekstowego", SelectionFieldProp : "Właściwości listy wyboru", TextareaProp : "Właściwości obszaru tekstowego", FormProp : "Właściwości formularza", -FontFormats : "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6", // Alerts and Messages ProcessingXHTML : "Przetwarzanie XHTML. Proszę czekać...", @@ -146,8 +159,9 @@ UnknownCommand : "Nieznana komenda \"%1\"", NotImplemented : "Komenda niezaimplementowana", UnknownToolbarSet : "Pasek narzędzi \"%1\" nie istnieje", NoActiveX : "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.", -BrowseServerBlocked : "Okno menadżera plików nie może zostać otwarte. Upewnij się, że wszystkie blokady popup są wyłączone.", -DialogBlocked : "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady popup są wyłączone.", +BrowseServerBlocked : "Nie można otworzyć okno menadżera plików. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.", +DialogBlocked : "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady wyskakujących okienek są wyłączone.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -160,7 +174,7 @@ DlgInfoTab : "Informacje", DlgAlertUrl : "Proszę podać URL", // General Dialogs Labels -DlgGenNotSet : "", +DlgGenNotSet : "", DlgGenId : "Id", DlgGenLangDir : "Kierunek tekstu", DlgGenLangDirLtr : "Od lewej do prawej (LTR)", @@ -169,17 +183,17 @@ DlgGenLangCode : "Kod języka", DlgGenAccessKey : "Klawisz dostępu", DlgGenName : "Nazwa", DlgGenTabIndex : "Indeks tabeli", -DlgGenLongDescr : "Long Description URL", -DlgGenClass : "Stylesheet Classes", -DlgGenTitle : "Advisory Title", -DlgGenContType : "Advisory Content Type", -DlgGenLinkCharset : "Linked Resource Charset", +DlgGenLongDescr : "Długi opis hiperłącza", +DlgGenClass : "Nazwa klasy CSS", +DlgGenTitle : "Opis obiektu docelowego", +DlgGenContType : "Typ MIME obiektu docelowego", +DlgGenLinkCharset : "Kodowanie znaków obiektu docelowego", DlgGenStyle : "Styl", // Image Dialog DlgImgTitle : "Właściwości obrazka", DlgImgInfoTab : "Informacje o obrazku", -DlgImgBtnUpload : "Syślij", +DlgImgBtnUpload : "Wyślij", DlgImgURL : "Adres URL", DlgImgUpload : "Wyślij", DlgImgAlt : "Tekst zastępczy", @@ -202,7 +216,7 @@ DlgImgAlignTextTop : "Do góry tekstu", DlgImgAlignTop : "Do góry", DlgImgPreview : "Podgląd", DlgImgAlertUrl : "Podaj adres obrazka.", -DlgImgLinkTab : "Link", +DlgImgLinkTab : "Hiperłącze", // Flash Dialog DlgFlashTitle : "Właściwości elementu Flash", @@ -229,11 +243,11 @@ DlgLnkURL : "Adres URL", DlgLnkAnchorSel : "Wybierz etykietę", DlgLnkAnchorByName : "Wg etykiety", DlgLnkAnchorById : "Wg identyfikatora elementu", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(W dokumencie nie zdefiniowano żadnych etykiet)", DlgLnkEMail : "Adres e-mail", DlgLnkEMailSubject : "Temat", DlgLnkEMailBody : "Treść", -DlgLnkUpload : "Upload", +DlgLnkUpload : "Wyślij", DlgLnkBtnUpload : "Wyślij", DlgLnkTarget : "Cel", @@ -262,7 +276,7 @@ DlgLnkPopTop : "Pozycja w pionie", DlnLnkMsgNoUrl : "Podaj adres URL", DlnLnkMsgNoEMail : "Podaj adres e-mail", DlnLnkMsgNoAnchor : "Wybierz etykietę", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "Nazwa wyskakującego okienka musi zaczynać się od znaku alfanumerycznego i nie może zawierać spacji", // Color Dialog DlgColorTitle : "Wybierz kolor", @@ -322,6 +336,9 @@ DlgCellBackColor : "Kolor tła", DlgCellBorderColor : "Kolor ramki", DlgCellBtnSelect : "Wybierz...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Znajdź i zamień", + // Find Dialog DlgFindTitle : "Znajdź", DlgFindFindBtn : "Znajdź", @@ -344,10 +361,9 @@ PasteAsText : "Wklej jako czysty tekst", PasteFromWord : "Wklej z Worda", DlgPasteMsg2 : "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (Ctrl+V) i kliknąć OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.", DlgPasteIgnoreFont : "Ignoruj definicje 'Font Face'", DlgPasteRemoveStyles : "Usuń definicje Stylów", -DlgPasteCleanBox : "Wyczyść", // Color Picker ColorAutomatic : "Automatycznie", @@ -368,7 +384,7 @@ DlgSpellBtnIgnore : "Ignoruj", DlgSpellBtnIgnoreAll : "Ignoruj wszystkie", DlgSpellBtnReplace : "Zmień", DlgSpellBtnReplaceAll : "Zmień wszystkie", -DlgSpellBtnUndo : "Undo", +DlgSpellBtnUndo : "Cofnij", DlgSpellNoSuggestions : "- Brak sugestii -", DlgSpellProgress : "Trwa sprawdzanie ...", DlgSpellNoMispell : "Sprawdzanie zakończone: nie znaleziono błędów", @@ -381,14 +397,14 @@ IeSpellDownload : "Słownik nie jest zainstalowany. Chcesz go ściągnąć?", // Button Dialog DlgButtonText : "Tekst (Wartość)", DlgButtonType : "Typ", -DlgButtonTypeBtn : "Button", //MISSING -DlgButtonTypeSbm : "Submit", //MISSING -DlgButtonTypeRst : "Reset", //MISSING +DlgButtonTypeBtn : "Przycisk", +DlgButtonTypeSbm : "Wyślij", +DlgButtonTypeRst : "Wyzeruj", // Checkbox and Radio Button Dialogs DlgCheckboxName : "Nazwa", DlgCheckboxValue : "Wartość", -DlgCheckboxSelected : "Zaznaczony", +DlgCheckboxSelected : "Zaznaczone", // Form Dialog DlgFormName : "Nazwa", @@ -432,7 +448,7 @@ DlgHiddenValue : "Wartość", // Bulleted List Dialog BulletedListProp : "Właściwości listy punktowanej", NumberedListProp : "Właściwości listy numerowanej", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Początek", DlgLstType : "Typ", DlgLstTypeCircle : "Koło", DlgLstTypeDisc : "Dysk", @@ -455,18 +471,18 @@ DlgDocLangDirLTR : "Od lewej do prawej (LTR)", DlgDocLangDirRTL : "Od prawej do lewej (RTL)", DlgDocLangCode : "Kod języka", DlgDocCharSet : "Kodowanie znaków", -DlgDocCharSetCE : "Central European", //MISSING -DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING -DlgDocCharSetCR : "Cyrillic", //MISSING -DlgDocCharSetGR : "Greek", //MISSING -DlgDocCharSetJP : "Japanese", //MISSING -DlgDocCharSetKR : "Korean", //MISSING -DlgDocCharSetTR : "Turkish", //MISSING -DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING -DlgDocCharSetWE : "Western European", //MISSING +DlgDocCharSetCE : "Środkowoeuropejskie", +DlgDocCharSetCT : "Chińskie tradycyjne (Big5)", +DlgDocCharSetCR : "Cyrylica", +DlgDocCharSetGR : "Greckie", +DlgDocCharSetJP : "Japońskie", +DlgDocCharSetKR : "Koreańskie", +DlgDocCharSetTR : "Tureckie", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Zachodnioeuropejskie", DlgDocCharSetOther : "Inne kodowanie znaków", -DlgDocDocType : "Nagłowek typu dokumentu", +DlgDocDocType : "Nagłówek typu dokumentu", DlgDocDocTypeOther : "Inny typ dokumentu", DlgDocIncXHTML : "Dołącz deklarację XHTML", DlgDocBgColor : "Kolor tła", @@ -484,7 +500,7 @@ DlgDocMaBottom : "Dolny", DlgDocMeIndex : "Słowa kluczowe (oddzielone przecinkami)", DlgDocMeDescr : "Opis dokumentu", DlgDocMeAuthor : "Autor", -DlgDocMeCopy : "Copyright", +DlgDocMeCopy : "Prawa autorskie", DlgDocPreview : "Podgląd", // Templates Dialog @@ -493,12 +509,18 @@ DlgTemplatesTitle : "Szablony zawartości", DlgTemplatesSelMsg : "Wybierz szablon do otwarcia w edytorze
    (obecna zawartość okna edytora zostanie utracona):", DlgTemplatesLoading : "Ładowanie listy szablonów. Proszę czekać...", DlgTemplatesNoTpl : "(Brak zdefiniowanych szablonów)", -DlgTemplatesReplace : "Replace actual contents", //MISSING +DlgTemplatesReplace : "Zastąp aktualną zawartość", // About Dialog DlgAboutAboutTab : "O ...", DlgAboutBrowserInfoTab : "O przeglądarce", DlgAboutLicenseTab : "Licencja", DlgAboutVersion : "wersja", -DlgAboutInfo : "Więcej informacji uzyskasz pod adresem" -}; \ No newline at end of file +DlgAboutInfo : "Więcej informacji uzyskasz pod adresem", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/pt-br.js b/static/contrib/fckeditor-2.6.3/editor/lang/pt-br.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/pt-br.js rename to static/contrib/fckeditor-2.6.3/editor/lang/pt-br.js index 53a2b5d..8b13811 --- a/static/fckeditor/editor/lang/pt-br.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/pt-br.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Remover Formatação", InsertLinkLbl : "Hiperlink", InsertLink : "Inserir/Editar Hiperlink", RemoveLink : "Remover Hiperlink", +VisitLink : "Open Link", //MISSING Anchor : "Inserir/Editar Âncora", +AnchorDelete : "Remover Âncora", InsertImageLbl : "Figura", InsertImage : "Inserir/Editar Figura", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Alinhar Direita", BlockJustify : "Justificado", DecreaseIndent : "Diminuir Recuo", IncreaseIndent : "Aumentar Recuo", +Blockquote : "Recuo", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Desfazer", Redo : "Refazer", NumberedListLbl : "Numeração", @@ -103,20 +109,27 @@ SelectionField : "Caixa de Listagem", ImageButton : "Botão de Imagem", FitWindow : "Maximizar o tamanho do editor", +ShowBlocks : "Mostrar blocos", // Context Menu EditLink : "Editar Hiperlink", CellCM : "Célula", RowCM : "Linha", ColumnCM : "Coluna", -InsertRow : "Inserir Linha", +InsertRowAfter : "Inserir linha abaixo", +InsertRowBefore : "Inserir linha acima", DeleteRows : "Remover Linhas", -InsertColumn : "Inserir Coluna", +InsertColumnAfter : "Inserir coluna à direita", +InsertColumnBefore : "Inserir coluna à esquerda", DeleteColumns : "Remover Colunas", -InsertCell : "Inserir Células", +InsertCellAfter : "Inserir célula à direita", +InsertCellBefore : "Inserir célula à esquerda", DeleteCells : "Remover Células", MergeCells : "Mesclar Células", -SplitCell : "Dividir Célular", +MergeRight : "Mesclar com célula à direita", +MergeDown : "Mesclar com célula abaixo", +HorizontalSplitCell : "Dividir célula horizontalmente", +VerticalSplitCell : "Dividir célula verticalmente", TableDelete : "Apagar Tabela", CellProperties : "Formatar Célula", TableProperties : "Formatar Tabela", @@ -134,7 +147,7 @@ SelectionFieldProp : "Formatar Caixa de Listagem", TextareaProp : "Formatar Área de Texto", FormProp : "Formatar Formulário", -FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6", // Alerts and Messages ProcessingXHTML : "Processando XHTML. Por favor, aguarde...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "A barra de ferramentas \"%1\" não existe", NoActiveX : "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.", BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.", DialogBlocked : "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL do hiperlink", DlgLnkAnchorSel : "Selecione uma âncora", DlgLnkAnchorByName : "Pelo Nome da âncora", DlgLnkAnchorById : "Pelo Id do Elemento", -DlgLnkNoAnchors : "(Não há âncoras disponíveis neste documento)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Não há âncoras disponíveis neste documento)", DlgLnkEMail : "Endereço E-Mail", DlgLnkEMailSubject : "Assunto da Mensagem", DlgLnkEMailBody : "Corpo da Mensagem", @@ -322,6 +336,9 @@ DlgCellBackColor : "Cor do Plano de Fundo", DlgCellBorderColor : "Cor da Borda", DlgCellBtnSelect : "Selecionar...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Localizar e Substituir", + // Find Dialog DlgFindTitle : "Localizar...", DlgFindFindBtn : "Localizar", @@ -344,10 +361,9 @@ PasteAsText : "Colar como Texto sem Formatação", PasteFromWord : "Colar do Word", DlgPasteMsg2 : "Transfira o link usado no box usando o teclado com (Ctrl+V) e OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo novamente nesta janela.", DlgPasteIgnoreFont : "Ignorar definições de fonte", DlgPasteRemoveStyles : "Remove definições de estilo", -DlgPasteCleanBox : "Limpar Box", // Color Picker ColorAutomatic : "Automático", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Sobre", DlgAboutBrowserInfoTab : "Informações do Navegador", DlgAboutLicenseTab : "Licença", DlgAboutVersion : "versão", -DlgAboutInfo : "Para maiores informações visite" -}; \ No newline at end of file +DlgAboutInfo : "Para maiores informações visite", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/pt.js b/static/contrib/fckeditor-2.6.3/editor/lang/pt.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/pt.js rename to static/contrib/fckeditor-2.6.3/editor/lang/pt.js index 23bab35..e709614 --- a/static/fckeditor/editor/lang/pt.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/pt.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Eliminar Formato", InsertLinkLbl : "Hiperligação", InsertLink : "Inserir/Editar Hiperligação", RemoveLink : "Eliminar Hiperligação", +VisitLink : "Open Link", //MISSING Anchor : " Inserir/Editar Âncora", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Imagem", InsertImage : "Inserir/Editar Imagem", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Alinhar à Direita", BlockJustify : "Justificado", DecreaseIndent : "Diminuir Avanço", IncreaseIndent : "Aumentar Avanço", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Anular", Redo : "Repetir", NumberedListLbl : "Numeração", @@ -103,20 +109,27 @@ SelectionField : "Caixa de Combinação", ImageButton : "Botão de Imagem", FitWindow : "Maximizar o tamanho do editor", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Editar Hiperligação", CellCM : "Célula", RowCM : "Linha", ColumnCM : "Coluna", -InsertRow : "Inserir Linha", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Eliminar Linhas", -InsertColumn : "Inserir Coluna", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Eliminar Coluna", -InsertCell : "Inserir Célula", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Eliminar Célula", MergeCells : "Unir Células", -SplitCell : "Dividir Célula", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Eliminar Tabela", CellProperties : "Propriedades da Célula", TableProperties : "Propriedades da Tabela", @@ -134,7 +147,7 @@ SelectionFieldProp : "Propriedades da Caixa de Combinação", TextareaProp : "Propriedades da Área de Texto", FormProp : "Propriedades do Formulário", -FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatado;Endereço;Título 1;Título 2;Título 3;Título 4;Título 5;Título 6", // Alerts and Messages ProcessingXHTML : "A Processar XHTML. Por favor, espere...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Nome de barra \"%1\" não definido", NoActiveX : "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.", BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.", DialogBlocked : "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Seleccionar una referência", DlgLnkAnchorByName : "Por Nome de Referência", DlgLnkAnchorById : "Por ID de elemento", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Não há referências disponíveis no documento)", DlgLnkEMail : "Endereço de E-Mail", DlgLnkEMailSubject : "Título de Mensagem", DlgLnkEMailBody : "Corpo da Mensagem", @@ -322,6 +336,9 @@ DlgCellBackColor : "Cor do Fundo", DlgCellBorderColor : "Cor do Limite", DlgCellBtnSelect : "Seleccione...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Procurar", DlgFindFindBtn : "Procurar", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Por favor, cole dentro da seguinte caixa usando o teclado (", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nicio ancoră disponibilă în document)", DlgLnkEMail : "Adresă de e-mail", DlgLnkEMailSubject : "Subiectul mesajului", DlgLnkEMailBody : "Conţinutul mesajului", @@ -322,6 +336,9 @@ DlgCellBackColor : "Culoarea fundalului", DlgCellBorderColor : "Culoarea marginii", DlgCellBtnSelect : "Selectaţi...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Găseşte şi înlocuieşte", + // Find Dialog DlgFindTitle : "Găseşte", DlgFindFindBtn : "Găseşte", @@ -344,10 +361,9 @@ PasteAsText : "Adaugă ca text simplu (Plain Text)", PasteFromWord : "Adaugă din Word", DlgPasteMsg2 : "Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl+V) şi apăsaţi OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.", DlgPasteIgnoreFont : "Ignoră definiţiile Font Face", DlgPasteRemoveStyles : "Şterge definiţiile stilurilor", -DlgPasteCleanBox : "Şterge căsuţa", // Color Picker ColorAutomatic : "Automatic", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Despre", DlgAboutBrowserInfoTab : "Informaţii browser", DlgAboutLicenseTab : "Licenţă", DlgAboutVersion : "versiune", -DlgAboutInfo : "Pentru informaţii amănunţite, vizitaţi" -}; \ No newline at end of file +DlgAboutInfo : "Pentru informaţii amănunţite, vizitaţi", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/ru.js b/static/contrib/fckeditor-2.6.3/editor/lang/ru.js old mode 100644 new mode 100755 similarity index 84% rename from static/fckeditor/editor/lang/ru.js rename to static/contrib/fckeditor-2.6.3/editor/lang/ru.js index fdf151b..bfdacff --- a/static/fckeditor/editor/lang/ru.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/ru.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Убрать форматирование", InsertLinkLbl : "Ссылка", InsertLink : "Вставить/Редактировать ссылку", RemoveLink : "Убрать ссылку", +VisitLink : "Open Link", //MISSING Anchor : "Вставить/Редактировать якорь", +AnchorDelete : "Убрать якорь", InsertImageLbl : "Изображение", InsertImage : "Вставить/Редактировать изображение", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "По правому краю", BlockJustify : "По ширине", DecreaseIndent : "Уменьшить отступ", IncreaseIndent : "Увеличить отступ", +Blockquote : "Цитата", +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Отменить", Redo : "Повторить", NumberedListLbl : "Нумерованный список", @@ -103,20 +109,27 @@ SelectionField : "Список", ImageButton : "Кнопка с изображением", FitWindow : "Развернуть окно редактора", +ShowBlocks : "Показать блоки", // Context Menu EditLink : "Вставить ссылку", CellCM : "Ячейка", RowCM : "Строка", ColumnCM : "Колонка", -InsertRow : "Вставить строку", +InsertRowAfter : "Вставить строку после", +InsertRowBefore : "Вставить строку до", DeleteRows : "Удалить строки", -InsertColumn : "Вставить колонку", +InsertColumnAfter : "Вставить колонку после", +InsertColumnBefore : "Вставить колонку до", DeleteColumns : "Удалить колонки", -InsertCell : "Вставить ячейку", +InsertCellAfter : "Вставить ячейку после", +InsertCellBefore : "Вставить ячейку до", DeleteCells : "Удалить ячейки", MergeCells : "Соединить ячейки", -SplitCell : "Разбить ячейку", +MergeRight : "Соединить вправо", +MergeDown : "Соединить вниз", +HorizontalSplitCell : "Разбить ячейку горизонтально", +VerticalSplitCell : "Разбить ячейку вертикально", TableDelete : "Удалить таблицу", CellProperties : "Свойства ячейки", TableProperties : "Свойства таблицы", @@ -134,10 +147,10 @@ SelectionFieldProp : "Свойства списка", TextareaProp : "Свойства текстовой области", FormProp : "Свойства формы", -FontFormats : "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальный (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальный (DIV)", // Alerts and Messages -ProcessingXHTML : "Обработка XHTML. Пожалуйста подождите...", +ProcessingXHTML : "Обработка XHTML. Пожалуйста, подождите...", Done : "Сделано", PasteWordConfirm : "Текст, который вы хотите вставить, похож на копируемый из Word. Вы хотите очистить его перед вставкой?", NotCompatiblePaste : "Эта команда доступна для Internet Explorer версии 5.5 или выше. Вы хотите вставить без очистки?", @@ -147,7 +160,8 @@ NotImplemented : "Команда не реализована", UnknownToolbarSet : "Панель инструментов \"%1\" не существует", NoActiveX : "Настройки безопасности вашего браузера могут ограничивать некоторые свойства редактора. Вы должны включить опцию \"Запускать элементы управления ActiveX и плугины\". Вы можете видеть ошибки и замечать отсутствие возможностей.", BrowseServerBlocked : "Ресурсы браузера не могут быть открыты. Проверьте что блокировки всплывающих окон выключены.", -DialogBlocked : "Не возможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.", +DialogBlocked : "Невозможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "ОК", @@ -157,7 +171,7 @@ DlgBtnBrowseServer : "Просмотреть на сервере", DlgAdvancedTag : "Расширенный", DlgOpOther : "<Другое>", DlgInfoTab : "Информация", -DlgAlertUrl : "Пожалуйста вставьте URL", +DlgAlertUrl : "Пожалуйста, вставьте URL", // General Dialogs Labels DlgGenNotSet : "<не определено>", @@ -201,7 +215,7 @@ DlgImgAlignRight : "По правому краю", DlgImgAlignTextTop : "Текст наверху", DlgImgAlignTop : "По верху", DlgImgPreview : "Предварительный просмотр", -DlgImgAlertUrl : "Пожалуйста введите URL изображения", +DlgImgAlertUrl : "Пожалуйста, введите URL изображения", DlgImgLinkTab : "Ссылка", // Flash Dialog @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Выберите якорь", DlgLnkAnchorByName : "По имени якоря", DlgLnkAnchorById : "По идентификатору элемента", -DlgLnkNoAnchors : "<Нет якорей доступных в этом документе>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Нет якорей доступных в этом документе)", DlgLnkEMail : "Адрес эл. почты", DlgLnkEMailSubject : "Заголовок сообщения", DlgLnkEMailBody : "Тело сообщения", @@ -259,9 +273,9 @@ DlgLnkPopHeight : "Высота", DlgLnkPopLeft : "Позиция слева", DlgLnkPopTop : "Позиция сверху", -DlnLnkMsgNoUrl : "Пожалуйста введите URL ссылки", -DlnLnkMsgNoEMail : "Пожалуйста введите адрес эл. почты", -DlnLnkMsgNoAnchor : "Пожалуйста выберете якорь", +DlnLnkMsgNoUrl : "Пожалуйста, введите URL ссылки", +DlnLnkMsgNoEMail : "Пожалуйста, введите адрес эл. почты", +DlnLnkMsgNoAnchor : "Пожалуйста, выберете якорь", DlnLnkMsgInvPopName : "Название вспывающего окна должно начинаться буквы и не может содержать пробелов", // Color Dialog @@ -322,6 +336,9 @@ DlgCellBackColor : "Цвет фона", DlgCellBorderColor : "Цвет бордюра", DlgCellBtnSelect : "Выберите...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Найти и заменить", + // Find Dialog DlgFindTitle : "Найти", DlgFindFindBtn : "Найти", @@ -337,17 +354,16 @@ DlgReplaceReplAllBtn : "Заменить все", DlgReplaceWordChk : "Совпадение целых слов", // Paste Operations / Dialog -PasteErrorCut : "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста используйте клавиатуру для этого (Ctrl+X).", -PasteErrorCopy : "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста используйте клавиатуру для этого (Ctrl+C).", +PasteErrorCut : "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).", +PasteErrorCopy : "Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).", PasteAsText : "Вставить только текст", PasteFromWord : "Вставить из Word", -DlgPasteMsg2 : "Пожалуйста вставьте текст в прямоугольник используя сочетание клавиш (Ctrl+V) и нажмите OK.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteMsg2 : "Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (Ctrl+V), и нажмите OK.", +DlgPasteSec : "По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.", DlgPasteIgnoreFont : "Игнорировать определения гарнитуры", DlgPasteRemoveStyles : "Убрать определения стилей", -DlgPasteCleanBox : "Очистить", // Color Picker ColorAutomatic : "Автоматический", @@ -359,7 +375,7 @@ DocProps : "Свойства документа", // Anchor Dialog DlgAnchorTitle : "Свойства якоря", DlgAnchorName : "Имя якоря", -DlgAnchorErrorName : "Пожалуйста введите имя якоря", +DlgAnchorErrorName : "Пожалуйста, введите имя якоря", // Speller Pages Dialog DlgSpellNotInDic : "Нет в словаре", @@ -451,8 +467,8 @@ DlgDocMetaTab : "Мета данные", DlgDocPageTitle : "Заголовок страницы", DlgDocLangDir : "Направление текста", -DlgDocLangDirLTR : "Слева на право (LTR)", -DlgDocLangDirRTL : "Справа на лево (RTL)", +DlgDocLangDirLTR : "Слева направо (LTR)", +DlgDocLangDirRTL : "Справа налево (RTL)", DlgDocLangCode : "Код языка", DlgDocCharSet : "Кодировка набора символов", DlgDocCharSetCE : "Центрально-европейская", @@ -490,8 +506,8 @@ DlgDocPreview : "Предварительный просмотр", // Templates Dialog Templates : "Шаблоны", DlgTemplatesTitle : "Шаблоны содержимого", -DlgTemplatesSelMsg : "Пожалуйста выберете шаблон для открытия в редакторе
    (текущее содержимое будет потеряно):", -DlgTemplatesLoading : "Загрузка списка шаблонов. Пожалуйста подождите...", +DlgTemplatesSelMsg : "Пожалуйста, выберете шаблон для открытия в редакторе
    (текущее содержимое будет потеряно):", +DlgTemplatesLoading : "Загрузка списка шаблонов. Пожалуйста, подождите...", DlgTemplatesNoTpl : "(Ни одного шаблона не определено)", DlgTemplatesReplace : "Заменить текущее содержание", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "О программе", DlgAboutBrowserInfoTab : "Информация браузера", DlgAboutLicenseTab : "Лицензия", DlgAboutVersion : "Версия", -DlgAboutInfo : "Для большей информации, посетите" -}; \ No newline at end of file +DlgAboutInfo : "Для большей информации, посетите", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/sk.js b/static/contrib/fckeditor-2.6.3/editor/lang/sk.js old mode 100644 new mode 100755 similarity index 90% rename from static/fckeditor/editor/lang/sk.js rename to static/contrib/fckeditor-2.6.3/editor/lang/sk.js index 83d00ba..8d2940e --- a/static/fckeditor/editor/lang/sk.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/sk.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Odstrániť formátovanie", InsertLinkLbl : "Odkaz", InsertLink : "Vložiť/zmeniť odkaz", RemoveLink : "Odstrániť odkaz", +VisitLink : "Open Link", //MISSING Anchor : "Vložiť/zmeniť kotvu", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Obrázok", InsertImage : "Vložiť/zmeniť obrázok", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Zarovnať vpravo", BlockJustify : "Zarovnať do bloku", DecreaseIndent : "Zmenšiť odsadenie", IncreaseIndent : "Zväčšiť odsadenie", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Späť", Redo : "Znovu", NumberedListLbl : "Číslovanie", @@ -103,20 +109,27 @@ SelectionField : "Rozbaľovací zoznam", ImageButton : "Obrázkové tlačidlo", FitWindow : "Maximalizovať veľkosť okna editora", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Zmeniť odkaz", CellCM : "Bunka", RowCM : "Riadok", ColumnCM : "Stĺpec", -InsertRow : "Vložiť riadok", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Vymazať riadok", -InsertColumn : "Vložiť stĺpec", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Zmazať stĺpec", -InsertCell : "Vložiť bunku", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Vymazať bunky", MergeCells : "Zlúčiť bunky", -SplitCell : "Rozdeliť bunku", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Vymazať tabuľku", CellProperties : "Vlastnosti bunky", TableProperties : "Vlastnosti tabuľky", @@ -134,7 +147,7 @@ SelectionFieldProp : "Vlastnosti rozbaľovacieho zoznamu", TextareaProp : "Vlastnosti textovej oblasti", FormProp : "Vlastnosti formulára", -FontFormats : "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)", // Alerts and Messages ProcessingXHTML : "Prebieha spracovanie XHTML. Čakajte prosím...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Panel nástrojov \"%1\" neexistuje", NoActiveX : "Bezpečnostné nastavenia vášho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.", BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.", DialogBlocked : "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Vybrať kotvu", DlgLnkAnchorByName : "Podľa mena kotvy", DlgLnkAnchorById : "Podľa Id objektu", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(V stránke nie je definovaná žiadna kotva)", DlgLnkEMail : "E-Mailová adresa", DlgLnkEMailSubject : "Predmet správy", DlgLnkEMailBody : "Telo správy", @@ -322,6 +336,9 @@ DlgCellBackColor : "Farba pozadia", DlgCellBorderColor : "Farba ohraničenia", DlgCellBtnSelect : "Výber...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Hľadať", DlgFindFindBtn : "Hľadať", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Prosím vložte nasledovný rámček použitím klávesnice (", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(V tem dokumentu ni zaznamkov)", DlgLnkEMail : "Elektronski naslov", DlgLnkEMailSubject : "Predmet sporočila", DlgLnkEMailBody : "Vsebina sporočila", @@ -262,7 +276,7 @@ DlgLnkPopTop : "Lega na vrhu", DlnLnkMsgNoUrl : "Vnesite URL povezave", DlnLnkMsgNoEMail : "Vnesite elektronski naslov", DlnLnkMsgNoAnchor : "Izberite zaznamek", -DlnLnkMsgInvPopName : "The popup name must begin with an alphabetic character and must not contain spaces", //MISSING +DlnLnkMsgInvPopName : "Ime pojavnega okna se mora začeti s črko ali številko in ne sme vsebovati presledkov", // Color Dialog DlgColorTitle : "Izberite barvo", @@ -322,6 +336,9 @@ DlgCellBackColor : "Barva ozadja", DlgCellBorderColor : "Barva obrobe", DlgCellBtnSelect : "Izberi...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Najdi in zamenjaj", + // Find Dialog DlgFindTitle : "Najdi", DlgFindFindBtn : "Najdi", @@ -344,10 +361,9 @@ PasteAsText : "Prilepi kot golo besedilo", PasteFromWord : "Prilepi iz Worda", DlgPasteMsg2 : "Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl+V) in pritisnite V redu.", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.", DlgPasteIgnoreFont : "Prezri obliko pisave", DlgPasteRemoveStyles : "Odstrani nastavitve stila", -DlgPasteCleanBox : "Počisti okvir", // Color Picker ColorAutomatic : "Samodejno", @@ -381,9 +397,9 @@ IeSpellDownload : "Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?", // Button Dialog DlgButtonText : "Besedilo (Vrednost)", DlgButtonType : "Tip", -DlgButtonTypeBtn : "Button", //MISSING -DlgButtonTypeSbm : "Submit", //MISSING -DlgButtonTypeRst : "Reset", //MISSING +DlgButtonTypeBtn : "Gumb", +DlgButtonTypeSbm : "Potrdi", +DlgButtonTypeRst : "Ponastavi", // Checkbox and Radio Button Dialogs DlgCheckboxName : "Ime", @@ -432,7 +448,7 @@ DlgHiddenValue : "Vrednost", // Bulleted List Dialog BulletedListProp : "Lastnosti označenega seznama", NumberedListProp : "Lastnosti oštevilčenega seznama", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Začetek", DlgLstType : "Tip", DlgLstTypeCircle : "Pikica", DlgLstTypeDisc : "Kroglica", @@ -455,15 +471,15 @@ DlgDocLangDirLTR : "Od leve proti desni (LTR)", DlgDocLangDirRTL : "Od desne proti levi (RTL)", DlgDocLangCode : "Oznaka jezika", DlgDocCharSet : "Kodna tabela", -DlgDocCharSetCE : "Central European", //MISSING -DlgDocCharSetCT : "Chinese Traditional (Big5)", //MISSING -DlgDocCharSetCR : "Cyrillic", //MISSING -DlgDocCharSetGR : "Greek", //MISSING -DlgDocCharSetJP : "Japanese", //MISSING -DlgDocCharSetKR : "Korean", //MISSING -DlgDocCharSetTR : "Turkish", //MISSING -DlgDocCharSetUN : "Unicode (UTF-8)", //MISSING -DlgDocCharSetWE : "Western European", //MISSING +DlgDocCharSetCE : "Srednjeevropsko", +DlgDocCharSetCT : "Tradicionalno Kitajsko (Big5)", +DlgDocCharSetCR : "Cirilica", +DlgDocCharSetGR : "Grško", +DlgDocCharSetJP : "Japonsko", +DlgDocCharSetKR : "Korejsko", +DlgDocCharSetTR : "Turško", +DlgDocCharSetUN : "Unicode (UTF-8)", +DlgDocCharSetWE : "Zahodnoevropsko", DlgDocCharSetOther : "Druga kodna tabela", DlgDocDocType : "Glava tipa dokumenta", @@ -493,12 +509,18 @@ DlgTemplatesTitle : "Vsebinske predloge", DlgTemplatesSelMsg : "Izberite predlogo, ki jo želite odpreti v urejevalniku
    (trenutna vsebina bo izgubljena):", DlgTemplatesLoading : "Nalagam seznam predlog. Prosim počakajte...", DlgTemplatesNoTpl : "(Ni pripravljenih predlog)", -DlgTemplatesReplace : "Replace actual contents", //MISSING +DlgTemplatesReplace : "Zamenjaj trenutno vsebino", // About Dialog DlgAboutAboutTab : "Vizitka", DlgAboutBrowserInfoTab : "Informacije o brskalniku", -DlgAboutLicenseTab : "License", //MISSING +DlgAboutLicenseTab : "Dovoljenja", DlgAboutVersion : "različica", -DlgAboutInfo : "Za več informacij obiščite" -}; \ No newline at end of file +DlgAboutInfo : "Za več informacij obiščite", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/sr-latn.js b/static/contrib/fckeditor-2.6.3/editor/lang/sr-latn.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/sr-latn.js rename to static/contrib/fckeditor-2.6.3/editor/lang/sr-latn.js index 5fa8154..a5ccb9e --- a/static/fckeditor/editor/lang/sr-latn.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/sr-latn.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Ukloni formatiranje", InsertLinkLbl : "Link", InsertLink : "Unesi/izmeni link", RemoveLink : "Ukloni link", +VisitLink : "Open Link", //MISSING Anchor : "Unesi/izmeni sidro", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Slika", InsertImage : "Unesi/izmeni sliku", InsertFlashLbl : "Fleš", @@ -70,6 +72,10 @@ RightJustify : "Desno ravnanje", BlockJustify : "Obostrano ravnanje", DecreaseIndent : "Smanji levu marginu", IncreaseIndent : "Uvećaj levu marginu", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Poni�ti akciju", Redo : "Ponovi akciju", NumberedListLbl : "Nabrojiva lista", @@ -103,20 +109,27 @@ SelectionField : "Izborno polje", ImageButton : "Dugme sa slikom", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Izmeni link", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Unesi red", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Obriši redove", -InsertColumn : "Unesi kolonu", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Obriši kolone", -InsertCell : "Unesi ćelije", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Obriši ćelije", MergeCells : "Spoj celije", -SplitCell : "Razdvoji celije", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Delete Table", //MISSING CellProperties : "Osobine celije", TableProperties : "Osobine tabele", @@ -134,7 +147,7 @@ SelectionFieldProp : "Osobine izbornog polja", TextareaProp : "Osobine zone teksta", FormProp : "Osobine forme", -FontFormats : "Normal;Formatirano;Adresa;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatirano;Adresa;Naslov 1;Naslov 2;Naslov 3;Naslov 4;Naslov 5;Naslov 6", // Alerts and Messages ProcessingXHTML : "Obradujem XHTML. Malo strpljenja...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar \"%1\" ne postoji", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Odaberi sidro", DlgLnkAnchorByName : "Po nazivu sidra", DlgLnkAnchorById : "Po Id-ju elementa", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Nema dostupnih sidra)", DlgLnkEMail : "E-Mail adresa", DlgLnkEMailSubject : "Naslov", DlgLnkEMailBody : "Sadržaj poruke", @@ -322,6 +336,9 @@ DlgCellBackColor : "Boja pozadine", DlgCellBorderColor : "Boja okvira", DlgCellBtnSelect : "Odaberi...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Pronađi", DlgFindFindBtn : "Pronađi", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Molimo Vas da zalepite unutar donje povrine koristeći tastaturn DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Ignoriši definicije fontova", DlgPasteRemoveStyles : "Ukloni definicije stilova", -DlgPasteCleanBox : "Obriši sve", // Color Picker ColorAutomatic : "Automatski", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "O editoru", DlgAboutBrowserInfoTab : "Informacije o pretraživacu", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "verzija", -DlgAboutInfo : "Za više informacija posetite" -}; \ No newline at end of file +DlgAboutInfo : "Za više informacija posetite", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/sr.js b/static/contrib/fckeditor-2.6.3/editor/lang/sr.js old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/editor/lang/sr.js rename to static/contrib/fckeditor-2.6.3/editor/lang/sr.js index e7aac23..2aea3d3 --- a/static/fckeditor/editor/lang/sr.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/sr.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Уклони форматирање", InsertLinkLbl : "Линк", InsertLink : "Унеси/измени линк", RemoveLink : "Уклони линк", +VisitLink : "Open Link", //MISSING Anchor : "Унеси/измени сидро", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Слика", InsertImage : "Унеси/измени слику", InsertFlashLbl : "Флеш елемент", @@ -70,6 +72,10 @@ RightJustify : "Десно равнање", BlockJustify : "Обострано равнање", DecreaseIndent : "Смањи леву маргину", IncreaseIndent : "Увећај леву маргину", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Поништи акцију", Redo : "Понови акцију", NumberedListLbl : "Набројиву листу", @@ -103,20 +109,27 @@ SelectionField : "Изборно поље", ImageButton : "Дугме са сликом", FitWindow : "Maximize the editor size", //MISSING +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Промени линк", CellCM : "Cell", //MISSING RowCM : "Row", //MISSING ColumnCM : "Column", //MISSING -InsertRow : "Унеси ред", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Обриши редове", -InsertColumn : "Унеси колону", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Обриши колоне", -InsertCell : "Унеси ћелије", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Обриши ћелије", MergeCells : "Спој ћелије", -SplitCell : "Раздвоји ћелије", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Delete Table", //MISSING CellProperties : "Особине ћелије", TableProperties : "Особине табеле", @@ -134,7 +147,7 @@ SelectionFieldProp : "Особине изборног поља", TextareaProp : "Особине зоне текста", FormProp : "Особине форме", -FontFormats : "Normal;Formatirano;Adresa;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatirano;Adresa;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6", // Alerts and Messages ProcessingXHTML : "Обрађујем XHTML. Maлo стрпљења...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Toolbar \"%1\" не постоји", NoActiveX : "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.", //MISSING BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.", //MISSING DialogBlocked : "It was not possible to open the dialog window. Make sure all popup blockers are disabled.", //MISSING +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "УРЛ", DlgLnkAnchorSel : "Одабери сидро", DlgLnkAnchorByName : "По називу сидра", DlgLnkAnchorById : "Пo Ид-jу елемента", -DlgLnkNoAnchors : "<Нема доступних сидра>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Нема доступних сидра)", DlgLnkEMail : "Адреса електронске поште", DlgLnkEMailSubject : "Наслов", DlgLnkEMailBody : "Садржај поруке", @@ -322,6 +336,9 @@ DlgCellBackColor : "Боја позадине", DlgCellBorderColor : "Боја оквира", DlgCellBtnSelect : "Oдабери...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Пронађи", DlgFindFindBtn : "Пронађи", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Молимо Вас да залепите унутар доње DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Игнориши Font Face дефиниције", DlgPasteRemoveStyles : "Уклони дефиниције стилова", -DlgPasteCleanBox : "Обриши све", // Color Picker ColorAutomatic : "Аутоматски", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "О едитору", DlgAboutBrowserInfoTab : "Информације о претраживачу", DlgAboutLicenseTab : "License", //MISSING DlgAboutVersion : "верзија", -DlgAboutInfo : "За више информација посетите" -}; \ No newline at end of file +DlgAboutInfo : "За више информација посетите", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/sv.js b/static/contrib/fckeditor-2.6.3/editor/lang/sv.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/sv.js rename to static/contrib/fckeditor-2.6.3/editor/lang/sv.js index a301a03..633639d --- a/static/fckeditor/editor/lang/sv.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/sv.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Radera formatering", InsertLinkLbl : "Länk", InsertLink : "Infoga/Redigera länk", RemoveLink : "Radera länk", +VisitLink : "Open Link", //MISSING Anchor : "Infoga/Redigera ankarlänk", +AnchorDelete : "Radera ankarlänk", InsertImageLbl : "Bild", InsertImage : "Infoga/Redigera bild", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Högerjustera", BlockJustify : "Justera till marginaler", DecreaseIndent : "Minska indrag", IncreaseIndent : "Öka indrag", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Ångra", Redo : "Gör om", NumberedListLbl : "Numrerad lista", @@ -103,20 +109,27 @@ SelectionField : "Flervalslista", ImageButton : "Bildknapp", FitWindow : "Anpassa till fönstrets storlek", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Redigera länk", CellCM : "Cell", RowCM : "Rad", ColumnCM : "Kolumn", -InsertRow : "Infoga rad", +InsertRowAfter : "Lägg till Rad Efter", +InsertRowBefore : "Lägg till Rad Före", DeleteRows : "Radera rad", -InsertColumn : "Infoga kolumn", +InsertColumnAfter : "Lägg till Kolumn Efter", +InsertColumnBefore : "Lägg till Kolumn Före", DeleteColumns : "Radera kolumn", -InsertCell : "Infoga cell", +InsertCellAfter : "Lägg till Cell Efter", +InsertCellBefore : "Lägg till Cell Före", DeleteCells : "Radera celler", MergeCells : "Sammanfoga celler", -SplitCell : "Separera celler", +MergeRight : "Sammanfoga Höger", +MergeDown : "Sammanfoga Ner", +HorizontalSplitCell : "Dela Cell Horisontellt", +VerticalSplitCell : "Dela Cell Vertikalt", TableDelete : "Radera tabell", CellProperties : "Cellegenskaper", TableProperties : "Tabellegenskaper", @@ -134,7 +147,7 @@ SelectionFieldProp : "Egenskaper för flervalslista", TextareaProp : "Egenskaper för textruta", FormProp : "Egenskaper för formulär", -FontFormats : "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formaterad;Adress;Rubrik 1;Rubrik 2;Rubrik 3;Rubrik 4;Rubrik 5;Rubrik 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Bearbetar XHTML. Var god vänta...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Verktygsfält \"%1\" finns ej", NoActiveX : "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.", BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.", DialogBlocked : "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "OK", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Välj ett ankare", DlgLnkAnchorByName : "efter ankarnamn", DlgLnkAnchorById : "efter objektid", -DlgLnkNoAnchors : "(Inga ankare kunde hittas)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Inga ankare kunde hittas)", DlgLnkEMail : "E-postadress", DlgLnkEMailSubject : "Ämne", DlgLnkEMailBody : "Innehåll", @@ -322,6 +336,9 @@ DlgCellBackColor : "Bakgrundsfärg", DlgCellBorderColor : "Kantfärg", DlgCellBtnSelect : "Välj...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Sök och ersätt", + // Find Dialog DlgFindTitle : "Sök", DlgFindFindBtn : "Sök", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Var god och klistra in Er text i rutan nedan genom att använda DlgPasteSec : "På grund av din webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.", DlgPasteIgnoreFont : "Ignorera typsnittsdefinitioner", DlgPasteRemoveStyles : "Radera Stildefinitioner", -DlgPasteCleanBox : "Töm rutans innehåll", // Color Picker ColorAutomatic : "Automatisk", @@ -432,7 +448,7 @@ DlgHiddenValue : "Värde", // Bulleted List Dialog BulletedListProp : "Egenskaper för punktlista", NumberedListProp : "Egenskaper för numrerad lista", -DlgLstStart : "Start", //MISSING +DlgLstStart : "Start", DlgLstType : "Typ", DlgLstTypeCircle : "Cirkel", DlgLstTypeDisc : "Punkt", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Om", DlgAboutBrowserInfoTab : "Webläsare", DlgAboutLicenseTab : "Licens", DlgAboutVersion : "version", -DlgAboutInfo : "För mer information se" -}; \ No newline at end of file +DlgAboutInfo : "För mer information se", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/th.js b/static/contrib/fckeditor-2.6.3/editor/lang/th.js old mode 100644 new mode 100755 similarity index 93% rename from static/fckeditor/editor/lang/th.js rename to static/contrib/fckeditor-2.6.3/editor/lang/th.js index 8c4319a..a0f880e --- a/static/fckeditor/editor/lang/th.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/th.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "ล้างรูปแบบ", InsertLinkLbl : "ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ", InsertLink : "แทรก/แก้ไข ลิงค์", RemoveLink : "ลบ ลิงค์", +VisitLink : "Open Link", //MISSING Anchor : "แทรก/แก้ไข Anchor", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "รูปภาพ", InsertImage : "แทรก/แก้ไข รูปภาพ", InsertFlashLbl : "ไฟล์ Flash", @@ -70,6 +72,10 @@ RightJustify : "จัดชิดขวา", BlockJustify : "จัดพอดีหน้ากระดาษ", DecreaseIndent : "ลดระยะย่อหน้า", IncreaseIndent : "เพิ่มระยะย่อหน้า", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "ยกเลิกคำสั่ง", Redo : "ทำซ้ำคำสั่ง", NumberedListLbl : "ลำดับรายการแบบตัวเลข", @@ -103,20 +109,27 @@ SelectionField : "แถบตัวเลือก", ImageButton : "ปุ่มแบบรูปภาพ", FitWindow : "ขยายขนาดตัวอีดิตเตอร์", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "แก้ไข ลิงค์", CellCM : "ช่องตาราง", RowCM : "แถว", ColumnCM : "คอลัมน์", -InsertRow : "แทรกแถว", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "ลบแถว", -InsertColumn : "แทรกสดมน์", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "ลบสดมน์", -InsertCell : "แทรกช่อง", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "ลบช่อง", MergeCells : "ผสานช่อง", -SplitCell : "แยกช่อง", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "ลบตาราง", CellProperties : "คุณสมบัติของช่อง", TableProperties : "คุณสมบัติของตาราง", @@ -134,7 +147,7 @@ SelectionFieldProp : "คุณสมบัติของ แถบตัวเ TextareaProp : "คุณสมบัติของ เท็กแอเรีย", FormProp : "คุณสมบัติของ แบบฟอร์ม", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)", // Alerts and Messages ProcessingXHTML : "โปรแกรมกำลังทำงานด้วยเทคโนโลยี XHTML กรุณารอสักครู่...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "ไม่มีการติดตั้งชุดค NoActiveX : "โปรแกรมท่องอินเตอร์เน็ตของท่านไม่อนุญาติให้อีดิตเตอร์ทำงาน \"Run ActiveX controls and plug-ins\". หากไม่อนุญาติให้ใช้งาน ActiveX controls ท่านจะไม่สามารถใช้งานได้อย่างเต็มประสิทธิภาพ.", BrowseServerBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย", DialogBlocked : "เปิดหน้าต่างป๊อบอัพเพื่อทำงานต่อไม่ได้ กรุณาปิดเครื่องมือป้องกันป๊อบอัพในโปรแกรมท่องอินเตอร์เน็ตของท่านด้วย", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "ตกลง", @@ -229,7 +243,7 @@ DlgLnkURL : "ที่อยู่อ้างอิงออนไลน์ ( DlgLnkAnchorSel : "ระบุข้อมูลของจุดเชื่อมโยง (Anchor)", DlgLnkAnchorByName : "ชื่อ", DlgLnkAnchorById : "ไอดี", -DlgLnkNoAnchors : "(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้)", DlgLnkEMail : "อีเมล์ (E-Mail)", DlgLnkEMailSubject : "หัวเรื่อง", DlgLnkEMailBody : "ข้อความ", @@ -322,6 +336,9 @@ DlgCellBackColor : "สีพื้นหลัง", DlgCellBorderColor : "สีเส้นขอบ", DlgCellBtnSelect : "เลือก..", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "ค้นหา", DlgFindFindBtn : "ค้นหา", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "กรุณาใช้คีย์บอร์ดเท่า DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "ไม่สนใจ Font Face definitions", DlgPasteRemoveStyles : "ลบ Styles definitions", -DlgPasteCleanBox : "ล้างข้อมูลใน Box", // Color Picker ColorAutomatic : "สีอัตโนมัติ", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "เกี่ยวกับโปรแกรม", DlgAboutBrowserInfoTab : "โปรแกรมท่องเว็บที่ท่านใช้", DlgAboutLicenseTab : "ลิขสิทธิ์", DlgAboutVersion : "รุ่น", -DlgAboutInfo : "For further information go to" //MISSING -}; \ No newline at end of file +DlgAboutInfo : "For further information go to", //MISSING + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/tr.js b/static/contrib/fckeditor-2.6.3/editor/lang/tr.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/tr.js rename to static/contrib/fckeditor-2.6.3/editor/lang/tr.js index 53b371e..e7d55f2 --- a/static/fckeditor/editor/lang/tr.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/tr.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Biçimi Kaldır", InsertLinkLbl : "Köprü", InsertLink : "Köprü Ekle/Düzenle", RemoveLink : "Köprü Kaldır", +VisitLink : "Open Link", //MISSING Anchor : "Çapa Ekle/Düzenle", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Resim", InsertImage : "Resim Ekle/Düzenle", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Sağa Dayalı", BlockJustify : "İki Kenara Yaslanmış", DecreaseIndent : "Sekme Azalt", IncreaseIndent : "Sekme Arttır", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Geri Al", Redo : "Tekrarla", NumberedListLbl : "Numaralı Liste", @@ -103,20 +109,27 @@ SelectionField : "Seçim Menüsü", ImageButton : "Resimli Düğme", FitWindow : "Düzenleyici boyutunu büyüt", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Köprü Düzenle", CellCM : "Hücre", RowCM : "Satır", ColumnCM : "Sütun", -InsertRow : "Satır Ekle", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Satır Sil", -InsertColumn : "Sütun Ekle", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Sütun Sil", -InsertCell : "Hücre Ekle", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Hücre Sil", MergeCells : "Hücreleri Birleştir", -SplitCell : "Hücre Böl", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Tabloyu Sil", CellProperties : "Hücre Özellikleri", TableProperties : "Tablo Özellikleri", @@ -134,7 +147,7 @@ SelectionFieldProp : "Seçim Menüsü Özellikleri", TextareaProp : "Çok Satırlı Metin Özellikleri", FormProp : "Form Özellikleri", -FontFormats : "Normal;Biçimli;Adres;Başlık 1;Başlık 2;Başlık 3;Başlık 4;Başlık 5;Başlık 6;Paragraf (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Biçimli;Adres;Başlık 1;Başlık 2;Başlık 3;Başlık 4;Başlık 5;Başlık 6;Paragraf (DIV)", // Alerts and Messages ProcessingXHTML : "XHTML işleniyor. Lütfen bekleyin...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "\"%1\" araç çubuğu öğesi mevcut değil", NoActiveX : "Kullandığınız tarayıcının güvenlik ayarları bazı özelliklerin kullanılmasını engelliyor. Bu özelliklerin çalışması için \"Run ActiveX controls and plug-ins (Activex ve eklentileri çalıştır)\" seçeneğinin aktif yapılması gerekiyor. Kullanılamayan eklentiler ve hatalar konusunda daha fazla bilgi sahibi olun.", BrowseServerBlocked : "Kaynak tarayıcısı açılamadı. Tüm \"popup blocker\" programlarının devre dışı olduğundan emin olun. (Yahoo toolbar, Msn toolbar, Google toolbar gibi)", DialogBlocked : "Diyalog açmak mümkün olmadı. Tüm \"Popup Blocker\" programlarının devre dışı olduğundan emin olun.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "Tamam", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Çapa Seç", DlgLnkAnchorByName : "Çapa Adı ile", DlgLnkAnchorById : "Eleman Kimlik Numarası ile", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Bu belgede hiç çapa yok)", DlgLnkEMail : "E-Posta Adresi", DlgLnkEMailSubject : "İleti Konusu", DlgLnkEMailBody : "İleti Gövdesi", @@ -322,6 +336,9 @@ DlgCellBackColor : "Arka Plan Rengi", DlgCellBorderColor : "Kenar Rengi", DlgCellBtnSelect : "Seç...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Bul", DlgFindFindBtn : "Bul", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Lütfen aşağıdaki kutunun içine yapıştırın. (Ctr DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Yazı Tipi tanımlarını yoksay", DlgPasteRemoveStyles : "Biçem Tanımlarını çıkar", -DlgPasteCleanBox : "Temizlik Kutusu", // Color Picker ColorAutomatic : "Otomatik", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Hakkında", DlgAboutBrowserInfoTab : "Gezgin Bilgisi", DlgAboutLicenseTab : "Lisans", DlgAboutVersion : "sürüm", -DlgAboutInfo : "Daha fazla bilgi için:" -}; \ No newline at end of file +DlgAboutInfo : "Daha fazla bilgi için:", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/uk.js b/static/contrib/fckeditor-2.6.3/editor/lang/uk.js old mode 100644 new mode 100755 similarity index 92% rename from static/fckeditor/editor/lang/uk.js rename to static/contrib/fckeditor-2.6.3/editor/lang/uk.js index 1defaac..683b13d --- a/static/fckeditor/editor/lang/uk.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/uk.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Прибрати форматування", InsertLinkLbl : "Посилання", InsertLink : "Вставити/Редагувати посилання", RemoveLink : "Знищити посилання", +VisitLink : "Open Link", //MISSING Anchor : "Вставити/Редагувати якір", +AnchorDelete : "Remove Anchor", //MISSING InsertImageLbl : "Зображення", InsertImage : "Вставити/Редагувати зображення", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "По правому краю", BlockJustify : "По ширині", DecreaseIndent : "Зменшити відступ", IncreaseIndent : "Збільшити відступ", +Blockquote : "Blockquote", //MISSING +CreateDiv : "Create Div Container", //MISSING +EditDiv : "Edit Div Container", //MISSING +DeleteDiv : "Remove Div Container", //MISSING Undo : "Повернути", Redo : "Повторити", NumberedListLbl : "Нумерований список", @@ -103,20 +109,27 @@ SelectionField : "Список", ImageButton : "Кнопка із зображенням", FitWindow : "Розвернути вікно редактора", +ShowBlocks : "Show Blocks", //MISSING // Context Menu EditLink : "Вставити посилання", CellCM : "Осередок", RowCM : "Рядок", ColumnCM : "Колонка", -InsertRow : "Вставити строку", +InsertRowAfter : "Insert Row After", //MISSING +InsertRowBefore : "Insert Row Before", //MISSING DeleteRows : "Видалити строки", -InsertColumn : "Вставити колонку", +InsertColumnAfter : "Insert Column After", //MISSING +InsertColumnBefore : "Insert Column Before", //MISSING DeleteColumns : "Видалити колонки", -InsertCell : "Вставити комірку", +InsertCellAfter : "Insert Cell After", //MISSING +InsertCellBefore : "Insert Cell Before", //MISSING DeleteCells : "Видалити комірки", MergeCells : "Об'єднати комірки", -SplitCell : "Роз'єднати комірку", +MergeRight : "Merge Right", //MISSING +MergeDown : "Merge Down", //MISSING +HorizontalSplitCell : "Split Cell Horizontally", //MISSING +VerticalSplitCell : "Split Cell Vertically", //MISSING TableDelete : "Видалити таблицю", CellProperties : "Властивості комірки", TableProperties : "Властивості таблиці", @@ -134,7 +147,7 @@ SelectionFieldProp : "Властивості списку", TextareaProp : "Властивості текстової області", FormProp : "Властивості форми", -FontFormats : "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальний (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Нормальний;Форматований;Адреса;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальний (DIV)", // Alerts and Messages ProcessingXHTML : "Обробка XHTML. Зачекайте, будь ласка...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "Панель інструментів \"%1\" не існу NoActiveX : "Настройки безпеки вашого браузера можуть обмежувати деякі властивості редактора. Ви повинні включити опцію \"Запускати елементи управління ACTIVEX і плугіни\". Ви можете бачити помилки і помічати відсутність можливостей.", BrowseServerBlocked : "Ресурси браузера не можуть бути відкриті. Перевірте що блокування спливаючих вікон вимкнені.", DialogBlocked : "Не можливо відкрити вікно діалогу. Перевірте що блокування спливаючих вікон вимкнені.", +VisitLinkBlocked : "It was not possible to open a new window. Make sure all popup blockers are disabled.", //MISSING // Dialogs DlgBtnOK : "ОК", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Оберіть якір", DlgLnkAnchorByName : "За ім'ям якоря", DlgLnkAnchorById : "За ідентифікатором елемента", -DlgLnkNoAnchors : "<Немає якорів доступних в цьому документі>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Немає якорів доступних в цьому документі)", DlgLnkEMail : "Адреса ел. пошти", DlgLnkEMailSubject : "Тема листа", DlgLnkEMailBody : "Тіло повідомлення", @@ -322,6 +336,9 @@ DlgCellBackColor : "Колір фона", DlgCellBorderColor : "Колір бордюра", DlgCellBtnSelect : "Оберіть...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Find and Replace", //MISSING + // Find Dialog DlgFindTitle : "Пошук", DlgFindFindBtn : "Пошук", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Будь-ласка, вставте з буфера обміну DlgPasteSec : "Редактор не може отримати прямий доступ до буферу обміну у зв'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.", DlgPasteIgnoreFont : "Ігнорувати налаштування шрифтів", DlgPasteRemoveStyles : "Видалити налаштування стилів", -DlgPasteCleanBox : "Очистити область", // Color Picker ColorAutomatic : "Автоматичний", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Про програму", DlgAboutBrowserInfoTab : "Інформація браузера", DlgAboutLicenseTab : "Ліцензія", DlgAboutVersion : "Версія", -DlgAboutInfo : "Додаткову інформацію дивіться на " -}; \ No newline at end of file +DlgAboutInfo : "Додаткову інформацію дивіться на ", + +// Div Dialog +DlgDivGeneralTab : "General", //MISSING +DlgDivAdvancedTab : "Advanced", //MISSING +DlgDivStyle : "Style", //MISSING +DlgDivInlineStyle : "Inline Style" //MISSING +}; diff --git a/static/fckeditor/editor/lang/vi.js b/static/contrib/fckeditor-2.6.3/editor/lang/vi.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/vi.js rename to static/contrib/fckeditor-2.6.3/editor/lang/vi.js index 5c2c608..2994056 --- a/static/fckeditor/editor/lang/vi.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/vi.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "Xoá Định dạng", InsertLinkLbl : "Liên kết", InsertLink : "Chèn/Sửa Liên kết", RemoveLink : "Xoá Liên kết", +VisitLink : "Mở Liên Kết", Anchor : "Chèn/Sửa Neo", +AnchorDelete : "Gỡ bỏ Neo", InsertImageLbl : "Hình ảnh", InsertImage : "Chèn/Sửa Hình ảnh", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "Canh phải", BlockJustify : "Canh đều", DecreaseIndent : "Dịch ra ngoài", IncreaseIndent : "Dịch vào trong", +Blockquote : "Khối Trích dẫn", +CreateDiv : "Tạo Div Container", +EditDiv : "Chỉnh sửa Div Container", +DeleteDiv : "Gỡ bỏ Div Container", Undo : "Khôi phục thao tác", Redo : "Làm lại thao tác", NumberedListLbl : "Danh sách có thứ tự", @@ -103,20 +109,27 @@ SelectionField : "Ô chọn", ImageButton : "Nút hình ảnh", FitWindow : "Mở rộng tối đa kích thước trình biên tập", +ShowBlocks : "Hiển thị các Khối", // Context Menu EditLink : "Sửa Liên kết", CellCM : "Ô", RowCM : "Hàng", ColumnCM : "Cột", -InsertRow : "Chèn Hàng", +InsertRowAfter : "Chèn Hàng Phía sau", +InsertRowBefore : "Chèn Hàng Phía trước", DeleteRows : "Xoá Hàng", -InsertColumn : "Chèn Cột", +InsertColumnAfter : "Chèn Cột Phía sau", +InsertColumnBefore : "Chèn Cột Phía trước", DeleteColumns : "Xoá Cột", -InsertCell : "Chèn Ô", +InsertCellAfter : "Chèn Ô Phía sau", +InsertCellBefore : "Chèn Ô Phía trước", DeleteCells : "Xoá Ô", -MergeCells : "Trộn Ô", -SplitCell : "Chia Ô", +MergeCells : "Kết hợp Ô", +MergeRight : "Kết hợp Sang phải", +MergeDown : "Kết hợp Xuống dưới", +HorizontalSplitCell : "Tách ngang Ô", +VerticalSplitCell : "Tách dọc Ô", TableDelete : "Xóa Bảng", CellProperties : "Thuộc tính Ô", TableProperties : "Thuộc tính Bảng", @@ -134,7 +147,7 @@ SelectionFieldProp : "Thuộc tính Ô chọn", TextareaProp : "Thuộc tính Vùng văn bản", FormProp : "Thuộc tính Biểu mẫu", -FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)", // Alerts and Messages ProcessingXHTML : "Đang xử lý XHTML. Vui lòng đợi trong giây lát...", @@ -145,9 +158,10 @@ UnknownToolbarItem : "Không rõ mục trên thanh công cụ \"%1\"", UnknownCommand : "Không rõ lệnh \"%1\"", NotImplemented : "Lệnh không được thực hiện", UnknownToolbarSet : "Thanh công cụ \"%1\" không tồn tại", -NoActiveX : "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu đi một số chức năng.", +NoActiveX : "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu một số chức năng.", BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.", DialogBlocked : "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.", +VisitLinkBlocked : "Không thể mở được cửa sổ trình duyệt mới. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.", // Dialogs DlgBtnOK : "Đồng ý", @@ -185,7 +199,7 @@ DlgImgUpload : "Tải lên", DlgImgAlt : "Chú thích Hình ảnh", DlgImgWidth : "Rộng", DlgImgHeight : "Cao", -DlgImgLockRatio : "Giữ tỷ lệ", +DlgImgLockRatio : "Giữ nguyên tỷ lệ", DlgBtnResetSize : "Kích thước gốc", DlgImgBorder : "Đường viền", DlgImgHSpace : "HSpace", @@ -194,7 +208,7 @@ DlgImgAlign : "Vị trí", DlgImgAlignLeft : "Trái", DlgImgAlignAbsBottom: "Dưới tuyệt đối", DlgImgAlignAbsMiddle: "Giữa tuyệt đối", -DlgImgAlignBaseline : "Baseline", +DlgImgAlignBaseline : "Đường cơ sở", DlgImgAlignBottom : "Dưới", DlgImgAlignMiddle : "Giữa", DlgImgAlignRight : "Phải", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "Chọn một Neo", DlgLnkAnchorByName : "Theo Tên Neo", DlgLnkAnchorById : "Theo Định danh Element", -DlgLnkNoAnchors : "", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(Không có Neo nào trong tài liệu)", DlgLnkEMail : "Thư điện tử", DlgLnkEMailSubject : "Tiêu đề Thông điệp", DlgLnkEMailBody : "Nội dung Thông điệp", @@ -315,13 +329,16 @@ DlgCellVerAlignNotSet : "", DlgCellVerAlignTop : "Trên", DlgCellVerAlignMiddle : "Giữa", DlgCellVerAlignBottom : "Dưới", -DlgCellVerAlignBaseline : "Baseline", +DlgCellVerAlignBaseline : "Đường cơ sở", DlgCellRowSpan : "Nối Hàng", DlgCellCollSpan : "Nối Cột", DlgCellBackColor : "Màu nền", DlgCellBorderColor : "Màu viền", DlgCellBtnSelect : "Chọn...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "Tìm kiếm và Thay Thế", + // Find Dialog DlgFindTitle : "Tìm kiếm", DlgFindFindBtn : "Tìm kiếm", @@ -347,7 +364,6 @@ DlgPasteMsg2 : "Hãy dán nội dung vào trong khung bên dưới, sử dụng DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING DlgPasteIgnoreFont : "Chấp nhận các định dạng phông", DlgPasteRemoveStyles : "Gỡ bỏ các định dạng Styles", -DlgPasteCleanBox : "Xóa nội dung", // Color Picker ColorAutomatic : "Tự động", @@ -359,7 +375,7 @@ DocProps : "Thuộc tính Tài liệu", // Anchor Dialog DlgAnchorTitle : "Thuộc tính Neo", DlgAnchorName : "Tên của Neo", -DlgAnchorErrorName : "Hãy đưa vào tên của Neo", +DlgAnchorErrorName : "Hãy nhập vào tên của Neo", // Speller Pages Dialog DlgSpellNotInDic : "Không có trong từ điển", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "Giới thiệu", DlgAboutBrowserInfoTab : "Thông tin trình duyệt", DlgAboutLicenseTab : "Giấy phép", DlgAboutVersion : "phiên bản", -DlgAboutInfo : "Để biết thêm thông tin, hãy truy cập" -}; \ No newline at end of file +DlgAboutInfo : "Để biết thêm thông tin, hãy truy cập", + +// Div Dialog +DlgDivGeneralTab : "Chung", +DlgDivAdvancedTab : "Nâng cao", +DlgDivStyle : "Kiểu Style", +DlgDivInlineStyle : "Kiểu Style Trực tiếp" +}; diff --git a/static/fckeditor/editor/lang/zh-cn.js b/static/contrib/fckeditor-2.6.3/editor/lang/zh-cn.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/zh-cn.js rename to static/contrib/fckeditor-2.6.3/editor/lang/zh-cn.js index 6d6f4f4..724f9c6 --- a/static/fckeditor/editor/lang/zh-cn.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/zh-cn.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "清除格式", InsertLinkLbl : "超链接", InsertLink : "插入/编辑超链接", RemoveLink : "取消超链接", +VisitLink : "打开超链接", Anchor : "插入/编辑锚点链接", +AnchorDelete : "清除锚点链接", InsertImageLbl : "图象", InsertImage : "插入/编辑图象", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "右对齐", BlockJustify : "两端对齐", DecreaseIndent : "减少缩进量", IncreaseIndent : "增加缩进量", +Blockquote : "块引用", +CreateDiv : "新增 Div 标籤", +EditDiv : "更改 Div 标籤", +DeleteDiv : "删除 Div 标籤", Undo : "撤消", Redo : "重做", NumberedListLbl : "编号列表", @@ -103,20 +109,27 @@ SelectionField : "列表/菜单", ImageButton : "图像域", FitWindow : "全屏编辑", +ShowBlocks : "显示区块", // Context Menu EditLink : "编辑超链接", CellCM : "单元格", RowCM : "行", ColumnCM : "列", -InsertRow : "插入行", +InsertRowAfter : "下插入行", +InsertRowBefore : "上插入行", DeleteRows : "删除行", -InsertColumn : "插入列", +InsertColumnAfter : "右插入列", +InsertColumnBefore : "左插入列", DeleteColumns : "删除列", -InsertCell : "插入单元格", +InsertCellAfter : "右插入单元格", +InsertCellBefore : "左插入单元格", DeleteCells : "删除单元格", MergeCells : "合并单元格", -SplitCell : "拆分单元格", +MergeRight : "右合并单元格", +MergeDown : "下合并单元格", +HorizontalSplitCell : "橫拆分单元格", +VerticalSplitCell : "縱拆分单元格", TableDelete : "删除表格", CellProperties : "单元格属性", TableProperties : "表格属性", @@ -134,7 +147,7 @@ SelectionFieldProp : "菜单/列表属性", TextareaProp : "多行文本属性", FormProp : "表单属性", -FontFormats : "普通;已编排格式;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "普通;已编排格式;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)", // Alerts and Messages ProcessingXHTML : "正在处理 XHTML,请稍等...", @@ -148,6 +161,7 @@ UnknownToolbarSet : "工具栏设置 \"%1\" 不存在", NoActiveX : "浏览器安全设置限制了本编辑器的某些功能。您必须启用安全设置中的“运行 ActiveX 控件和插件”,否则将出现某些错误并缺少功能。", BrowseServerBlocked : "无法打开资源浏览器,请确认是否启用了禁止弹出窗口。", DialogBlocked : "无法打开对话框窗口,请确认是否启用了禁止弹出窗口或网页对话框(IE)。", +VisitLinkBlocked : "无法打开新窗口,请确认是否启用了禁止弹出窗口或网页对话框(IE)。", // Dialogs DlgBtnOK : "确定", @@ -229,7 +243,7 @@ DlgLnkURL : "地址", DlgLnkAnchorSel : "选择一个锚点", DlgLnkAnchorByName : "按锚点名称", DlgLnkAnchorById : "按锚点 ID", -DlgLnkNoAnchors : "<此文档没有可用的锚点>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(此文档没有可用的锚点)", DlgLnkEMail : "地址", DlgLnkEMailSubject : "主题", DlgLnkEMailBody : "内容", @@ -322,6 +336,9 @@ DlgCellBackColor : "背景颜色", DlgCellBorderColor : "边框颜色", DlgCellBtnSelect : "选择...", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "查找和替换", + // Find Dialog DlgFindTitle : "查找", DlgFindFindBtn : "查找", @@ -344,10 +361,9 @@ PasteAsText : "粘贴为无格式文本", PasteFromWord : "从 MS Word 粘贴", DlgPasteMsg2 : "请使用键盘快捷键(Ctrl+V)把内容粘贴到下面的方框里,再按 确定。", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "因为你的浏览器的安全设置原因,本编辑器不能直接访问你的剪贴板内容,你需要在本窗口重新粘贴一次。", DlgPasteIgnoreFont : "忽略 Font 标签", DlgPasteRemoveStyles : "清理 CSS 样式", -DlgPasteCleanBox : "清空上面内容", // Color Picker ColorAutomatic : "自动", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "关于", DlgAboutBrowserInfoTab : "浏览器信息", DlgAboutLicenseTab : "许可证", DlgAboutVersion : "版本", -DlgAboutInfo : "要获得更多信息请访问 " -}; \ No newline at end of file +DlgAboutInfo : "要获得更多信息请访问 ", + +// Div Dialog +DlgDivGeneralTab : "常规", +DlgDivAdvancedTab : "高级", +DlgDivStyle : "样式", +DlgDivInlineStyle : "CSS 样式" +}; diff --git a/static/fckeditor/editor/lang/zh.js b/static/contrib/fckeditor-2.6.3/editor/lang/zh.js old mode 100644 new mode 100755 similarity index 89% rename from static/fckeditor/editor/lang/zh.js rename to static/contrib/fckeditor-2.6.3/editor/lang/zh.js index b5cd239..724ca2f --- a/static/fckeditor/editor/lang/zh.js +++ b/static/contrib/fckeditor-2.6.3/editor/lang/zh.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -44,7 +44,9 @@ RemoveFormat : "清除格式", InsertLinkLbl : "超連結", InsertLink : "插入/編輯超連結", RemoveLink : "移除超連結", +VisitLink : "開啟超連結", Anchor : "插入/編輯錨點", +AnchorDelete : "移除錨點", InsertImageLbl : "影像", InsertImage : "插入/編輯影像", InsertFlashLbl : "Flash", @@ -70,6 +72,10 @@ RightJustify : "靠右對齊", BlockJustify : "左右對齊", DecreaseIndent : "減少縮排", IncreaseIndent : "增加縮排", +Blockquote : "引用文字", +CreateDiv : "新增 Div 標籤", +EditDiv : "變更 Div 標籤", +DeleteDiv : "移除 Div 標籤", Undo : "復原", Redo : "重複", NumberedListLbl : "編號清單", @@ -103,20 +109,27 @@ SelectionField : "清單/選單", ImageButton : "影像按鈕", FitWindow : "編輯器最大化", +ShowBlocks : "顯示區塊", // Context Menu EditLink : "編輯超連結", CellCM : "儲存格", RowCM : "列", ColumnCM : "欄", -InsertRow : "插入列", +InsertRowAfter : "向下插入列", +InsertRowBefore : "向上插入列", DeleteRows : "刪除列", -InsertColumn : "插入欄", +InsertColumnAfter : "向右插入欄", +InsertColumnBefore : "向左插入欄", DeleteColumns : "刪除欄", -InsertCell : "插入儲存格", +InsertCellAfter : "向右插入儲存格", +InsertCellBefore : "向左插入儲存格", DeleteCells : "刪除儲存格", MergeCells : "合併儲存格", -SplitCell : "分割儲存格", +MergeRight : "向右合併儲存格", +MergeDown : "向下合併儲存格", +HorizontalSplitCell : "橫向分割儲存格", +VerticalSplitCell : "縱向分割儲存格", TableDelete : "刪除表格", CellProperties : "儲存格屬性", TableProperties : "表格屬性", @@ -134,7 +147,7 @@ SelectionFieldProp : "清單/選單屬性", TextareaProp : "文字區域屬性", FormProp : "表單屬性", -FontFormats : "本文;已格式化;位址;標題 1;標題 2;標題 3;標題 4;標題 5;標題 6;本文 (DIV)", //REVIEW : Check _getfontformat.html +FontFormats : "一般;已格式化;位址;標題 1;標題 2;標題 3;標題 4;標題 5;標題 6;一般 (DIV)", // Alerts and Messages ProcessingXHTML : "處理 XHTML 中,請稍候…", @@ -148,6 +161,7 @@ UnknownToolbarSet : "工具列設定 \"%1\" 不存在", NoActiveX : "瀏覽器的安全性設定限制了本編輯器的某些功能。您必須啟用安全性設定中的「執行ActiveX控制項與外掛程式」項目,否則本編輯器將會出現錯誤並缺少某些功能", BrowseServerBlocked : "無法開啟資源瀏覽器,請確定所有快顯視窗封鎖程式是否關閉", DialogBlocked : "無法開啟對話視窗,請確定所有快顯視窗封鎖程式是否關閉", +VisitLinkBlocked : "無法開啟新視窗,請確定所有快顯視窗封鎖程式是否關閉", // Dialogs DlgBtnOK : "確定", @@ -229,7 +243,7 @@ DlgLnkURL : "URL", DlgLnkAnchorSel : "請選擇錨點", DlgLnkAnchorByName : "依錨點名稱", DlgLnkAnchorById : "依元件 ID", -DlgLnkNoAnchors : "<本文件尚無可用之錨點>", //REVIEW : Change < and > with ( and ) +DlgLnkNoAnchors : "(本文件尚無可用之錨點)", DlgLnkEMail : "電子郵件", DlgLnkEMailSubject : "郵件主旨", DlgLnkEMailBody : "郵件內容", @@ -322,6 +336,9 @@ DlgCellBackColor : "背景顏色", DlgCellBorderColor : "邊框顏色", DlgCellBtnSelect : "請選擇…", +// Find and Replace Dialog +DlgFindAndReplaceTitle : "尋找與取代", + // Find Dialog DlgFindTitle : "尋找", DlgFindFindBtn : "尋找", @@ -344,10 +361,9 @@ PasteAsText : "貼為純文字格式", PasteFromWord : "自 Word 貼上", DlgPasteMsg2 : "請使用快捷鍵 (Ctrl+V) 貼到下方區域中並按下 確定", -DlgPasteSec : "Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.", //MISSING +DlgPasteSec : "因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。", DlgPasteIgnoreFont : "移除字型設定", DlgPasteRemoveStyles : "移除樣式設定", -DlgPasteCleanBox : "清除文字區域", // Color Picker ColorAutomatic : "自動", @@ -500,5 +516,11 @@ DlgAboutAboutTab : "關於", DlgAboutBrowserInfoTab : "瀏覽器資訊", DlgAboutLicenseTab : "許可證", DlgAboutVersion : "版本", -DlgAboutInfo : "想獲得更多資訊請至 " -}; \ No newline at end of file +DlgAboutInfo : "想獲得更多資訊請至 ", + +// Div Dialog +DlgDivGeneralTab : "一般", +DlgDivAdvancedTab : "進階", +DlgDivStyle : "樣式", +DlgDivInlineStyle : "CSS 樣式" +}; diff --git a/static/fckeditor/editor/plugins/autogrow/fckplugin.js b/static/contrib/fckeditor-2.6.3/editor/plugins/autogrow/fckplugin.js old mode 100644 new mode 100755 similarity index 82% rename from static/fckeditor/editor/plugins/autogrow/fckplugin.js rename to static/contrib/fckeditor-2.6.3/editor/plugins/autogrow/fckplugin.js index 7ce1c1c..8873b05 --- a/static/fckeditor/editor/plugins/autogrow/fckplugin.js +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/autogrow/fckplugin.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -63,6 +63,13 @@ function FCKAutoGrow_Check() return ; window.frameElement.height = iMainFrameSize ; + + // Gecko browsers use an onresize handler to update the innermost + // IFRAME's height. If the document is modified before the onresize + // is triggered, the plugin will miscalculate the new height. Thus, + // forcibly trigger onresize. #1336 + if ( typeof window.onresize == 'function' ) + window.onresize() ; } } @@ -89,4 +96,4 @@ function FCKAutoGrow_CheckEditorStatus( sender, status ) FCKAutoGrow_Check() ; } -FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow_CheckEditorStatus ) ; \ No newline at end of file +FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow_CheckEditorStatus ) ; diff --git a/static/fckeditor/editor/_source/internals/fckselection.js b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.config.js old mode 100644 new mode 100755 similarity index 66% rename from static/fckeditor/editor/_source/internals/fckselection.js rename to static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.config.js index 8e27724..782e669 --- a/static/fckeditor/editor/_source/internals/fckselection.js +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.config.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -18,7 +18,9 @@ * * == END LICENSE == * - * Active selection functions. + * Sample custom configuration settings used by the BBCode plugin. It simply + * loads the plugin. All the rest is done by the plugin itself. */ -var FCKSelection = FCK.Selection = new Object() ; +// Add the BBCode plugin. +FCKConfig.Plugins.Add( 'bbcode' ) ; diff --git a/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.html b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.html new file mode 100755 index 0000000..246f3a5 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/_sample/sample.html @@ -0,0 +1,67 @@ + + + + + FCKeditor - BBCode Sample + + + + + + +

    + FCKeditor - BBCode Sample

    +

    + This is a sample of custom Data Processor implementation for (very) basic BBCode + syntax. Only [b], [i], [u] and + [url] may be used. It may be extended, but this is out of this + sample purpose. +

    +

    + Note that the input and output of the editor is not HTML, but BBCode +

    +
    + + +
    + + + + diff --git a/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/fckplugin.js b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/fckplugin.js new file mode 100755 index 0000000..640f820 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/bbcode/fckplugin.js @@ -0,0 +1,123 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2008 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * This is a sample implementation for a custom Data Processor for basic BBCode. + */ + +FCK.DataProcessor = +{ + /* + * Returns a string representing the HTML format of "data". The returned + * value will be loaded in the editor. + * The HTML must be from to , eventually including + * the DOCTYPE. + * @param {String} data The data to be converted in the + * DataProcessor specific format. + */ + ConvertToHtml : function( data ) + { + // Convert < and > to their HTML entities. + data = data.replace( //g, '>' ) ; + + // Convert line breaks to
    . + data = data.replace( /(?:\r\n|\n|\r)/g, '
    ' ) ; + + // [url] + data = data.replace( /\[url\](.+?)\[\/url]/gi, '$1' ) ; + data = data.replace( /\[url\=([^\]]+)](.+?)\[\/url]/gi, '$2' ) ; + + // [b] + data = data.replace( /\[b\](.+?)\[\/b]/gi, '$1' ) ; + + // [i] + data = data.replace( /\[i\](.+?)\[\/i]/gi, '$1' ) ; + + // [u] + data = data.replace( /\[u\](.+?)\[\/u]/gi, '$1' ) ; + + return '' + data + '' ; + }, + + /* + * Converts a DOM (sub-)tree to a string in the data format. + * @param {Object} rootNode The node that contains the DOM tree to be + * converted to the data format. + * @param {Boolean} excludeRoot Indicates that the root node must not + * be included in the conversion, only its children. + * @param {Boolean} format Indicates that the data must be formatted + * for human reading. Not all Data Processors may provide it. + */ + ConvertToDataFormat : function( rootNode, excludeRoot, ignoreIfEmptyParagraph, format ) + { + var data = rootNode.innerHTML ; + + // Convert
    to line breaks. + data = data.replace( /]).*?>/gi, '\r\n') ; + + // [url] + data = data.replace( /(.+?)<\/a>/gi, '[url=$2]$3[/url]') ; + + // [b] + data = data.replace( /<(?:b|strong)>/gi, '[b]') ; + data = data.replace( /<\/(?:b|strong)>/gi, '[/b]') ; + + // [i] + data = data.replace( /<(?:i|em)>/gi, '[i]') ; + data = data.replace( /<\/(?:i|em)>/gi, '[/i]') ; + + // [u] + data = data.replace( //gi, '[u]') ; + data = data.replace( /<\/u>/gi, '[/u]') ; + + // Remove remaining tags. + data = data.replace( /<[^>]+>/g, '') ; + + return data ; + }, + + /* + * Makes any necessary changes to a piece of HTML for insertion in the + * editor selection position. + * @param {String} html The HTML to be fixed. + */ + FixHtml : function( html ) + { + return html ; + } +} ; + +// This Data Processor doesn't support

    , so let's use
    . +FCKConfig.EnterMode = 'br' ; + +// To avoid pasting invalid markup (which is discarded in any case), let's +// force pasting to plain text. +FCKConfig.ForcePasteAsPlainText = true ; + +// Rename the "Source" buttom to "BBCode". +FCKToolbarItems.RegisterItem( 'Source', new FCKToolbarButton( 'Source', 'BBCode', null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ) ; + +// Let's enforce the toolbar to the limits of this Data Processor. A custom +// toolbar set may be defined in the configuration file with more or less entries. +FCKConfig.ToolbarSets["Default"] = [ + ['Source'], + ['Bold','Italic','Underline','-','Link'], + ['About'] +] ; diff --git a/static/contrib/fckeditor-2.6.3/editor/plugins/dragresizetable/fckplugin.js b/static/contrib/fckeditor-2.6.3/editor/plugins/dragresizetable/fckplugin.js new file mode 100755 index 0000000..c4f1c83 --- /dev/null +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/dragresizetable/fckplugin.js @@ -0,0 +1,524 @@ +var FCKDragTableHandler = +{ + "_DragState" : 0, + "_LeftCell" : null, + "_RightCell" : null, + "_MouseMoveMode" : 0, // 0 - find candidate cells for resizing, 1 - drag to resize + "_ResizeBar" : null, + "_OriginalX" : null, + "_MinimumX" : null, + "_MaximumX" : null, + "_LastX" : null, + "_TableMap" : null, + "_doc" : document, + "_IsInsideNode" : function( w, domNode, pos ) + { + var myCoords = FCKTools.GetWindowPosition( w, domNode ) ; + var xMin = myCoords.x ; + var yMin = myCoords.y ; + var xMax = parseInt( xMin, 10 ) + parseInt( domNode.offsetWidth, 10 ) ; + var yMax = parseInt( yMin, 10 ) + parseInt( domNode.offsetHeight, 10 ) ; + if ( pos.x >= xMin && pos.x <= xMax && pos.y >= yMin && pos.y <= yMax ) + return true; + return false; + }, + "_GetBorderCells" : function( w, tableNode, tableMap, mouse ) + { + // Enumerate all the cells in the table. + var cells = [] ; + for ( var i = 0 ; i < tableNode.rows.length ; i++ ) + { + var r = tableNode.rows[i] ; + for ( var j = 0 ; j < r.cells.length ; j++ ) + cells.push( r.cells[j] ) ; + } + + if ( cells.length < 1 ) + return null ; + + // Get the cells whose right or left border is nearest to the mouse cursor's x coordinate. + var minRxDist = null ; + var lxDist = null ; + var minYDist = null ; + var rbCell = null ; + var lbCell = null ; + for ( var i = 0 ; i < cells.length ; i++ ) + { + var pos = FCKTools.GetWindowPosition( w, cells[i] ) ; + var rightX = pos.x + parseInt( cells[i].clientWidth, 10 ) ; + var rxDist = mouse.x - rightX ; + var yDist = mouse.y - ( pos.y + ( cells[i].clientHeight / 2 ) ) ; + if ( minRxDist == null || + ( Math.abs( rxDist ) <= Math.abs( minRxDist ) && + ( minYDist == null || Math.abs( yDist ) <= Math.abs( minYDist ) ) ) ) + { + minRxDist = rxDist ; + minYDist = yDist ; + rbCell = cells[i] ; + } + } + /* + var rowNode = FCKTools.GetElementAscensor( rbCell, "tr" ) ; + var cellIndex = rbCell.cellIndex + 1 ; + if ( cellIndex >= rowNode.cells.length ) + return null ; + lbCell = rowNode.cells.item( cellIndex ) ; + */ + var rowIdx = rbCell.parentNode.rowIndex ; + var colIdx = FCKTableHandler._GetCellIndexSpan( tableMap, rowIdx, rbCell ) ; + var colSpan = isNaN( rbCell.colSpan ) ? 1 : rbCell.colSpan ; + lbCell = tableMap[rowIdx][colIdx + colSpan] ; + + if ( ! lbCell ) + return null ; + + // Abort if too far from the border. + lxDist = mouse.x - FCKTools.GetWindowPosition( w, lbCell ).x ; + if ( lxDist < 0 && minRxDist < 0 && minRxDist < -2 ) + return null ; + if ( lxDist > 0 && minRxDist > 0 && lxDist > 3 ) + return null ; + + return { "leftCell" : rbCell, "rightCell" : lbCell } ; + }, + "_GetResizeBarPosition" : function() + { + var row = FCKTools.GetElementAscensor( this._RightCell, "tr" ) ; + return FCKTableHandler._GetCellIndexSpan( this._TableMap, row.rowIndex, this._RightCell ) ; + }, + "_ResizeBarMouseDownListener" : function( evt ) + { + if ( FCKDragTableHandler._LeftCell ) + FCKDragTableHandler._MouseMoveMode = 1 ; + if ( FCKBrowserInfo.IsIE ) + FCKDragTableHandler._ResizeBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 50 ; + else + FCKDragTableHandler._ResizeBar.style.opacity = 0.5 ; + FCKDragTableHandler._OriginalX = evt.clientX ; + + // Calculate maximum and minimum x-coordinate delta. + var borderIndex = FCKDragTableHandler._GetResizeBarPosition() ; + var offset = FCKDragTableHandler._GetIframeOffset(); + var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ); + var minX = null ; + var maxX = null ; + for ( var r = 0 ; r < FCKDragTableHandler._TableMap.length ; r++ ) + { + var leftCell = FCKDragTableHandler._TableMap[r][borderIndex - 1] ; + var rightCell = FCKDragTableHandler._TableMap[r][borderIndex] ; + var leftPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, leftCell ) ; + var rightPosition = FCKTools.GetWindowPosition( FCK.EditorWindow, rightCell ) ; + var leftPadding = FCKDragTableHandler._GetCellPadding( table, leftCell ) ; + var rightPadding = FCKDragTableHandler._GetCellPadding( table, rightCell ) ; + if ( minX == null || leftPosition.x + leftPadding > minX ) + minX = leftPosition.x + leftPadding ; + if ( maxX == null || rightPosition.x + rightCell.clientWidth - rightPadding < maxX ) + maxX = rightPosition.x + rightCell.clientWidth - rightPadding ; + } + + FCKDragTableHandler._MinimumX = minX + offset.x ; + FCKDragTableHandler._MaximumX = maxX + offset.x ; + FCKDragTableHandler._LastX = null ; + + if (evt.preventDefault) + evt.preventDefault(); + else + evt.returnValue = false; + }, + "_ResizeBarMouseUpListener" : function( evt ) + { + FCKDragTableHandler._MouseMoveMode = 0 ; + FCKDragTableHandler._HideResizeBar() ; + + if ( FCKDragTableHandler._LastX == null ) + return ; + + // Calculate the delta value. + var deltaX = FCKDragTableHandler._LastX - FCKDragTableHandler._OriginalX ; + + // Then, build an array of current column width values. + // This algorithm can be very slow if the cells have insane colSpan values. (e.g. colSpan=1000). + var table = FCKTools.GetElementAscensor( FCKDragTableHandler._LeftCell, "table" ) ; + var colArray = [] ; + var tableMap = FCKDragTableHandler._TableMap ; + for ( var i = 0 ; i < tableMap.length ; i++ ) + { + for ( var j = 0 ; j < tableMap[i].length ; j++ ) + { + var cell = tableMap[i][j] ; + var width = FCKDragTableHandler._GetCellWidth( table, cell ) ; + var colSpan = isNaN( cell.colSpan) ? 1 : cell.colSpan ; + if ( colArray.length <= j ) + colArray.push( { width : width / colSpan, colSpan : colSpan } ) ; + else + { + var guessItem = colArray[j] ; + if ( guessItem.colSpan > colSpan ) + { + guessItem.width = width / colSpan ; + guessItem.colSpan = colSpan ; + } + } + } + } + + // Find out the equivalent column index of the two cells selected for resizing. + colIndex = FCKDragTableHandler._GetResizeBarPosition() ; + + // Note that colIndex must be at least 1 here, so it's safe to subtract 1 from it. + colIndex-- ; + + // Modify the widths in the colArray according to the mouse coordinate delta value. + colArray[colIndex].width += deltaX ; + colArray[colIndex + 1].width -= deltaX ; + + // Clear all cell widths, delete all elements from the table. + for ( var r = 0 ; r < table.rows.length ; r++ ) + { + var row = table.rows.item( r ) ; + for ( var c = 0 ; c < row.cells.length ; c++ ) + { + var cell = row.cells.item( c ) ; + cell.width = "" ; + cell.style.width = "" ; + } + } + var colElements = table.getElementsByTagName( "col" ) ; + for ( var i = colElements.length - 1 ; i >= 0 ; i-- ) + colElements[i].parentNode.removeChild( colElements[i] ) ; + + // Set new cell widths. + var processedCells = [] ; + for ( var i = 0 ; i < tableMap.length ; i++ ) + { + for ( var j = 0 ; j < tableMap[i].length ; j++ ) + { + var cell = tableMap[i][j] ; + if ( cell._Processed ) + continue ; + if ( tableMap[i][j-1] != cell ) + cell.width = colArray[j].width ; + else + cell.width = parseInt( cell.width, 10 ) + parseInt( colArray[j].width, 10 ) ; + if ( tableMap[i][j+1] != cell ) + { + processedCells.push( cell ) ; + cell._Processed = true ; + } + } + } + for ( var i = 0 ; i < processedCells.length ; i++ ) + { + if ( FCKBrowserInfo.IsIE ) + processedCells[i].removeAttribute( '_Processed' ) ; + else + delete processedCells[i]._Processed ; + } + + FCKDragTableHandler._LastX = null ; + }, + "_ResizeBarMouseMoveListener" : function( evt ) + { + if ( FCKDragTableHandler._MouseMoveMode == 0 ) + return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ; + else + return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ; + }, + // Calculate the padding of a table cell. + // It returns the value of paddingLeft + paddingRight of a table cell. + // This function is used, in part, to calculate the width parameter that should be used for setting cell widths. + // The equation in question is clientWidth = paddingLeft + paddingRight + width. + // So that width = clientWidth - paddingLeft - paddingRight. + // The return value of this function must be pixel accurate acorss all supported browsers, so be careful if you need to modify it. + "_GetCellPadding" : function( table, cell ) + { + var attrGuess = parseInt( table.cellPadding, 10 ) * 2 ; + var cssGuess = null ; + if ( typeof( window.getComputedStyle ) == "function" ) + { + var styleObj = window.getComputedStyle( cell, null ) ; + cssGuess = parseInt( styleObj.getPropertyValue( "padding-left" ), 10 ) + + parseInt( styleObj.getPropertyValue( "padding-right" ), 10 ) ; + } + else + cssGuess = parseInt( cell.currentStyle.paddingLeft, 10 ) + parseInt (cell.currentStyle.paddingRight, 10 ) ; + + var cssRuntime = cell.style.padding ; + if ( isFinite( cssRuntime ) ) + cssGuess = parseInt( cssRuntime, 10 ) * 2 ; + else + { + cssRuntime = cell.style.paddingLeft ; + if ( isFinite( cssRuntime ) ) + cssGuess = parseInt( cssRuntime, 10 ) ; + cssRuntime = cell.style.paddingRight ; + if ( isFinite( cssRuntime ) ) + cssGuess += parseInt( cssRuntime, 10 ) ; + } + + attrGuess = parseInt( attrGuess, 10 ) ; + cssGuess = parseInt( cssGuess, 10 ) ; + if ( isNaN( attrGuess ) ) + attrGuess = 0 ; + if ( isNaN( cssGuess ) ) + cssGuess = 0 ; + return Math.max( attrGuess, cssGuess ) ; + }, + // Calculate the real width of the table cell. + // The real width of the table cell is the pixel width that you can set to the width attribute of the table cell and after + // that, the table cell should be of exactly the same width as before. + // The real width of a table cell can be calculated as: + // width = clientWidth - paddingLeft - paddingRight. + "_GetCellWidth" : function( table, cell ) + { + var clientWidth = cell.clientWidth ; + if ( isNaN( clientWidth ) ) + clientWidth = 0 ; + return clientWidth - this._GetCellPadding( table, cell ) ; + }, + "MouseMoveListener" : function( FCK, evt ) + { + if ( FCKDragTableHandler._MouseMoveMode == 0 ) + return FCKDragTableHandler._MouseFindHandler( FCK, evt ) ; + else + return FCKDragTableHandler._MouseDragHandler( FCK, evt ) ; + }, + "_MouseFindHandler" : function( FCK, evt ) + { + if ( FCK.MouseDownFlag ) + return ; + var node = evt.srcElement || evt.target ; + try + { + if ( ! node || node.nodeType != 1 ) + { + this._HideResizeBar() ; + return ; + } + } + catch ( e ) + { + this._HideResizeBar() ; + return ; + } + + // Since this function might be called from the editing area iframe or the outer fckeditor iframe, + // the mouse point coordinates from evt.clientX/Y can have different reference points. + // We need to resolve the mouse pointer position relative to the editing area iframe. + var mouseX = evt.clientX ; + var mouseY = evt.clientY ; + if ( FCKTools.GetElementDocument( node ) == document ) + { + var offset = this._GetIframeOffset() ; + mouseX -= offset.x ; + mouseY -= offset.y ; + } + + + if ( this._ResizeBar && this._LeftCell ) + { + var leftPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._LeftCell ) ; + var rightPos = FCKTools.GetWindowPosition( FCK.EditorWindow, this._RightCell ) ; + var rxDist = mouseX - ( leftPos.x + this._LeftCell.clientWidth ) ; + var lxDist = mouseX - rightPos.x ; + var inRangeFlag = false ; + if ( lxDist >= 0 && rxDist <= 0 ) + inRangeFlag = true ; + else if ( rxDist > 0 && lxDist <= 3 ) + inRangeFlag = true ; + else if ( lxDist < 0 && rxDist >= -2 ) + inRangeFlag = true ; + if ( inRangeFlag ) + { + this._ShowResizeBar( FCK.EditorWindow, + FCKTools.GetElementAscensor( this._LeftCell, "table" ), + { "x" : mouseX, "y" : mouseY } ) ; + return ; + } + } + + var tagName = node.tagName.toLowerCase() ; + if ( tagName != "table" && tagName != "td" && tagName != "th" ) + { + if ( this._LeftCell ) + this._LeftCell = this._RightCell = this._TableMap = null ; + this._HideResizeBar() ; + return ; + } + node = FCKTools.GetElementAscensor( node, "table" ) ; + var tableMap = FCKTableHandler._CreateTableMap( node ) ; + var cellTuple = this._GetBorderCells( FCK.EditorWindow, node, tableMap, { "x" : mouseX, "y" : mouseY } ) ; + + if ( cellTuple == null ) + { + if ( this._LeftCell ) + this._LeftCell = this._RightCell = this._TableMap = null ; + this._HideResizeBar() ; + } + else + { + this._LeftCell = cellTuple["leftCell"] ; + this._RightCell = cellTuple["rightCell"] ; + this._TableMap = tableMap ; + this._ShowResizeBar( FCK.EditorWindow, + FCKTools.GetElementAscensor( this._LeftCell, "table" ), + { "x" : mouseX, "y" : mouseY } ) ; + } + }, + "_MouseDragHandler" : function( FCK, evt ) + { + var mouse = { "x" : evt.clientX, "y" : evt.clientY } ; + + // Convert mouse coordinates in reference to the outer iframe. + var node = evt.srcElement || evt.target ; + if ( FCKTools.GetElementDocument( node ) == FCK.EditorDocument ) + { + var offset = this._GetIframeOffset() ; + mouse.x += offset.x ; + mouse.y += offset.y ; + } + + // Calculate the mouse position delta and see if we've gone out of range. + if ( mouse.x >= this._MaximumX - 5 ) + mouse.x = this._MaximumX - 5 ; + if ( mouse.x <= this._MinimumX + 5 ) + mouse.x = this._MinimumX + 5 ; + + var docX = mouse.x + FCKTools.GetScrollPosition( window ).X ; + this._ResizeBar.style.left = ( docX - this._ResizeBar.offsetWidth / 2 ) + "px" ; + this._LastX = mouse.x ; + }, + "_ShowResizeBar" : function( w, table, mouse ) + { + if ( this._ResizeBar == null ) + { + this._ResizeBar = this._doc.createElement( "div" ) ; + var paddingBar = this._ResizeBar ; + var paddingStyles = { 'position' : 'absolute', 'cursor' : 'e-resize' } ; + if ( FCKBrowserInfo.IsIE ) + paddingStyles.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=10,enabled=true)" ; + else + paddingStyles.opacity = 0.10 ; + FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ; + this._avoidStyles( paddingBar ); + paddingBar.setAttribute('_fcktemp', true); + this._doc.body.appendChild( paddingBar ) ; + FCKTools.AddEventListener( paddingBar, "mousemove", this._ResizeBarMouseMoveListener ) ; + FCKTools.AddEventListener( paddingBar, "mousedown", this._ResizeBarMouseDownListener ) ; + FCKTools.AddEventListener( document, "mouseup", this._ResizeBarMouseUpListener ) ; + FCKTools.AddEventListener( FCK.EditorDocument, "mouseup", this._ResizeBarMouseUpListener ) ; + + // IE doesn't let the tranparent part of the padding block to receive mouse events unless there's something inside. + // So we need to create a spacer image to fill the block up. + var filler = this._doc.createElement( "img" ) ; + filler.setAttribute('_fcktemp', true); + filler.border = 0 ; + filler.src = FCKConfig.BasePath + "images/spacer.gif" ; + filler.style.position = "absolute" ; + paddingBar.appendChild( filler ) ; + + // Disable drag and drop, and selection for the filler image. + var disabledListener = function( evt ) + { + if ( evt.preventDefault ) + evt.preventDefault() ; + else + evt.returnValue = false ; + } + FCKTools.AddEventListener( filler, "dragstart", disabledListener ) ; + FCKTools.AddEventListener( filler, "selectstart", disabledListener ) ; + } + + var paddingBar = this._ResizeBar ; + var offset = this._GetIframeOffset() ; + var tablePos = this._GetTablePosition( w, table ) ; + var barHeight = table.offsetHeight ; + var barTop = offset.y + tablePos.y ; + // Do not let the resize bar intrude into the toolbar area. + if ( tablePos.y < 0 ) + { + barHeight += tablePos.y ; + barTop -= tablePos.y ; + } + var bw = parseInt( table.border, 10 ) ; + if ( isNaN( bw ) ) + bw = 0 ; + var cs = parseInt( table.cellSpacing, 10 ) ; + if ( isNaN( cs ) ) + cs = 0 ; + var barWidth = Math.max( bw+100, cs+100 ) ; + var paddingStyles = + { + 'top' : barTop + 'px', + 'height' : barHeight + 'px', + 'width' : barWidth + 'px', + 'left' : ( offset.x + mouse.x + FCKTools.GetScrollPosition( w ).X - barWidth / 2 ) + 'px' + } ; + if ( FCKBrowserInfo.IsIE ) + paddingBar.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 10 ; + else + paddingStyles.opacity = 0.1 ; + + FCKDomTools.SetElementStyles( paddingBar, paddingStyles ) ; + var filler = paddingBar.getElementsByTagName( "img" )[0] ; + + FCKDomTools.SetElementStyles( filler, + { + width : paddingBar.offsetWidth + 'px', + height : barHeight + 'px' + } ) ; + + barWidth = Math.max( bw, cs, 3 ) ; + var visibleBar = null ; + if ( paddingBar.getElementsByTagName( "div" ).length < 1 ) + { + visibleBar = this._doc.createElement( "div" ) ; + this._avoidStyles( visibleBar ); + visibleBar.setAttribute('_fcktemp', true); + paddingBar.appendChild( visibleBar ) ; + } + else + visibleBar = paddingBar.getElementsByTagName( "div" )[0] ; + + FCKDomTools.SetElementStyles( visibleBar, + { + position : 'absolute', + backgroundColor : 'blue', + width : barWidth + 'px', + height : barHeight + 'px', + left : '50px', + top : '0px' + } ) ; + }, + "_HideResizeBar" : function() + { + if ( this._ResizeBar ) + // IE bug: display : none does not hide the resize bar for some reason. + // so set the position to somewhere invisible. + FCKDomTools.SetElementStyles( this._ResizeBar, + { + top : '-100000px', + left : '-100000px' + } ) ; + }, + "_GetIframeOffset" : function () + { + return FCKTools.GetDocumentPosition( window, FCK.EditingArea.IFrame ) ; + }, + "_GetTablePosition" : function ( w, table ) + { + return FCKTools.GetWindowPosition( w, table ) ; + }, + "_avoidStyles" : function( element ) + { + FCKDomTools.SetElementStyles( element, + { + padding : '0', + backgroundImage : 'none', + border : '0' + } ) ; + } + +}; + +FCK.Events.AttachEvent( "OnMouseMove", FCKDragTableHandler.MouseMoveListener ) ; diff --git a/static/fckeditor/editor/plugins/placeholder/fck_placeholder.html b/static/contrib/fckeditor-2.6.3/editor/plugins/placeholder/fck_placeholder.html old mode 100644 new mode 100755 similarity index 82% rename from static/fckeditor/editor/plugins/placeholder/fck_placeholder.html rename to static/contrib/fckeditor-2.6.3/editor/plugins/placeholder/fck_placeholder.html index a334206..359a7a1 --- a/static/fckeditor/editor/plugins/placeholder/fck_placeholder.html +++ b/static/contrib/fckeditor-2.6.3/editor/plugins/placeholder/fck_placeholder.html @@ -1,7 +1,7 @@ + + + + #CreateHtml()# + + + @@ -62,9 +76,9 @@ // display the html editor or a plain textarea? if( isCompatible() ) - showHTMLEditor(); + return getHtmlEditor(); else - showTextArea(); + return getTextArea(); @@ -86,70 +100,48 @@ if( not this.checkBrowser ) return true; - // check for Internet Explorer ( >= 5.5 ) - if( find( "msie", sAgent ) and not find( "mac", sAgent ) and not find( "opera", sAgent ) ) - { - // try to extract IE version - stResult = reFind( "msie ([5-9]\.[0-9])", sAgent, 1, true ); - if( arrayLen( stResult.pos ) eq 2 ) - { - // get IE Version - sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] ); - return ( sBrowserVersion GTE 5.5 ); - } - } - // check for Gecko ( >= 20030210+ ) - else if( find( "gecko/", sAgent ) ) - { - // try to extract Gecko version date - stResult = reFind( "gecko/(200[3-9][0-1][0-9][0-3][0-9])", sAgent, 1, true ); - if( arrayLen( stResult.pos ) eq 2 ) - { - // get Gecko build (i18n date) - sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] ); - return ( sBrowserVersion GTE 20030210 ); - } - } - - return false; + return FCKeditor_IsCompatibleBrowser(); + + + - // append unit "px" for numeric width and/or height values - if( isNumeric( this.width ) ) - this.width = this.width & "px"; - if( isNumeric( this.height ) ) - this.height = this.height & "px"; + if( Find( "%", this.width ) gt 0) + sWidthCSS = this.width; + else + sWidthCSS = this.width & "px"; + + if( Find( "%", this.width ) gt 0) + sHeightCSS = this.height; + else + sHeightCSS = this.height & "px"; + + result = "" & chr(13) & chr(10); - - -

    - -
    -
    - + + + - var sURL = ""; - // try to fix the basePath, if ending slash is missing if( len( this.basePath) and right( this.basePath, 1 ) is not "/" ) this.basePath = this.basePath & "/"; @@ -162,14 +154,12 @@ sURL = sURL & "&Toolbar=" & this.toolbarSet; - -
    - - - -
    -
    - + + result = result & "" & chr(13) & chr(10); + result = result & "" & chr(13) & chr(10); + result = result & "" & chr(13) & chr(10); + +
    + + + + + + - var sParams = ""; - var key = ""; - var fieldValue = ""; - var fieldLabel = ""; - var lConfigKeys = ""; - var iPos = ""; - /** * CFML doesn't store casesensitive names for structure keys, but the configuration names must be casesensitive for js. * So we need to find out the correct case for the configuration keys. * We "fix" this by comparing the caseless configuration keys to a list of all available configuration options in the correct case. * changed 20041206 hk@lwd.de (improvements are welcome!) */ - lConfigKeys = lConfigKeys & "DisableEnterKeyHandler,CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType"; + lConfigKeys = lConfigKeys & "CustomConfigurationsPath,EditorAreaCSS,ToolbarComboPreviewCSS,DocType"; lConfigKeys = lConfigKeys & ",BaseHref,FullPage,Debug,AllowQueryStringDebug,SkinPath"; lConfigKeys = lConfigKeys & ",PreloadImages,PluginsPath,AutoDetectLanguage,DefaultLanguage,ContentLangDirection"; lConfigKeys = lConfigKeys & ",ProcessHTMLEntities,IncludeLatinEntities,IncludeGreekEntities,ProcessNumericEntities,AdditionalNumericEntities"; - lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator,ForceStrongEm"; - lConfigKeys = lConfigKeys & ",GeckoUseSPAN,StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand"; + lConfigKeys = lConfigKeys & ",FillEmptyBlocks,FormatSource,FormatOutput,FormatIndentator"; + lConfigKeys = lConfigKeys & ",StartupFocus,ForcePasteAsPlainText,AutoDetectPasteFromWord,ForceSimpleAmpersand"; lConfigKeys = lConfigKeys & ",TabSpaces,ShowBorders,SourcePopup,ToolbarStartExpanded,ToolbarCanCollapse"; - lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,PreserveSessionOnFileBrowser,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox"; + lConfigKeys = lConfigKeys & ",IgnoreEmptyParagraphValue,FloatingPanelsZIndex,TemplateReplaceAll,TemplateReplaceCheckbox"; lConfigKeys = lConfigKeys & ",ToolbarLocation,ToolbarSets,EnterMode,ShiftEnterMode,Keystrokes"; lConfigKeys = lConfigKeys & ",ContextMenu,BrowserContextMenuOnCtrl,FontColors,FontNames,FontSizes"; lConfigKeys = lConfigKeys & ",FontFormats,StylesXmlPath,TemplatesXmlPath,SpellChecker,IeSpellDownloadUrl"; lConfigKeys = lConfigKeys & ",SpellerPagesServerScript,FirefoxSpellChecker,MaxUndoLevels,DisableObjectResizing,DisableFFTableHandles"; - lConfigKeys = lConfigKeys & ",LinkDlgHideTarget ,LinkDlgHideAdvanced,ImageDlgHideLink ,ImageDlgHideAdvanced,FlashDlgHideAdvanced"; + lConfigKeys = lConfigKeys & ",LinkDlgHideTarget,LinkDlgHideAdvanced,ImageDlgHideLink,ImageDlgHideAdvanced,FlashDlgHideAdvanced"; lConfigKeys = lConfigKeys & ",ProtectedTags,BodyId,BodyClass,DefaultLinkTarget,CleanWordKeepsStructure"; lConfigKeys = lConfigKeys & ",LinkBrowser,LinkBrowserURL,LinkBrowserWindowWidth,LinkBrowserWindowHeight,ImageBrowser"; lConfigKeys = lConfigKeys & ",ImageBrowserURL,ImageBrowserWindowWidth,ImageBrowserWindowHeight,FlashBrowser,FlashBrowserURL"; - lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth ,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth"; + lConfigKeys = lConfigKeys & ",FlashBrowserWindowWidth,FlashBrowserWindowHeight,LinkUpload,LinkUploadURL,LinkUploadWindowWidth"; lConfigKeys = lConfigKeys & ",LinkUploadWindowHeight,LinkUploadAllowedExtensions,LinkUploadDeniedExtensions,ImageUpload,ImageUploadURL"; lConfigKeys = lConfigKeys & ",ImageUploadAllowedExtensions,ImageUploadDeniedExtensions,FlashUpload,FlashUploadURL,FlashUploadAllowedExtensions"; lConfigKeys = lConfigKeys & ",FlashUploadDeniedExtensions,SmileyPath,SmileyImages,SmileyColumns,SmileyWindowWidth,SmileyWindowHeight"; @@ -240,4 +229,4 @@ - \ No newline at end of file + diff --git a/static/fckeditor/fckeditor.cfm b/static/contrib/fckeditor-2.6.3/fckeditor.cfm similarity index 78% rename from static/fckeditor/fckeditor.cfm rename to static/contrib/fckeditor-2.6.3/fckeditor.cfm index 658aa1f..22fa6ad 100644 --- a/static/fckeditor/fckeditor.cfm +++ b/static/contrib/fckeditor-2.6.3/fckeditor.cfm @@ -1,7 +1,7 @@ -
    -
    - \ No newline at end of file + diff --git a/static/fckeditor/fckeditor.js b/static/contrib/fckeditor-2.6.3/fckeditor.js similarity index 55% rename from static/fckeditor/fckeditor.js rename to static/contrib/fckeditor-2.6.3/fckeditor.js index 63ec41f..a91b28e 100644 --- a/static/fckeditor/fckeditor.js +++ b/static/contrib/fckeditor-2.6.3/fckeditor.js @@ -1,6 +1,6 @@ /* * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * Copyright (C) 2003-2008 Frederico Caldeira Knabben * * == BEGIN LICENSE == * @@ -34,11 +34,9 @@ var FCKeditor = function( instanceName, width, height, toolbarSet, value ) this.Height = height || '200' ; this.ToolbarSet = toolbarSet || 'Default' ; this.Value = value || '' ; - this.BasePath = '/fckeditor/' ; + this.BasePath = FCKeditor.BasePath ; this.CheckBrowser = true ; this.DisplayErrors = true ; - this.EnableSafari = false ; // This is a temporary property, while Safari support is under development. - this.EnableOpera = false ; // This is a temporary property, while Opera support is under development. this.Config = new Object() ; @@ -46,8 +44,23 @@ var FCKeditor = function( instanceName, width, height, toolbarSet, value ) this.OnError = null ; // function( source, errorNumber, errorDescription ) } -FCKeditor.prototype.Version = '2.4.3' ; -FCKeditor.prototype.VersionBuild = '15657' ; +/** + * This is the default BasePath used by all editor instances. + */ +FCKeditor.BasePath = '/fckeditor/' ; + +/** + * The minimum height used when replacing textareas. + */ +FCKeditor.MinHeight = 200 ; + +/** + * The minimum width used when replacing textareas. + */ +FCKeditor.MinWidth = 750 ; + +FCKeditor.prototype.Version = '2.6.3' ; +FCKeditor.prototype.VersionBuild = '19836' ; FCKeditor.prototype.Create = function() { @@ -63,7 +76,7 @@ FCKeditor.prototype.CreateHtml = function() return '' ; } - var sHtml = '
    ' ; + var sHtml = '' ; if ( !this.CheckBrowser || this._IsCompatibleBrowser() ) { @@ -75,10 +88,18 @@ FCKeditor.prototype.CreateHtml = function() { var sWidth = this.Width.toString().indexOf('%') > 0 ? this.Width : this.Width + 'px' ; var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ; - sHtml += ' -
    '); /if; return(@#out); /define_tag; define_tag('isCompatibleBrowser'); - local('result' = true); - (client_browser >> 'Apple' || client_browser >> 'Opera' || client_browser >> 'KHTML') ? #result = false; + local('result' = false); + if (client_browser->Find("MSIE") && !client_browser->Find("mac") && !client_browser->Find("Opera")); + #result = client_browser->Substring(client_browser->Find("MSIE")+5,3)>=5.5; + /if; + if (client_browser->Find("Gecko/")); + #result = client_browser->Substring(client_browser->Find("Gecko/")+6,8)>=20030210; + /if; + if (client_browser->Find("Opera/")); + #result = client_browser->Substring(client_browser->Find("Opera/")+6,4)>=9.5; + /if; + if (client_browser->Find("AppleWebKit/")); + #result = client_browser->Substring(client_browser->Find("AppleWebKit/")+12,3)>=522; + /if; return(#result); /define_tag; diff --git a/static/fckeditor/fckeditor.php b/static/contrib/fckeditor-2.6.3/fckeditor.php similarity index 81% rename from static/fckeditor/fckeditor.php rename to static/contrib/fckeditor-2.6.3/fckeditor.php index 4bbf1b7..68ddb80 100644 --- a/static/fckeditor/fckeditor.php +++ b/static/contrib/fckeditor-2.6.3/fckeditor.php @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/static/fckeditor/fckeditor.pl b/static/contrib/fckeditor-2.6.3/fckeditor.pl similarity index 88% rename from static/fckeditor/fckeditor.pl rename to static/contrib/fckeditor-2.6.3/fckeditor.pl index 4580431..2427982 100644 --- a/static/fckeditor/fckeditor.pl +++ b/static/contrib/fckeditor-2.6.3/fckeditor.pl @@ -1,6 +1,6 @@ ##### # FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben +# Copyright (C) 2003-2008 Frederico Caldeira Knabben # # == BEGIN LICENSE == # @@ -63,7 +63,7 @@ sub CreateHtml { $HtmlValue = &specialchar_cnv($Value); - $Html = '
    ' ; + $Html = '' ; if(&IsCompatible()) { $Link = $BasePath . "editor/fckeditor.html?InstanceName=$InstanceName"; if($ToolbarSet ne '') { @@ -93,7 +93,6 @@ sub CreateHtml } $Html .= ""; } - $Html .= '
    '; return($Html); } @@ -107,6 +106,11 @@ sub IsCompatible } elsif($sAgent =~ /Gecko\//i) { $iVersion = substr($sAgent,index($sAgent,'Gecko/') + 6,8); return($iVersion >= 20030210) ; + } elsif($sAgent =~ /Opera\//i) { + $iVersion = substr($sAgent,index($sAgent,'Opera/') + 6,4); + return($iVersion >= 9.5) ; + } elsif($sAgent =~ /AppleWebKit\/(\d+)/i) { + return($1 >= 522) ; } else { return(0); # 2.0 PR fix } diff --git a/static/fckeditor/fckeditor.py b/static/contrib/fckeditor-2.6.3/fckeditor.py similarity index 85% rename from static/fckeditor/fckeditor.py rename to static/contrib/fckeditor-2.6.3/fckeditor.py index c92345b..d49013f 100644 --- a/static/fckeditor/fckeditor.py +++ b/static/contrib/fckeditor-2.6.3/fckeditor.py @@ -1,6 +1,6 @@ """ FCKeditor - The text editor for Internet - http://www.fckeditor.net -Copyright (C) 2003-2007 Frederico Caldeira Knabben +Copyright (C) 2003-2008 Frederico Caldeira Knabben == BEGIN LICENSE == @@ -23,6 +23,7 @@ This is the integration file for Python. import cgi import os +import re import string def escape(text, replace=string.replace): @@ -56,7 +57,7 @@ class FCKeditor(object): def CreateHtml(self): HtmlValue = escape(self.Value) - Html = "
    " + Html = "" if (self.IsCompatible()): File = "fckeditor.html" @@ -66,7 +67,7 @@ class FCKeditor(object): self.InstanceName ) if (self.ToolbarSet is not None): - Link += "&ToolBar=%s" % self.ToolbarSet + Link += "&Toolbar=%s" % self.ToolbarSet # Render the linked hidden field Html += "" % ( @@ -104,7 +105,6 @@ class FCKeditor(object): HeightCSS, HtmlValue ) - Html += "
    " return Html def IsCompatible(self): @@ -124,6 +124,18 @@ class FCKeditor(object): if (iVersion >= 20030210): return True return False + elif (sAgent.find("Opera/") >= 0): + i = sAgent.find("Opera/") + iVersion = float(sAgent[i+6:i+6+4]) + if (iVersion >= 9.5): + return True + return False + elif (sAgent.find("AppleWebKit/") >= 0): + p = re.compile('AppleWebKit\/(\d+)', re.IGNORECASE) + m = p.search(sAgent) + if (m.group(1) >= 522): + return True + return False else: return False @@ -146,4 +158,3 @@ class FCKeditor(object): else: sParams += "%s=%s" % (k, v) return sParams - diff --git a/static/fckeditor/fckeditor_php4.php b/static/contrib/fckeditor-2.6.3/fckeditor_php4.php similarity index 54% rename from static/fckeditor/fckeditor_php4.php rename to static/contrib/fckeditor-2.6.3/fckeditor_php4.php index 04049fd..ca8cb8b 100644 --- a/static/fckeditor/fckeditor_php4.php +++ b/static/contrib/fckeditor-2.6.3/fckeditor_php4.php @@ -1,7 +1,7 @@ = 5.5) ; + } + else if ( strpos($sAgent, 'Gecko/') !== false ) + { + $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ; + return ($iVersion >= 20030210) ; + } + else if ( strpos($sAgent, 'Opera/') !== false ) + { + $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ; + return ($fVersion >= 9.5) ; + } + else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) ) + { + $iVersion = $matches[1] ; + return ( $matches[1] >= 522 ) ; + } + else + return false ; +} + class FCKeditor { + /** + * Name of the FCKeditor instance. + * + * @access protected + * @var string + */ var $InstanceName ; + /** + * Path to FCKeditor relative to the document root. + * + * @var string + */ var $BasePath ; + /** + * Width of the FCKeditor. + * Examples: 100%, 600 + * + * @var mixed + */ var $Width ; + /** + * Height of the FCKeditor. + * Examples: 400, 50% + * + * @var mixed + */ var $Height ; + /** + * Name of the toolbar to load. + * + * @var string + */ var $ToolbarSet ; + /** + * Initial value. + * + * @var string + */ var $Value ; + /** + * This is where additional configuration can be passed. + * Example: + * $oFCKeditor->Config['EnterMode'] = 'br'; + * + * @var array + */ var $Config ; - // PHP 4 Contructor + /** + * Main Constructor. + * Refer to the _samples/php directory for examples. + * + * @param string $instanceName + */ function FCKeditor( $instanceName ) { $this->InstanceName = $instanceName ; @@ -48,16 +139,30 @@ class FCKeditor $this->Config = array() ; } + /** + * Display FCKeditor. + * + */ function Create() { echo $this->CreateHtml() ; } + /** + * Return the HTML code required to run FCKeditor. + * + * @return string + */ function CreateHtml() { $HtmlValue = htmlspecialchars( $this->Value ) ; - $Html = '
    ' ; + $Html = '' ; + + if ( !isset( $_GET ) ) { + global $HTTP_GET_VARS ; + $_GET = $HTTP_GET_VARS ; + } if ( $this->IsCompatible() ) { @@ -95,34 +200,25 @@ class FCKeditor $Html .= "" ; } - $Html .= '
    ' ; - return $Html ; } + /** + * Returns true if browser is compatible with FCKeditor. + * + * @return boolean + */ function IsCompatible() { - global $HTTP_USER_AGENT ; - - if ( isset( $HTTP_USER_AGENT ) ) - $sAgent = $HTTP_USER_AGENT ; - else - $sAgent = $_SERVER['HTTP_USER_AGENT'] ; - - if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false ) - { - $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ; - return ($iVersion >= 5.5) ; - } - else if ( strpos($sAgent, 'Gecko/') !== false ) - { - $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ; - return ($iVersion >= 20030210) ; - } - else - return false ; + return FCKeditor_IsCompatibleBrowser() ; } + /** + * Get settings from Config array as a single string. + * + * @access protected + * @return string + */ function GetConfigFieldString() { $sParams = '' ; @@ -146,6 +242,14 @@ class FCKeditor return $sParams ; } + /** + * Encode characters that may break the configuration string + * generated by GetConfigFieldString(). + * + * @access protected + * @param string $valueToEncode + * @return string + */ function EncodeConfig( $valueToEncode ) { $chars = array( @@ -156,5 +260,3 @@ class FCKeditor return strtr( $valueToEncode, $chars ) ; } } - -?> \ No newline at end of file diff --git a/static/fckeditor/fckeditor_php5.php b/static/contrib/fckeditor-2.6.3/fckeditor_php5.php similarity index 50% rename from static/fckeditor/fckeditor_php5.php rename to static/contrib/fckeditor-2.6.3/fckeditor_php5.php index 13aa5ff..9b57cbb 100644 --- a/static/fckeditor/fckeditor_php5.php +++ b/static/contrib/fckeditor-2.6.3/fckeditor_php5.php @@ -1,7 +1,7 @@ = 5.5) ; + } + else if ( strpos($sAgent, 'Gecko/') !== false ) + { + $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ; + return ($iVersion >= 20030210) ; + } + else if ( strpos($sAgent, 'Opera/') !== false ) + { + $fVersion = (float)substr($sAgent, strpos($sAgent, 'Opera/') + 6, 4) ; + return ($fVersion >= 9.5) ; + } + else if ( preg_match( "|AppleWebKit/(\d+)|i", $sAgent, $matches ) ) + { + $iVersion = $matches[1] ; + return ( $matches[1] >= 522 ) ; + } + else + return false ; +} + class FCKeditor { - var $InstanceName ; - var $BasePath ; - var $Width ; - var $Height ; - var $ToolbarSet ; - var $Value ; - var $Config ; + /** + * Name of the FCKeditor instance. + * + * @access protected + * @var string + */ + public $InstanceName ; + /** + * Path to FCKeditor relative to the document root. + * + * @var string + */ + public $BasePath ; + /** + * Width of the FCKeditor. + * Examples: 100%, 600 + * + * @var mixed + */ + public $Width ; + /** + * Height of the FCKeditor. + * Examples: 400, 50% + * + * @var mixed + */ + public $Height ; + /** + * Name of the toolbar to load. + * + * @var string + */ + public $ToolbarSet ; + /** + * Initial value. + * + * @var string + */ + public $Value ; + /** + * This is where additional configuration can be passed. + * Example: + * $oFCKeditor->Config['EnterMode'] = 'br'; + * + * @var array + */ + public $Config ; - // PHP 5 Constructor (by Marcus Bointon ) - function __construct( $instanceName ) + /** + * Main Constructor. + * Refer to the _samples/php directory for examples. + * + * @param string $instanceName + */ + public function __construct( $instanceName ) { $this->InstanceName = $instanceName ; $this->BasePath = '/fckeditor/' ; @@ -48,16 +139,25 @@ class FCKeditor $this->Config = array() ; } - function Create() + /** + * Display FCKeditor. + * + */ + public function Create() { echo $this->CreateHtml() ; } - function CreateHtml() + /** + * Return the HTML code required to run FCKeditor. + * + * @return string + */ + public function CreateHtml() { $HtmlValue = htmlspecialchars( $this->Value ) ; - $Html = '
    ' ; + $Html = '' ; if ( $this->IsCompatible() ) { @@ -95,35 +195,26 @@ class FCKeditor $Html .= "" ; } - $Html .= '
    ' ; - return $Html ; } - function IsCompatible() + /** + * Returns true if browser is compatible with FCKeditor. + * + * @return boolean + */ + public function IsCompatible() { - global $HTTP_USER_AGENT ; - - if ( isset( $HTTP_USER_AGENT ) ) - $sAgent = $HTTP_USER_AGENT ; - else - $sAgent = $_SERVER['HTTP_USER_AGENT'] ; - - if ( strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false ) - { - $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3) ; - return ($iVersion >= 5.5) ; - } - else if ( strpos($sAgent, 'Gecko/') !== false ) - { - $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ; - return ($iVersion >= 20030210) ; - } - else - return false ; + return FCKeditor_IsCompatibleBrowser() ; } - function GetConfigFieldString() + /** + * Get settings from Config array as a single string. + * + * @access protected + * @return string + */ + public function GetConfigFieldString() { $sParams = '' ; $bFirst = true ; @@ -146,7 +237,15 @@ class FCKeditor return $sParams ; } - function EncodeConfig( $valueToEncode ) + /** + * Encode characters that may break the configuration string + * generated by GetConfigFieldString(). + * + * @access protected + * @param string $valueToEncode + * @return string + */ + public function EncodeConfig( $valueToEncode ) { $chars = array( '&' => '%26', @@ -156,5 +255,3 @@ class FCKeditor return strtr( $valueToEncode, $chars ) ; } } - -?> \ No newline at end of file diff --git a/static/fckeditor/fckpackager.xml b/static/contrib/fckeditor-2.6.3/fckpackager.xml similarity index 80% rename from static/fckeditor/fckpackager.xml rename to static/contrib/fckeditor-2.6.3/fckpackager.xml index 3cae595..396106c 100644 --- a/static/fckeditor/fckpackager.xml +++ b/static/contrib/fckeditor-2.6.3/fckpackager.xml @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/fckeditor/fcktemplates.xml b/static/contrib/fckeditor-2.6.3/fcktemplates.xml similarity index 94% rename from static/fckeditor/fcktemplates.xml rename to static/contrib/fckeditor-2.6.3/fcktemplates.xml index 8761062..4c5b55a 100644 --- a/static/fckeditor/fcktemplates.xml +++ b/static/contrib/fckeditor-2.6.3/fcktemplates.xml @@ -1,7 +1,7 @@ + +function FCKeditor_IsCompatibleBrowser() +{ + sAgent = lCase( cgi.HTTP_USER_AGENT ); + isCompatibleBrowser = false; + + // check for Internet Explorer ( >= 5.5 ) + if( find( "msie", sAgent ) and not find( "mac", sAgent ) and not find( "opera", sAgent ) ) + { + // try to extract IE version + stResult = reFind( "msie ([5-9]\.[0-9])", sAgent, 1, true ); + if( arrayLen( stResult.pos ) eq 2 ) + { + // get IE Version + sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] ); + if( sBrowserVersion GTE 5.5 ) + isCompatibleBrowser = true; + } + } + // check for Gecko ( >= 20030210+ ) + else if( find( "gecko/", sAgent ) ) + { + // try to extract Gecko version date + stResult = reFind( "gecko/(200[3-9][0-1][0-9][0-3][0-9])", sAgent, 1, true ); + if( arrayLen( stResult.pos ) eq 2 ) + { + // get Gecko build (i18n date) + sBrowserVersion = mid( sAgent, stResult.pos[2], stResult.len[2] ); + if( sBrowserVersion GTE 20030210 ) + isCompatibleBrowser = true; + } + } + else if( find( "opera/", sAgent ) ) + { + // try to extract Opera version + stResult = reFind( "opera/([0-9]+\.[0-9]+)", sAgent, 1, true ); + if( arrayLen( stResult.pos ) eq 2 ) + { + if ( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 9.5) + isCompatibleBrowser = true; + } + } + else if( find( "applewebkit", sAgent ) ) + { + // try to extract Gecko version date + stResult = reFind( "applewebkit/([0-9]+)", sAgent, 1, true ); + if( arrayLen( stResult.pos ) eq 2 ) + { + if( mid( sAgent, stResult.pos[2], stResult.len[2] ) gte 522 ) + isCompatibleBrowser = true; + } + } + return isCompatibleBrowser; +} + diff --git a/static/fckeditor/license.txt b/static/contrib/fckeditor-2.6.3/license.txt similarity index 98% rename from static/fckeditor/license.txt rename to static/contrib/fckeditor-2.6.3/license.txt index 359ce19..43ac59d 100644 --- a/static/fckeditor/license.txt +++ b/static/contrib/fckeditor-2.6.3/license.txt @@ -1,5 +1,5 @@ FCKeditor - The text editor for Internet - http://www.fckeditor.net -Copyright (C) 2003-2007 Frederico Caldeira Knabben +Copyright (C) 2003-2008 Frederico Caldeira Knabben Licensed under the terms of any of the following licenses at your choice: @@ -1244,4 +1244,3 @@ EXHIBIT A -Mozilla Public License. the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] - diff --git a/static/fckeditor/_samples/afp/fck.afpa b/static/fckeditor/_samples/afp/fck.afpa deleted file mode 100644 index e88a492..0000000 --- a/static/fckeditor/_samples/afp/fck.afpa +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/static/fckeditor/_samples/cfm/sample01.cfm b/static/fckeditor/_samples/cfm/sample01.cfm deleted file mode 100644 index 73b2046..0000000 --- a/static/fckeditor/_samples/cfm/sample01.cfm +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - FCKeditor - Sample - - - - - - - -

    FCKeditor - ColdFusion - Sample 1

    - -This sample displays a normal HTML form with a FCKeditor with full features enabled; invoked by a ColdFusion Custom Tag / Module. -
    -
    - - - - -
    - -
    - -
    - - - -
    - - - - - - - - - - - - - - - -
    Dump of FORM Variables
    FieldNames#FORM.fieldNames#
    #key##HTMLEditFormat(evaluate("FORM.#key#"))#
    -
    -
    - - - - \ No newline at end of file diff --git a/static/fckeditor/_samples/cfm/sample02_mx.cfm b/static/fckeditor/_samples/cfm/sample02_mx.cfm deleted file mode 100644 index 5e42311..0000000 --- a/static/fckeditor/_samples/cfm/sample02_mx.cfm +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - FCKeditor - Sample - - - - - -

    FCKeditor - ColdFusion Component (CFC) - Sample 2

    - -This sample displays a normal HTML form with a FCKeditor with full features enabled; invoked by a ColdFusion Component. -
    - -
    - - - -
    This sample works only with a ColdFusion MX server and higher, because it uses some advantages of this version.
    - -
    - - - // Calculate basepath for FCKeditor. It's in the folder right above _samples - basePath = Left(cgi.script_name, FindNoCase('_samples', cgi.script_name)-1); - - fckEditor = createObject("component", "#basePath#fckeditor"); - fckEditor.instanceName = "myEditor"; - fckEditor.value = 'This is some sample text. You are using
    FCKeditor.'; - fckEditor.basePath = basePath; - fckEditor.width = "100%"; - fckEditor.height = 300; - fckEditor.create(); // create the editor. - - - -
    - -
    -
    - - - - - - \ No newline at end of file diff --git a/static/fckeditor/_samples/html/sampleposteddata.asp b/static/fckeditor/_samples/html/sampleposteddata.asp deleted file mode 100644 index 0979841..0000000 --- a/static/fckeditor/_samples/html/sampleposteddata.asp +++ /dev/null @@ -1,72 +0,0 @@ - - - - - FCKeditor - Samples - Posted Data - - - - - -

    - FCKeditor - Samples - Posted Data

    -
    - This page lists all data posted by the form. -
    -
    - - - - - - <% For Each sForm in Request.Form %> - - - - - <% Next %> -
    - Field Name   - Value
    - - <%=sForm%> - - -
    <%=ModifyForOutput( Request.Form(sForm) )%>
    -
    - - -<% - -' This function is useful only for this sample page se whe can display the -' posted data accordingly. This processing is usually not done on real -' applications, where the posted data must be saved on a DB or file. In those -' cases, no processing must be done, and the data is saved as posted. -Function ModifyForOutput( value ) - - ModifyForOutput = Server.HTMLEncode( Request.Form(sForm) ) - -End Function - -%> diff --git a/static/fckeditor/_samples/html/sampleposteddata.html b/static/fckeditor/_samples/html/sampleposteddata.html deleted file mode 100644 index db765ef..0000000 --- a/static/fckeditor/_samples/html/sampleposteddata.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - FCKeditor - Samples - Posted Data - - - - - -

    - FCKeditor - Samples - Posted Data -

    -
    - This page lists all data posted by the form. It uses the "QueryString" to search - for data submitted using the "GET" method, so it is limited to 2KB. -
    -
    - - - - - - -
    - Field - Value
    - - diff --git a/static/fckeditor/editor/_source/classes/fckdomrange.js b/static/fckeditor/editor/_source/classes/fckdomrange.js deleted file mode 100644 index 0471336..0000000 --- a/static/fckeditor/editor/_source/classes/fckdomrange.js +++ /dev/null @@ -1,452 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Class for working with a selection range, much like the W3C DOM Range, but - * it is not intented to be an implementation of the W3C interface. - */ - -var FCKDomRange = function( sourceWindow ) -{ - this.Window = sourceWindow ; -} - -FCKDomRange.prototype = -{ - - _UpdateElementInfo : function() - { - if ( !this._Range ) - this.Release( true ) ; - else - { - var eStart = this._Range.startContainer ; - var eEnd = this._Range.endContainer ; - - var oElementPath = new FCKElementPath( eStart ) ; - this.StartContainer = oElementPath.LastElement ; - this.StartBlock = oElementPath.Block ; - this.StartBlockLimit = oElementPath.BlockLimit ; - - if ( eStart != eEnd ) - oElementPath = new FCKElementPath( eEnd ) ; - this.EndContainer = oElementPath.LastElement ; - this.EndBlock = oElementPath.Block ; - this.EndBlockLimit = oElementPath.BlockLimit ; - } - }, - - CreateRange : function() - { - return new FCKW3CRange( this.Window.document ) ; - }, - - DeleteContents : function() - { - if ( this._Range ) - { - this._Range.deleteContents() ; - this._UpdateElementInfo() ; - } - }, - - ExtractContents : function() - { - if ( this._Range ) - { - var docFrag = this._Range.extractContents() ; - this._UpdateElementInfo() ; - return docFrag ; - } - }, - - CheckIsCollapsed : function() - { - if ( this._Range ) - return this._Range.collapsed ; - }, - - Collapse : function( toStart ) - { - if ( this._Range ) - this._Range.collapse( toStart ) ; - - this._UpdateElementInfo() ; - }, - - Clone : function() - { - var oClone = FCKTools.CloneObject( this ) ; - - if ( this._Range ) - oClone._Range = this._Range.cloneRange() ; - - return oClone ; - }, - - MoveToNodeContents : function( targetNode ) - { - if ( !this._Range ) - this._Range = this.CreateRange() ; - - this._Range.selectNodeContents( targetNode ) ; - - this._UpdateElementInfo() ; - }, - - MoveToElementStart : function( targetElement ) - { - this.SetStart(targetElement,1) ; - this.SetEnd(targetElement,1) ; - }, - - // Moves to the first editing point inside a element. For example, in a - // element tree like "

    Text

    ", the start editing point - // is "

    ^ Text

    " (inside ). - MoveToElementEditStart : function( targetElement ) - { - var child ; - - while ( ( child = targetElement.firstChild ) && child.nodeType == 1 && FCKListsLib.EmptyElements[ child.nodeName.toLowerCase() ] == null ) - targetElement = child ; - - this.MoveToElementStart( targetElement ) ; - }, - - InsertNode : function( node ) - { - if ( this._Range ) - this._Range.insertNode( node ) ; - }, - - CheckIsEmpty : function( ignoreEndBRs ) - { - if ( this.CheckIsCollapsed() ) - return true ; - - // Inserts the contents of the range in a div tag. - var eToolDiv = this.Window.document.createElement( 'div' ) ; - this._Range.cloneContents().AppendTo( eToolDiv ) ; - - FCKDomTools.TrimNode( eToolDiv, ignoreEndBRs ) ; - - return ( eToolDiv.innerHTML.length == 0 ) ; - }, - - CheckStartOfBlock : function() - { - // Create a clone of the current range. - var oTestRange = this.Clone() ; - - // Collapse it to its start point. - oTestRange.Collapse( true ) ; - - // Move the start boundary to the start of the block. - oTestRange.SetStart( oTestRange.StartBlock || oTestRange.StartBlockLimit, 1 ) ; - - var bIsStartOfBlock = oTestRange.CheckIsEmpty() ; - - oTestRange.Release() ; - - return bIsStartOfBlock ; - }, - - CheckEndOfBlock : function( refreshSelection ) - { - // Create a clone of the current range. - var oTestRange = this.Clone() ; - - // Collapse it to its end point. - oTestRange.Collapse( false ) ; - - // Move the end boundary to the end of the block. - oTestRange.SetEnd( oTestRange.EndBlock || oTestRange.EndBlockLimit, 2 ) ; - - var bIsEndOfBlock = oTestRange.CheckIsCollapsed() ; - - if ( !bIsEndOfBlock ) - { - // Inserts the contents of the range in a div tag. - var eToolDiv = this.Window.document.createElement( 'div' ) ; - oTestRange._Range.cloneContents().AppendTo( eToolDiv ) ; - FCKDomTools.TrimNode( eToolDiv, true ) ; - - // Find out if we are in an empty tree of inline elements, like - bIsEndOfBlock = true ; - var eLastChild = eToolDiv ; - while ( ( eLastChild = eLastChild.lastChild ) ) - { - // Check the following: - // 1. Is there more than one node in the parents children? - // 2. Is the node not an element node? - // 3. Is it not a inline element. - if ( eLastChild.previousSibling || eLastChild.nodeType != 1 || FCKListsLib.InlineChildReqElements[ eLastChild.nodeName.toLowerCase() ] == null ) - { - // So we are not in the end of the range. - bIsEndOfBlock = false ; - break ; - } - } - } - - oTestRange.Release() ; - - if ( refreshSelection ) - this.Select() ; - - return bIsEndOfBlock ; - }, - - CreateBookmark : function() - { - // Create the bookmark info (random IDs). - var oBookmark = - { - StartId : 'fck_dom_range_start_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000), - EndId : 'fck_dom_range_end_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) - } ; - - var oDoc = this.Window.document ; - var eSpan ; - var oClone ; - - // For collapsed ranges, add just the start marker. - if ( !this.CheckIsCollapsed() ) - { - eSpan = oDoc.createElement( 'span' ) ; - eSpan.id = oBookmark.EndId ; - eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations. - - oClone = this.Clone() ; - oClone.Collapse( false ) ; - oClone.InsertNode( eSpan ) ; - } - - eSpan = oDoc.createElement( 'span' ) ; - eSpan.id = oBookmark.StartId ; - eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations. - - oClone = this.Clone() ; - oClone.Collapse( true ) ; - oClone.InsertNode( eSpan ) ; - - return oBookmark ; - }, - - MoveToBookmark : function( bookmark, preserveBookmark ) - { - var oDoc = this.Window.document ; - - var eStartSpan = oDoc.getElementById( bookmark.StartId ) ; - var eEndSpan = oDoc.getElementById( bookmark.EndId ) ; - - this.SetStart( eStartSpan, 3 ) ; - - if ( !preserveBookmark ) - FCKDomTools.RemoveNode( eStartSpan ) ; - - // If collapsed, the start span will not be available. - if ( eEndSpan ) - { - this.SetEnd( eEndSpan, 3 ) ; - - if ( !preserveBookmark ) - FCKDomTools.RemoveNode( eEndSpan ) ; - } - else - this.Collapse( true ) ; - }, - - /* - * Moves the position of the start boundary of the range to a specific position - * relatively to a element. - * @position: - * 1 = After Start ^contents - * 2 = Before End contents^ - * 3 = Before Start ^contents - * 4 = After End contents^ - */ - SetStart : function( targetElement, position ) - { - var oRange = this._Range ; - if ( !oRange ) - oRange = this._Range = this.CreateRange() ; - - switch( position ) - { - case 1 : // After Start ^contents - oRange.setStart( targetElement, 0 ) ; - break ; - - case 2 : // Before End contents^ - oRange.setStart( targetElement, targetElement.childNodes.length ) ; - break ; - - case 3 : // Before Start ^contents - oRange.setStartBefore( targetElement ) ; - break ; - - case 4 : // After End contents^ - oRange.setStartAfter( targetElement ) ; - } - this._UpdateElementInfo() ; - }, - - /* - * Moves the position of the start boundary of the range to a specific position - * relatively to a element. - * @position: - * 1 = After Start ^contents - * 2 = Before End contents^ - * 3 = Before Start ^contents - * 4 = After End contents^ - */ - SetEnd : function( targetElement, position ) - { - var oRange = this._Range ; - if ( !oRange ) - oRange = this._Range = this.CreateRange() ; - - switch( position ) - { - case 1 : // After Start ^contents - oRange.setEnd( targetElement, 0 ) ; - break ; - - case 2 : // Before End contents^ - oRange.setEnd( targetElement, targetElement.childNodes.length ) ; - break ; - - case 3 : // Before Start ^contents - oRange.setEndBefore( targetElement ) ; - break ; - - case 4 : // After End contents^ - oRange.setEndAfter( targetElement ) ; - } - this._UpdateElementInfo() ; - }, - - Expand : function( unit ) - { - var oNode, oSibling ; - - switch ( unit ) - { - case 'block_contents' : - if ( this.StartBlock ) - this.SetStart( this.StartBlock, 1 ) ; - else - { - // Get the start node for the current range. - oNode = this._Range.startContainer ; - - // If it is an element, get the current child node for the range (in the offset). - // If the offset node is not available, the the first one. - if ( oNode.nodeType == 1 ) - { - if ( !( oNode = oNode.childNodes[ this._Range.startOffset ] ) ) - oNode = oNode.firstChild ; - } - - // Not able to defined the current position. - if ( !oNode ) - return ; - - // We must look for the left boundary, relative to the range - // start, which is limited by a block element. - while ( true ) - { - oSibling = oNode.previousSibling ; - - if ( !oSibling ) - { - // Continue if we are not yet in the block limit (inside a , for example). - if ( oNode.parentNode != this.StartBlockLimit ) - oNode = oNode.parentNode ; - else - break ; - } - else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) ) - { - // Continue if the sibling is not a block tag. - oNode = oSibling ; - } - else - break ; - } - - this._Range.setStartBefore( oNode ) ; - } - - if ( this.EndBlock ) - this.SetEnd( this.EndBlock, 2 ) ; - else - { - oNode = this._Range.endContainer ; - if ( oNode.nodeType == 1 ) - oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ; - - if ( !oNode ) - return ; - - // We must look for the right boundary, relative to the range - // end, which is limited by a block element. - while ( true ) - { - oSibling = oNode.nextSibling ; - - if ( !oSibling ) - { - // Continue if we are not yet in the block limit (inide a , for example). - if ( oNode.parentNode != this.EndBlockLimit ) - oNode = oNode.parentNode ; - else - break ; - } - else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) ) - { - // Continue if the sibling is not a block tag. - oNode = oSibling ; - } - else - break ; - } - - this._Range.setEndAfter( oNode ) ; - } - - this._UpdateElementInfo() ; - } - }, - - Release : function( preserveWindow ) - { - if ( !preserveWindow ) - this.Window = null ; - - this.StartContainer = null ; - this.StartBlock = null ; - this.StartBlockLimit = null ; - this.EndContainer = null ; - this.EndBlock = null ; - this.EndBlockLimit = null ; - this._Range = null ; - } -} ; \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckdomrange_ie.js b/static/fckeditor/editor/_source/classes/fckdomrange_ie.js deleted file mode 100644 index 8fd779d..0000000 --- a/static/fckeditor/editor/_source/classes/fckdomrange_ie.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Class for working with a selection range, much like the W3C DOM Range, but - * it is not intented to be an implementation of the W3C interface. - * (IE Implementation) - */ - -FCKDomRange.prototype.MoveToSelection = function() -{ - this.Release( true ) ; - - this._Range = new FCKW3CRange( this.Window.document ) ; - - var oSel = this.Window.document.selection ; - - if ( oSel.type != 'Control' ) - { - // Set the start boundary. - eMarker = this._GetSelectionMarkerTag( true ) ; - this._Range.setStart( eMarker.parentNode, FCKDomTools.GetIndexOf( eMarker ) ) ; - eMarker.parentNode.removeChild( eMarker ) ; - - // Set the end boundary. - var eMarker = this._GetSelectionMarkerTag( false ) ; - this._Range.setEnd( eMarker.parentNode, FCKDomTools.GetIndexOf( eMarker ) ) ; - eMarker.parentNode.removeChild( eMarker ) ; - - this._UpdateElementInfo() ; - } - else - { - var oControl = oSel.createRange().item(0) ; - - if ( oControl ) - { - this._Range.setStartBefore( oControl ) ; - this._Range.setEndAfter( oControl ) ; - this._UpdateElementInfo() ; - } - } -} - -FCKDomRange.prototype.Select = function() -{ - if ( this._Range ) - { - var bIsCollapsed = this.CheckIsCollapsed() ; - - // Create marker tags for the start and end boundaries. - var eStartMarker = this._GetRangeMarkerTag( true ) ; - - if ( !bIsCollapsed ) - var eEndMarker = this._GetRangeMarkerTag( false ) ; - - // Create the main range which will be used for the selection. - var oIERange = this.Window.document.body.createTextRange() ; - - // Position the range at the start boundary. - oIERange.moveToElementText( eStartMarker ) ; - oIERange.moveStart( 'character', 1 ) ; - - if ( !bIsCollapsed ) - { - // Create a tool range for the end. - var oIERangeEnd = this.Window.document.body.createTextRange() ; - - // Position the tool range at the end. - oIERangeEnd.moveToElementText( eEndMarker ) ; - - // Move the end boundary of the main range to match the tool range. - oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ; - oIERange.moveEnd( 'character', -1 ) ; - } - - // Remove the markers (reset the position, because of the changes in the DOM tree). - this._Range.setStartBefore( eStartMarker ) ; - eStartMarker.parentNode.removeChild( eStartMarker ) ; - - if ( bIsCollapsed ) - { - // The following trick is needed so IE makes collapsed selections - // inside empty blocks visible (expands the block). - try - { - oIERange.pasteHTML(' ') ; - oIERange.moveStart( 'character', -1 ) ; - } - catch (e){} - oIERange.select() ; - oIERange.pasteHTML('') ; - } - else - { - this._Range.setEndBefore( eEndMarker ) ; - eEndMarker.parentNode.removeChild( eEndMarker ) ; - oIERange.select() ; - } - } -} - -FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart ) -{ - // Get a range for the start boundary. - var oRange = this.Window.document.selection.createRange() ; - oRange.collapse( toStart === true ) ; - - // Paste a marker element at the collapsed range and get it from the DOM. - var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ; - oRange.pasteHTML( '' ) ; - return this.Window.document.getElementById( sMarkerId ) ; -} - -FCKDomRange.prototype._GetRangeMarkerTag = function( toStart ) -{ - // Get a range for the start boundary. - var oRange = this._Range ; - - // insertNode() will add the node at the beginning of the Range, updating - // the endOffset if necessary. So, we can work with the current range in this case. - if ( !toStart ) - { - oRange = oRange.cloneRange() ; - oRange.collapse( toStart === true ) ; - } - - var eSpan = this.Window.document.createElement( 'span' ) ; - eSpan.innerHTML = ' ' ; - oRange.insertNode( eSpan ) ; - - return eSpan ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckeditingarea.js b/static/fckeditor/editor/_source/classes/fckeditingarea.js deleted file mode 100644 index 4d2ee09..0000000 --- a/static/fckeditor/editor/_source/classes/fckeditingarea.js +++ /dev/null @@ -1,253 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKEditingArea Class: renders an editable area. - */ - -/** - * @constructor - * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted. - */ -var FCKEditingArea = function( targetElement ) -{ - this.TargetElement = targetElement ; - this.Mode = FCK_EDITMODE_WYSIWYG ; - - if ( FCK.IECleanup ) - FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ; -} - - -/** - * @param {String} html The complete HTML for the page, including DOCTYPE and the tag. - */ -FCKEditingArea.prototype.Start = function( html, secondCall ) -{ - var eTargetElement = this.TargetElement ; - var oTargetDocument = FCKTools.GetElementDocument( eTargetElement ) ; - - // Remove all child nodes from the target. - while( eTargetElement.childNodes.length > 0 ) - eTargetElement.removeChild( eTargetElement.childNodes[0] ) ; - - if ( this.Mode == FCK_EDITMODE_WYSIWYG ) - { - // Create the editing area IFRAME. - var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ; - oIFrame.src = 'javascript:void(0)' ; - oIFrame.frameBorder = 0 ; - oIFrame.width = oIFrame.height = '100%' ; - - // Append the new IFRAME to the target. - eTargetElement.appendChild( oIFrame ) ; - - // IE has a bug with the tag... it must have a closer, - // otherwise the all sucessive tags will be set as children nodes of the . - if ( FCKBrowserInfo.IsIE ) - html = html.replace( /(]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1>' ) ; - else if ( !secondCall ) - { - // If nothing in the body, place a BOGUS tag so the cursor will appear. - if ( FCKBrowserInfo.IsGecko ) - html = html.replace( /(]*>)\s*(<\/body>)/i, '$1' + GECKO_BOGUS + '$2' ) ; - - // Gecko moves some tags out of the body to the head, so we must use - // innerHTML to set the body contents (SF BUG 1526154). - - // Extract the BODY contents from the html. - var oMatch = html.match( FCKRegexLib.BodyContents ) ; - - if ( oMatch ) - { - html = - oMatch[1] + // This is the HTML until the tag, inclusive. - ' ' + - oMatch[3] ; // This is the HTML from the tag, inclusive. - - this._BodyHTML = oMatch[2] ; // This is the BODY tag contents. - } - else - this._BodyHTML = html ; // Invalid HTML input. - } - - // Get the window and document objects used to interact with the newly created IFRAME. - this.Window = oIFrame.contentWindow ; - - // IE: Avoid JavaScript errors thrown by the editing are source (like tags events). - // TODO: This error handler is not being fired. - // this.Window.onerror = function() { alert( 'Error!' ) ; return true ; } - - var oDoc = this.Document = this.Window.document ; - - oDoc.open() ; - oDoc.write( html ) ; - oDoc.close() ; - - // Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it - // will magicaly work. - if ( FCKBrowserInfo.IsGecko10 && !secondCall ) - { - this.Start( html, true ) ; - return ; - } - - this.Window._FCKEditingArea = this ; - - // FF 1.0.x is buggy... we must wait a lot to enable editing because - // sometimes the content simply disappears, for example when pasting - // "bla1!!bla2" in the source and then switching - // back to design. - if ( FCKBrowserInfo.IsGecko10 ) - this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ; - else - FCKEditingArea_CompleteStart.call( this.Window ) ; - } - else - { - var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ; - eTextarea.className = 'SourceField' ; - eTextarea.dir = 'ltr' ; - eTextarea.style.width = eTextarea.style.height = '100%' ; - eTextarea.style.border = 'none' ; - eTargetElement.appendChild( eTextarea ) ; - - eTextarea.value = html ; - - // Fire the "OnLoad" event. - FCKTools.RunFunction( this.OnLoad ) ; - } -} - -// "this" here is FCKEditingArea.Window -function FCKEditingArea_CompleteStart() -{ - // Of Firefox, the DOM takes a little to become available. So we must wait for it in a loop. - if ( !this.document.body ) - { - this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ; - return ; - } - - var oEditorArea = this._FCKEditingArea ; - oEditorArea.MakeEditable() ; - - // Fire the "OnLoad" event. - FCKTools.RunFunction( oEditorArea.OnLoad ) ; -} - -FCKEditingArea.prototype.MakeEditable = function() -{ - var oDoc = this.Document ; - - if ( FCKBrowserInfo.IsIE ) - { - oDoc.body.contentEditable = true ; - - /* The following commands don't throw errors, but have no effect. - oDoc.execCommand( 'AutoDetect', false, false ) ; - oDoc.execCommand( 'KeepSelection', false, true ) ; - */ - } - else - { - try - { - // Disable Firefox 2 Spell Checker. - oDoc.body.spellcheck = ( this.FFSpellChecker !== false ) ; - - if ( this._BodyHTML ) - { - oDoc.body.innerHTML = this._BodyHTML ; - this._BodyHTML = null ; - } - - oDoc.designMode = 'on' ; - - // Tell Gecko to use or not the tag for the bold, italic and underline. - try - { - oDoc.execCommand( 'styleWithCSS', false, FCKConfig.GeckoUseSPAN ) ; - } - catch (e) - { - // As evidenced here, useCSS is deprecated in favor of styleWithCSS: - // http://www.mozilla.org/editor/midas-spec.html - oDoc.execCommand( 'useCSS', false, !FCKConfig.GeckoUseSPAN ) ; - } - - // Analysing Firefox 1.5 source code, it seams that there is support for a - // "insertBrOnReturn" command. Applying it gives no error, but it doesn't - // gives the same behavior that you have with IE. It works only if you are - // already inside a paragraph and it doesn't render correctly in the first enter. - // oDoc.execCommand( 'insertBrOnReturn', false, false ) ; - - // Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez) - oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ; - - // Disable the standard table editing features of Firefox. - oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ; - } - catch (e) {} - } -} - -FCKEditingArea.prototype.Focus = function() -{ - try - { - if ( this.Mode == FCK_EDITMODE_WYSIWYG ) - { - // The following check is important to avoid IE entering in a focus loop. Ref: - // http://sourceforge.net/tracker/index.php?func=detail&aid=1567060&group_id=75348&atid=543653 - if ( FCKBrowserInfo.IsIE && this.Document.hasFocus() ) - return ; - - if ( FCKBrowserInfo.IsSafari ) - this.IFrame.focus() ; - else - { - this.Window.focus() ; - } - } - else - { - var oDoc = FCKTools.GetElementDocument( this.Textarea ) ; - if ( (!oDoc.hasFocus || oDoc.hasFocus() ) && oDoc.activeElement == this.Textarea ) - return ; - - this.Textarea.focus() ; - } - } - catch(e) {} -} - -function FCKEditingArea_Cleanup() -{ - this.TargetElement = null ; - this.IFrame = null ; - this.Document = null ; - this.Textarea = null ; - - if ( this.Window ) - { - this.Window._FCKEditingArea = null ; - this.Window = null ; - } -} diff --git a/static/fckeditor/editor/_source/classes/fckenterkey.js b/static/fckeditor/editor/_source/classes/fckenterkey.js deleted file mode 100644 index 547b0ed..0000000 --- a/static/fckeditor/editor/_source/classes/fckenterkey.js +++ /dev/null @@ -1,556 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Controls the [Enter] keystroke behavior in a document. - */ - -/* - * Constructor. - * @targetDocument : the target document. - * @enterMode : the behavior for the keystroke. - * May be "p", "div", "br". Default is "p". - * @shiftEnterMode : the behavior for the + keystroke. - * May be "p", "div", "br". Defaults to "br". - */ -var FCKEnterKey = function( targetWindow, enterMode, shiftEnterMode ) -{ - this.Window = targetWindow ; - this.EnterMode = enterMode || 'p' ; - this.ShiftEnterMode = shiftEnterMode || 'br' ; - - // Setup the Keystroke Handler. - var oKeystrokeHandler = new FCKKeystrokeHandler( false ) ; - oKeystrokeHandler._EnterKey = this ; - oKeystrokeHandler.OnKeystroke = FCKEnterKey_OnKeystroke ; - - oKeystrokeHandler.SetKeystrokes( [ - [ 13 , 'Enter' ], - [ SHIFT + 13, 'ShiftEnter' ], - [ 8 , 'Backspace' ], - [ 46 , 'Delete' ] - ] ) ; - - oKeystrokeHandler.AttachToElement( targetWindow.document ) ; -} - - -function FCKEnterKey_OnKeystroke( keyCombination, keystrokeValue ) -{ - var oEnterKey = this._EnterKey ; - - try - { - switch ( keystrokeValue ) - { - case 'Enter' : - return oEnterKey.DoEnter() ; - break ; - - case 'ShiftEnter' : - return oEnterKey.DoShiftEnter() ; - break ; - - case 'Backspace' : - return oEnterKey.DoBackspace() ; - break ; - - case 'Delete' : - return oEnterKey.DoDelete() ; - } - } - catch (e) - { - // If for any reason we are not able to handle it, go - // ahead with the browser default behavior. - } - - return false ; -} - -/* - * Executes the key behavior. - */ -FCKEnterKey.prototype.DoEnter = function( mode, hasShift ) -{ - this._HasShift = ( hasShift === true ) ; - - var sMode = mode || this.EnterMode ; - - if ( sMode == 'br' ) - return this._ExecuteEnterBr() ; - else - return this._ExecuteEnterBlock( sMode ) ; -} - -/* - * Executes the + key behavior. - */ -FCKEnterKey.prototype.DoShiftEnter = function() -{ - return this.DoEnter( this.ShiftEnterMode, true ) ; -} - -/* - * Executes the key behavior. - */ -FCKEnterKey.prototype.DoBackspace = function() -{ - var bCustom = false ; - - // Get the current selection. - var oRange = new FCKDomRange( this.Window ) ; - oRange.MoveToSelection() ; - - if ( !oRange.CheckIsCollapsed() ) - return false ; - - var oStartBlock = oRange.StartBlock ; - var oEndBlock = oRange.EndBlock ; - - // The selection boundaries must be in the same "block limit" element - if ( oRange.StartBlockLimit == oRange.EndBlockLimit && oStartBlock && oEndBlock ) - { - if ( !oRange.CheckIsCollapsed() ) - { - var bEndOfBlock = oRange.CheckEndOfBlock() ; - - oRange.DeleteContents() ; - - if ( oStartBlock != oEndBlock ) - { - oRange.SetStart(oEndBlock,1) ; - oRange.SetEnd(oEndBlock,1) ; - -// if ( bEndOfBlock ) -// oEndBlock.parentNode.removeChild( oEndBlock ) ; - } - - oRange.Select() ; - - bCustom = ( oStartBlock == oEndBlock ) ; - } - - if ( oRange.CheckStartOfBlock() ) - { - var oCurrentBlock = oRange.StartBlock ; - - var ePrevious = FCKDomTools.GetPreviousSourceElement( oCurrentBlock, true, [ 'BODY', oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ; - - bCustom = this._ExecuteBackspace( oRange, ePrevious, oCurrentBlock ) ; - } - else if ( FCKBrowserInfo.IsGecko ) - { - // Firefox looses the selection when executing CheckStartOfBlock, so we must reselect. - oRange.Select() ; - } - } - - oRange.Release() ; - return bCustom ; -} - -FCKEnterKey.prototype._ExecuteBackspace = function( range, previous, currentBlock ) -{ - var bCustom = false ; - - // We could be in a nested LI. - if ( !previous && currentBlock && currentBlock.nodeName.IEquals( 'LI' ) && currentBlock.parentNode.parentNode.nodeName.IEquals( 'LI' ) ) - { - this._OutdentWithSelection( currentBlock, range ) ; - return true ; - } - - if ( previous && previous.nodeName.IEquals( 'LI' ) ) - { - var oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ; - - while ( oNestedList ) - { - previous = FCKDomTools.GetLastChild( oNestedList, 'LI' ) ; - oNestedList = FCKDomTools.GetLastChild( previous, ['UL','OL'] ) ; - } - } - - if ( previous && currentBlock ) - { - // If we are in a LI, and the previous block is not an LI, we must outdent it. - if ( currentBlock.nodeName.IEquals( 'LI' ) && !previous.nodeName.IEquals( 'LI' ) ) - { - this._OutdentWithSelection( currentBlock, range ) ; - return true ; - } - - // Take a reference to the parent for post processing cleanup. - var oCurrentParent = currentBlock.parentNode ; - - var sPreviousName = previous.nodeName.toLowerCase() ; - if ( FCKListsLib.EmptyElements[ sPreviousName ] != null || sPreviousName == 'table' ) - { - FCKDomTools.RemoveNode( previous ) ; - bCustom = true ; - } - else - { - // Remove the current block. - FCKDomTools.RemoveNode( currentBlock ) ; - - // Remove any empty tag left by the block removal. - while ( oCurrentParent.innerHTML.Trim().length == 0 ) - { - var oParent = oCurrentParent.parentNode ; - oParent.removeChild( oCurrentParent ) ; - oCurrentParent = oParent ; - } - - // Cleanup the previous and the current elements. - FCKDomTools.TrimNode( currentBlock ) ; - FCKDomTools.TrimNode( previous ) ; - - // Append a space to the previous. - // Maybe it is not always desirable... - // previous.appendChild( this.Window.document.createTextNode( ' ' ) ) ; - - // Set the range to the end of the previous element and bookmark it. - range.SetStart( previous, 2 ) ; - range.Collapse( true ) ; - var oBookmark = range.CreateBookmark() ; - - // Move the contents of the block to the previous element and delete it. - FCKDomTools.MoveChildren( currentBlock, previous ) ; - - // Place the selection at the bookmark. - range.MoveToBookmark( oBookmark ) ; - range.Select() ; - - bCustom = true ; - } - } - - return bCustom ; -} - -/* - * Executes the key behavior. - */ -FCKEnterKey.prototype.DoDelete = function() -{ - // The has the same effect as the , so we have the same - // results if we just move to the next block and apply the same logic. - - var bCustom = false ; - - // Get the current selection. - var oRange = new FCKDomRange( this.Window ) ; - oRange.MoveToSelection() ; - - // There is just one special case for collapsed selections at the end of a block. - if ( oRange.CheckIsCollapsed() && oRange.CheckEndOfBlock( FCKBrowserInfo.IsGeckoLike ) ) - { - var oCurrentBlock = oRange.StartBlock ; - - var eNext = FCKDomTools.GetNextSourceElement( oCurrentBlock, true, [ oRange.StartBlockLimit.nodeName ], ['UL','OL'] ) ; - - bCustom = this._ExecuteBackspace( oRange, oCurrentBlock, eNext ) ; - } - - oRange.Release() ; - return bCustom ; -} - -FCKEnterKey.prototype._ExecuteEnterBlock = function( blockTag, range ) -{ - // Get the current selection. - var oRange = range || new FCKDomRange( this.Window ) ; - - // If we don't have a range, move it to the selection. - if ( !range ) - oRange.MoveToSelection() ; - - // The selection boundaries must be in the same "block limit" element. - if ( oRange.StartBlockLimit == oRange.EndBlockLimit ) - { - // If the StartBlock or EndBlock are not available (for text without a - // block tag), we must fix them, by moving the text to a block. - if ( !oRange.StartBlock ) - this._FixBlock( oRange, true, blockTag ) ; - - if ( !oRange.EndBlock ) - this._FixBlock( oRange, false, blockTag ) ; - - // Get the current blocks. - var eStartBlock = oRange.StartBlock ; - var eEndBlock = oRange.EndBlock ; - - // Delete the current selection. - if ( !oRange.CheckIsEmpty() ) - oRange.DeleteContents() ; - - // If the selection boundaries are in the same block element - if ( eStartBlock == eEndBlock ) - { - var eNewBlock ; - - var bIsStartOfBlock = oRange.CheckStartOfBlock() ; - var bIsEndOfBlock = oRange.CheckEndOfBlock() ; - - if ( bIsStartOfBlock && !bIsEndOfBlock ) - { - eNewBlock = eStartBlock.cloneNode(false) ; - - if ( FCKBrowserInfo.IsGeckoLike ) - eNewBlock.innerHTML = GECKO_BOGUS ; - - // Place the new block before the current block element. - eStartBlock.parentNode.insertBefore( eNewBlock, eStartBlock ) ; - - // This is tricky, but to make the new block visible correctly - // we must select it. - if ( FCKBrowserInfo.IsIE ) - { - // Move the selection to the new block. - oRange.MoveToNodeContents( eNewBlock ) ; - - oRange.Select() ; - } - - // Move the selection to the new block. - oRange.MoveToElementEditStart( eStartBlock ) ; - } - else - { - // Check if the selection is at the end of the block. - if ( bIsEndOfBlock ) - { - var sStartBlockTag = eStartBlock.tagName.toUpperCase() ; - - // If the entire block is selected, and we are in a LI, let's decrease its indentation. - if ( bIsStartOfBlock && sStartBlockTag == 'LI' ) - { - this._OutdentWithSelection( eStartBlock, oRange ) ; - oRange.Release() ; - return true ; - } - else - { - // If is a header tag, or we are in a Shift+Enter (#77), - // create a new block element. - if ( (/^H[1-6]$/).test( sStartBlockTag ) || this._HasShift ) - eNewBlock = this.Window.document.createElement( blockTag ) ; - // Otherwise, duplicate the current block. - else - { - eNewBlock = eStartBlock.cloneNode(false) ; - this._RecreateEndingTree( eStartBlock, eNewBlock ) ; - } - - if ( FCKBrowserInfo.IsGeckoLike ) - { - eNewBlock.innerHTML = GECKO_BOGUS ; - - // If the entire block is selected, let's add a bogus in the start block. - if ( bIsStartOfBlock ) - eStartBlock.innerHTML = GECKO_BOGUS ; - } - } - } - else - { - // Extract the contents of the block from the selection point to the end of its contents. - oRange.SetEnd( eStartBlock, 2 ) ; - var eDocFrag = oRange.ExtractContents() ; - - // Duplicate the block element after it. - eNewBlock = eStartBlock.cloneNode(false) ; - - // It could be that we are in a LI with a child UL/OL. Insert a bogus to give us space to type. - FCKDomTools.TrimNode( eDocFrag.RootNode ) ; - if ( eDocFrag.RootNode.firstChild.nodeType == 1 && eDocFrag.RootNode.firstChild.tagName.toUpperCase().Equals( 'UL', 'OL' ) ) - eNewBlock.innerHTML = GECKO_BOGUS ; - - // Place the extracted contents in the duplicated block. - eDocFrag.AppendTo( eNewBlock ) ; - - if ( FCKBrowserInfo.IsGecko ) - { - // In Gecko, the last child node must be a bogus
    . - this._AppendBogusBr( eStartBlock ) ; - this._AppendBogusBr( eNewBlock ) ; - } - } - - if ( eNewBlock ) - { - FCKDomTools.InsertAfterNode( eStartBlock, eNewBlock ) ; - - // Move the selection to the new block. - oRange.MoveToElementEditStart( eNewBlock ) ; - - if ( FCKBrowserInfo.IsGeckoLike ) - eNewBlock.scrollIntoView( false ) ; - } - } - } - else - { - // Move the selection to the end block. - oRange.MoveToElementEditStart( eEndBlock ) ; - } - - oRange.Select() ; - } - - // Release the resources used by the range. - oRange.Release() ; - - return true ; -} - -FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag ) -{ - // Get the current selection. - var oRange = new FCKDomRange( this.Window ) ; - oRange.MoveToSelection() ; - - // The selection boundaries must be in the same "block limit" element. - if ( oRange.StartBlockLimit == oRange.EndBlockLimit ) - { - oRange.DeleteContents() ; - - // Get the new selection (it is collapsed at this point). - oRange.MoveToSelection() ; - - var bIsStartOfBlock = oRange.CheckStartOfBlock() ; - var bIsEndOfBlock = oRange.CheckEndOfBlock() ; - - var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ; - - var bHasShift = this._HasShift ; - - if ( !bHasShift && sStartBlockTag == 'LI' ) - return this._ExecuteEnterBlock( null, oRange ) ; - - // If we are at the end of a header block. - if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) ) - { - FCKDebug.Output( 'BR - Header' ) ; - - // Insert a BR after the current paragraph. - FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ; - - // The space is required by Gecko only to make the cursor blink. - if ( FCKBrowserInfo.IsGecko ) - FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ; - - // IE and Gecko have different behaviors regarding the position. - oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ; - } - else - { - FCKDebug.Output( 'BR - No Header' ) ; - - var eBr = this.Window.document.createElement( 'br' ) ; - - oRange.InsertNode( eBr ) ; - - // The space is required by Gecko only to make the cursor blink. - if ( FCKBrowserInfo.IsGecko ) - FCKDomTools.InsertAfterNode( eBr, this.Window.document.createTextNode( '' ) ) ; - - // If we are at the end of a block, we must be sure the bogus node is available in that block. - if ( bIsEndOfBlock && FCKBrowserInfo.IsGeckoLike ) - this._AppendBogusBr( eBr.parentNode ) ; - - if ( FCKBrowserInfo.IsIE ) - oRange.SetStart( eBr, 4 ) ; - else - oRange.SetStart( eBr.nextSibling, 1 ) ; - - } - - // This collapse guarantees the cursor will be blinking. - oRange.Collapse( true ) ; - - oRange.Select() ; - } - - // Release the resources used by the range. - oRange.Release() ; - - return true ; -} - -// Transform a block without a block tag in a valid block (orphan text in the body or td, usually). -FCKEnterKey.prototype._FixBlock = function( range, isStart, blockTag ) -{ - // Bookmark the range so we can restore it later. - var oBookmark = range.CreateBookmark() ; - - // Collapse the range to the requested ending boundary. - range.Collapse( isStart ) ; - - // Expands it to the block contents. - range.Expand( 'block_contents' ) ; - - // Create the fixed block. - var oFixedBlock = this.Window.document.createElement( blockTag ) ; - - // Move the contents of the temporary range to the fixed block. - range.ExtractContents().AppendTo( oFixedBlock ) ; - FCKDomTools.TrimNode( oFixedBlock ) ; - - // Insert the fixed block into the DOM. - range.InsertNode( oFixedBlock ) ; - - // Move the range back to the bookmarked place. - range.MoveToBookmark( oBookmark ) ; -} - -// Appends a bogus
    at the end of the element, if not yet available. -FCKEnterKey.prototype._AppendBogusBr = function( element ) -{ - if ( !element ) - return ; - - var eLastChild = FCKTools.GetLastItem( element.getElementsByTagName('br') ) ; - - if ( !eLastChild || eLastChild.getAttribute( 'type', 2 ) != '_moz' ) - element.appendChild( FCKTools.CreateBogusBR( this.Window.document ) ) ; -} - -// Recreate the elements tree at the end of the source block, at the beginning -// of the target block. Eg.: -// If source =

    Some sample text

    then target =

    -// If source =

    Some sample text

    then target =

    -FCKEnterKey.prototype._RecreateEndingTree = function( source, target ) -{ - while ( ( source = source.lastChild ) && source.nodeType == 1 && FCKListsLib.InlineChildReqElements[ source.nodeName.toLowerCase() ] != null ) - target = target.insertBefore( source.cloneNode( false ), target.firstChild ) ; -} - -// Outdents a LI, maintaining the seletion defined on a range. -FCKEnterKey.prototype._OutdentWithSelection = function( li, range ) -{ - var oBookmark = range.CreateBookmark() ; - - FCKListHandler.OutdentListItem( li ) ; - - range.MoveToBookmark( oBookmark ) ; - range.Select() ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckstyledef.js b/static/fckeditor/editor/_source/classes/fckstyledef.js deleted file mode 100644 index 0987b84..0000000 --- a/static/fckeditor/editor/_source/classes/fckstyledef.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKStyleDef Class: represents a single style definition. - */ - -var FCKStyleDef = function( name, element ) -{ - this.Name = name ; - this.Element = element.toUpperCase() ; - this.IsObjectElement = FCKRegexLib.ObjectElements.test( this.Element ) ; - this.Attributes = new Object() ; -} - -FCKStyleDef.prototype.AddAttribute = function( name, value ) -{ - this.Attributes[ name ] = value ; -} - -FCKStyleDef.prototype.GetOpenerTag = function() -{ - var s = '<' + this.Element ; - - for ( var a in this.Attributes ) - s += ' ' + a + '="' + this.Attributes[a] + '"' ; - - return s + '>' ; -} - -FCKStyleDef.prototype.GetCloserTag = function() -{ - return '' ; -} - - -FCKStyleDef.prototype.RemoveFromSelection = function() -{ - if ( FCKSelection.GetType() == 'Control' ) - this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ) ; - else - this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement() ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckstyledef_gecko.js b/static/fckeditor/editor/_source/classes/fckstyledef_gecko.js deleted file mode 100644 index fc14350..0000000 --- a/static/fckeditor/editor/_source/classes/fckstyledef_gecko.js +++ /dev/null @@ -1,119 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKStyleDef Class: represents a single stylke definition. (Gecko specific) - */ - -FCKStyleDef.prototype.ApplyToSelection = function() -{ - if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement ) - { - var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ; - - // Create the main element. - var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ; - - for ( var i = 0 ; i < oSelection.rangeCount ; i++ ) - { - e.appendChild( oSelection.getRangeAt(i).extractContents() ) ; - } - - // Set the attributes. - this._AddAttributes( e ) ; - - // Remove the duplicated elements. - this._RemoveDuplicates( e ) ; - - var oRange = oSelection.getRangeAt(0) ; - oRange.insertNode( e ) ; - } - else - { - var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ; - if ( oControl.tagName == this.Element ) - this._AddAttributes( oControl ) ; - } -} - -FCKStyleDef.prototype._AddAttributes = function( targetElement ) -{ - for ( var a in this.Attributes ) - { - switch ( a.toLowerCase() ) - { - case 'src' : - targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ; - default : - targetElement.setAttribute( a, this.Attributes[a], 0 ) ; - } - } -} - -FCKStyleDef.prototype._RemoveDuplicates = function( parent ) -{ - for ( var i = 0 ; i < parent.childNodes.length ; i++ ) - { - var oChild = parent.childNodes[i] ; - - if ( oChild.nodeType != 1 ) - continue ; - - this._RemoveDuplicates( oChild ) ; - - if ( this.IsEqual( oChild ) ) - FCKTools.RemoveOuterTags( oChild ) ; - } -} - -FCKStyleDef.prototype.IsEqual = function( e ) -{ - if ( e.tagName != this.Element ) - return false ; - - for ( var a in this.Attributes ) - { - if ( e.getAttribute( a ) != this.Attributes[a] ) - return false ; - } - - return true ; -} - -FCKStyleDef.prototype._RemoveMe = function( elementToCheck ) -{ - if ( ! elementToCheck ) - return ; - - var oParent = elementToCheck.parentNode ; - - if ( elementToCheck.nodeType == 1 && this.IsEqual( elementToCheck ) ) - { - if ( this.IsObjectElement ) - { - for ( var a in this.Attributes ) - elementToCheck.removeAttribute( a, 0 ) ; - return ; - } - else - FCKTools.RemoveOuterTags( elementToCheck ) ; - } - - this._RemoveMe( oParent ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckstyledef_ie.js b/static/fckeditor/editor/_source/classes/fckstyledef_ie.js deleted file mode 100644 index 097d4e4..0000000 --- a/static/fckeditor/editor/_source/classes/fckstyledef_ie.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKStyleDef Class: represents a single stylke definition. (IE specific) - */ - -FCKStyleDef.prototype.ApplyToSelection = function() -{ - var oSelection = FCK.ToolbarSet.CurrentInstance.EditorDocument.selection ; - - if ( oSelection.type == 'Text' ) - { - var oRange = oSelection.createRange() ; - - // Create the main element. - var e = document.createElement( this.Element ) ; - e.innerHTML = oRange.htmlText ; - - // Set the attributes. - this._AddAttributes( e ) ; - - // Remove the duplicated elements. - this._RemoveDuplicates( e ) ; - - // Replace the selection with the resulting HTML. - oRange.pasteHTML( e.outerHTML ) ; - } - else if ( oSelection.type == 'Control' ) - { - var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ; - if ( oControl.tagName == this.Element ) - this._AddAttributes( oControl ) ; - } -} - -FCKStyleDef.prototype._AddAttributes = function( targetElement ) -{ - for ( var a in this.Attributes ) - { - switch ( a.toLowerCase() ) - { - case 'style' : - targetElement.style.cssText = this.Attributes[a] ; - break ; - - case 'class' : - targetElement.setAttribute( 'className', this.Attributes[a], 0 ) ; - break ; - - case 'src' : - targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ; - default : - targetElement.setAttribute( a, this.Attributes[a], 0 ) ; - } - } -} - -FCKStyleDef.prototype._RemoveDuplicates = function( parent ) -{ - for ( var i = 0 ; i < parent.children.length ; i++ ) - { - var oChild = parent.children[i] ; - this._RemoveDuplicates( oChild ) ; - - if ( this.IsEqual( oChild ) ) - FCKTools.RemoveOuterTags( oChild ) ; - } -} - -FCKStyleDef.prototype.IsEqual = function( e ) -{ - if ( e.tagName != this.Element ) - return false ; - - for ( var a in this.Attributes ) - { - switch ( a.toLowerCase() ) - { - case 'style' : - if ( e.style.cssText.toLowerCase() != this.Attributes[a].toLowerCase() ) - return false ; - break ; - case 'class' : - if ( e.getAttribute( 'className', 0 ) != this.Attributes[a] ) - return false ; - break ; - default : - if ( e.getAttribute( a, 0 ) != this.Attributes[a] ) - return false ; - } - } - - return true ; -} - -FCKStyleDef.prototype._RemoveMe = function( elementToCheck ) -{ - if ( ! elementToCheck ) - return ; - - var oParent = elementToCheck.parentElement ; - - if ( this.IsEqual( elementToCheck ) ) - { - if ( this.IsObjectElement ) - { - for ( var a in this.Attributes ) - { - switch ( a.toLowerCase() ) - { - case 'class' : - elementToCheck.removeAttribute( 'className', 0 ) ; - break ; - default : - elementToCheck.removeAttribute( a, 0 ) ; - } - } - return ; - } - else - FCKTools.RemoveOuterTags( elementToCheck ) ; - } - - this._RemoveMe( oParent ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckstylesloader.js b/static/fckeditor/editor/_source/classes/fckstylesloader.js deleted file mode 100644 index ae0bf61..0000000 --- a/static/fckeditor/editor/_source/classes/fckstylesloader.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKStylesLoader Class: this class define objects that are responsible - * for loading the styles defined in the XML file. - */ - -var FCKStylesLoader = function() -{ - this.Styles = new Object() ; - this.StyleGroups = new Object() ; - this.Loaded = false ; - this.HasObjectElements = false ; -} - -FCKStylesLoader.prototype.Load = function( stylesXmlUrl ) -{ - // Load the XML file into a FCKXml object. - var oXml = new FCKXml() ; - oXml.LoadUrl( stylesXmlUrl ) ; - - // Get the "Style" nodes defined in the XML file. - var aStyleNodes = oXml.SelectNodes( 'Styles/Style' ) ; - - // Add each style to our "Styles" collection. - for ( var i = 0 ; i < aStyleNodes.length ; i++ ) - { - var sElement = aStyleNodes[i].attributes.getNamedItem('element').value.toUpperCase() ; - - // Create the style definition object. - var oStyleDef = new FCKStyleDef( aStyleNodes[i].attributes.getNamedItem('name').value, sElement ) ; - - if ( oStyleDef.IsObjectElement ) - this.HasObjectElements = true ; - - // Get the attributes defined for the style (if any). - var aAttNodes = oXml.SelectNodes( 'Attribute', aStyleNodes[i] ) ; - - // Add the attributes to the style definition object. - for ( var j = 0 ; j < aAttNodes.length ; j++ ) - { - var sAttName = aAttNodes[j].attributes.getNamedItem('name').value ; - var sAttValue = aAttNodes[j].attributes.getNamedItem('value').value ; - - // IE changes the "style" attribute value when applied to an element - // so we must get the final resulting value (for comparision issues). - if ( sAttName.toLowerCase() == 'style' ) - { - var oTempE = document.createElement( 'SPAN' ) ; - oTempE.style.cssText = sAttValue ; - sAttValue = oTempE.style.cssText ; - } - - oStyleDef.AddAttribute( sAttName, sAttValue ) ; - } - - // Add the style to the "Styles" collection using it's name as the key. - this.Styles[ oStyleDef.Name ] = oStyleDef ; - - // Add the style to the "StyleGroups" collection. - var aGroup = this.StyleGroups[sElement] ; - if ( aGroup == null ) - { - this.StyleGroups[sElement] = new Array() ; - aGroup = this.StyleGroups[sElement] ; - } - aGroup[aGroup.length] = oStyleDef ; - } - - this.Loaded = true ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js b/static/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js deleted file mode 100644 index 11318ea..0000000 --- a/static/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js +++ /dev/null @@ -1,114 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKToolbarPanelButton Class: Handles the Fonts combo selector. - */ - -var FCKToolbarFontFormatCombo = function( tooltip, style ) -{ - this.CommandName = 'FontFormat' ; - this.Label = this.GetLabel() ; - this.Tooltip = tooltip ? tooltip : this.Label ; - this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ; - - this.NormalLabel = 'Normal' ; - - this.PanelWidth = 190 ; -} - -// Inherit from FCKToolbarSpecialCombo. -FCKToolbarFontFormatCombo.prototype = new FCKToolbarSpecialCombo ; - - -FCKToolbarFontFormatCombo.prototype.GetLabel = function() -{ - return FCKLang.FontFormat ; -} - -FCKToolbarFontFormatCombo.prototype.CreateItems = function( targetSpecialCombo ) -{ - var oTargetDoc = targetSpecialCombo._Panel.Document ; - - // Add the Editor Area CSS to the panel to create a realistic preview. - FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ; - - // Add ID and Class to the body - if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 ) - oTargetDoc.body.id = FCKConfig.BodyId ; - if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 ) - oTargetDoc.body.className += ' ' + FCKConfig.BodyClass ; - - // Get the format names from the language file. - var aNames = FCKLang['FontFormats'].split(';') ; - var oNames = { - p : aNames[0], - pre : aNames[1], - address : aNames[2], - h1 : aNames[3], - h2 : aNames[4], - h3 : aNames[5], - h4 : aNames[6], - h5 : aNames[7], - h6 : aNames[8], - div : aNames[9] - } ; - - // Get the available formats from the configuration file. - var aTags = FCKConfig.FontFormats.split(';') ; - - for ( var i = 0 ; i < aTags.length ; i++ ) - { - // Support for DIV in Firefox has been reintroduced on version 2.2. -// if ( aTags[i] == 'div' && FCKBrowserInfo.IsGecko ) -// continue ; - - var sTag = aTags[i] ; - var sLabel = oNames[sTag] ; - - if ( sTag == 'p' ) - this.NormalLabel = sLabel ; - - this._Combo.AddItem( sTag, '
    <' + sTag + '>' + sLabel + '
    ', sLabel ) ; - } -} - -if ( FCKBrowserInfo.IsIE ) -{ - FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( combo, value ) - { -// FCKDebug.Output( 'FCKToolbarFontFormatCombo Value: ' + value ) ; - - // IE returns normal for DIV and P, so to avoid confusion, we will not show it if normal. - if ( value == this.NormalLabel ) - { - if ( combo.Label != ' ' ) - combo.DeselectAll(true) ; - } - else - { - if ( this._LastValue == value ) - return ; - - combo.SelectItemByLabel( value, true ) ; - } - - this._LastValue = value ; - } -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js b/static/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js deleted file mode 100644 index f11293e..0000000 --- a/static/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js +++ /dev/null @@ -1,47 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKToolbarPanelButton Class: Handles the Fonts combo selector. - */ - -var FCKToolbarFontsCombo = function( tooltip, style ) -{ - this.CommandName = 'FontName' ; - this.Label = this.GetLabel() ; - this.Tooltip = tooltip ? tooltip : this.Label ; - this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ; -} - -// Inherit from FCKToolbarSpecialCombo. -FCKToolbarFontsCombo.prototype = new FCKToolbarSpecialCombo ; - - -FCKToolbarFontsCombo.prototype.GetLabel = function() -{ - return FCKLang.Font ; -} - -FCKToolbarFontsCombo.prototype.CreateItems = function( targetSpecialCombo ) -{ - var aFonts = FCKConfig.FontNames.split(';') ; - - for ( var i = 0 ; i < aFonts.length ; i++ ) - this._Combo.AddItem( aFonts[i], '' + aFonts[i] + '' ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js b/static/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js deleted file mode 100644 index 10538cb..0000000 --- a/static/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKToolbarPanelButton Class: Handles the Fonts combo selector. - */ - -var FCKToolbarFontSizeCombo = function( tooltip, style ) -{ - this.CommandName = 'FontSize' ; - this.Label = this.GetLabel() ; - this.Tooltip = tooltip ? tooltip : this.Label ; - this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ; -} - -// Inherit from FCKToolbarSpecialCombo. -FCKToolbarFontSizeCombo.prototype = new FCKToolbarSpecialCombo ; - - -FCKToolbarFontSizeCombo.prototype.GetLabel = function() -{ - return FCKLang.FontSize ; -} - -FCKToolbarFontSizeCombo.prototype.CreateItems = function( targetSpecialCombo ) -{ - targetSpecialCombo.FieldWidth = 70 ; - - var aSizes = FCKConfig.FontSizes.split(';') ; - - for ( var i = 0 ; i < aSizes.length ; i++ ) - { - var aSizeParts = aSizes[i].split('/') ; - this._Combo.AddItem( aSizeParts[0], '' + aSizeParts[1] + '', aSizeParts[1] ) ; - } -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js b/static/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js deleted file mode 100644 index 69951ec..0000000 --- a/static/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js +++ /dev/null @@ -1,111 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKToolbarPanelButton Class: Handles the Fonts combo selector. - */ - -var FCKToolbarStyleCombo = function( tooltip, style ) -{ - this.CommandName = 'Style' ; - this.Label = this.GetLabel() ; - this.Tooltip = tooltip ? tooltip : this.Label ; - this.Style = style ? style : FCK_TOOLBARITEM_ICONTEXT ; -} - -// Inherit from FCKToolbarSpecialCombo. -FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ; - - -FCKToolbarStyleCombo.prototype.GetLabel = function() -{ - return FCKLang.Style ; -} - -FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo ) -{ - var oTargetDoc = targetSpecialCombo._Panel.Document ; - - // Add the Editor Area CSS to the panel so the style classes are previewed correctly. - FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ; - oTargetDoc.body.className += ' ForceBaseFont' ; - - // Add ID and Class to the body - if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 ) - oTargetDoc.body.id = FCKConfig.BodyId ; - if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 ) - oTargetDoc.body.className += ' ' + FCKConfig.BodyClass ; - - - // For some reason Gecko is blocking inside the "RefreshVisibleItems" function. - // The problem is present only in old versions - if ( !( FCKBrowserInfo.IsGecko && FCKBrowserInfo.IsGecko10 ) ) - targetSpecialCombo.OnBeforeClick = this.RefreshVisibleItems ; - - // Add the styles to the special combo. - var aCommandStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Styles ; - for ( var s in aCommandStyles ) - { - var oStyle = aCommandStyles[s] ; - var oItem ; - - if ( oStyle.IsObjectElement ) - oItem = targetSpecialCombo.AddItem( s, s ) ; - else - oItem = targetSpecialCombo.AddItem( s, oStyle.GetOpenerTag() + s + oStyle.GetCloserTag() ) ; - - oItem.Style = oStyle ; - } -} - -FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo ) -{ - // Clear the actual selection. - targetSpecialCombo.DeselectAll() ; - - // Get the active styles. - var aStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetActiveStyles() ; - - if ( aStyles.length > 0 ) - { - // Select the active styles in the combo. - for ( var i = 0 ; i < aStyles.length ; i++ ) - targetSpecialCombo.SelectItem( aStyles[i].Name ) ; - - // Set the combo label to the first style in the collection. - targetSpecialCombo.SetLabelById( aStyles[0].Name ) ; - } - else - targetSpecialCombo.SetLabel('') ; -} - -FCKToolbarStyleCombo.prototype.RefreshVisibleItems = function( targetSpecialCombo ) -{ - if ( FCKSelection.GetType() == 'Control' ) - var sTagName = FCKSelection.GetSelectedElement().tagName ; - - for ( var i in targetSpecialCombo.Items ) - { - var oItem = targetSpecialCombo.Items[i] ; - if ( ( sTagName && oItem.Style.Element == sTagName ) || ( ! sTagName && ! oItem.Style.IsObjectElement ) ) - oItem.style.display = '' ; - else - oItem.style.display = 'none' ; // For some reason Gecko is blocking here. - } -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckxml_gecko.js b/static/fckeditor/editor/_source/classes/fckxml_gecko.js deleted file mode 100644 index c9dc916..0000000 --- a/static/fckeditor/editor/_source/classes/fckxml_gecko.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKXml Class: class to load and manipulate XML files. - */ - -var FCKXml = function() -{} - -FCKXml.prototype.LoadUrl = function( urlToCall ) -{ - this.Error = false ; - var oFCKXml = this ; - - var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ; - oXmlHttp.open( "GET", urlToCall, false ) ; - oXmlHttp.send( null ) ; - - if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) - this.DOMDocument = oXmlHttp.responseXML ; - else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) - this.DOMDocument = oXmlHttp.responseXML ; - else - this.DOMDocument = null ; - - if ( this.DOMDocument == null || this.DOMDocument.firstChild == null ) - { - this.Error = true ; - if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) ) - alert( 'URL requested: "' + urlToCall + '"\r\n' + - 'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' + - 'Response text:\r\n' + oXmlHttp.responseText ) ; - - } -} - -FCKXml.prototype.SelectNodes = function( xpath, contextNode ) -{ - if ( this.Error ) - return new Array() ; - - var aNodeArray = new Array(); - - var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument, - this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ; - if ( xPathResult ) - { - var oNode = xPathResult.iterateNext() ; - while( oNode ) - { - aNodeArray[aNodeArray.length] = oNode ; - oNode = xPathResult.iterateNext(); - } - } - return aNodeArray ; -} - -FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) -{ - if ( this.Error ) - return null ; - - var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument, - this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null); - - if ( xPathResult && xPathResult.singleNodeValue ) - return xPathResult.singleNodeValue ; - else - return null ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/classes/fckxml_ie.js b/static/fckeditor/editor/_source/classes/fckxml_ie.js deleted file mode 100644 index 5efc12f..0000000 --- a/static/fckeditor/editor/_source/classes/fckxml_ie.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKXml Class: class to load and manipulate XML files. - * (IE specific implementation) - */ - -var FCKXml = function() -{ - this.Error = false ; -} - -FCKXml.prototype.LoadUrl = function( urlToCall ) -{ - this.Error = false ; - - var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ; - - if ( !oXmlHttp ) - { - this.Error = true ; - return ; - } - - oXmlHttp.open( "GET", urlToCall, false ) ; - - oXmlHttp.send( null ) ; - - if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) - this.DOMDocument = oXmlHttp.responseXML ; - else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 ) - { - this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ; - this.DOMDocument.async = false ; - this.DOMDocument.resolveExternals = false ; - this.DOMDocument.loadXML( oXmlHttp.responseText ) ; - } - else - { - this.DOMDocument = null ; - } - - if ( this.DOMDocument == null || this.DOMDocument.firstChild == null ) - { - this.Error = true ; - if (window.confirm( 'Error loading "' + urlToCall + '"\r\nDo you want to see more info?' ) ) - alert( 'URL requested: "' + urlToCall + '"\r\n' + - 'Server response:\r\nStatus: ' + oXmlHttp.status + '\r\n' + - 'Response text:\r\n' + oXmlHttp.responseText ) ; - } -} - -FCKXml.prototype.SelectNodes = function( xpath, contextNode ) -{ - if ( this.Error ) - return new Array() ; - - if ( contextNode ) - return contextNode.selectNodes( xpath ) ; - else - return this.DOMDocument.selectNodes( xpath ) ; -} - -FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) -{ - if ( this.Error ) - return null ; - - if ( contextNode ) - return contextNode.selectSingleNode( xpath ) ; - else - return this.DOMDocument.selectSingleNode( xpath ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/commandclasses/fck_othercommands.js b/static/fckeditor/editor/_source/commandclasses/fck_othercommands.js deleted file mode 100644 index bd97aa9..0000000 --- a/static/fckeditor/editor/_source/commandclasses/fck_othercommands.js +++ /dev/null @@ -1,385 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Definition of other commands that are not available internaly in the - * browser (see FCKNamedCommand). - */ - -// ### General Dialog Box Commands. -var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam ) -{ - this.Name = name ; - this.Title = title ; - this.Url = url ; - this.Width = width ; - this.Height = height ; - - this.GetStateFunction = getStateFunction ; - this.GetStateParam = getStateParam ; - - this.Resizable = false ; -} - -FCKDialogCommand.prototype.Execute = function() -{ - FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, null, null, this.Resizable ) ; -} - -FCKDialogCommand.prototype.GetState = function() -{ - if ( this.GetStateFunction ) - return this.GetStateFunction( this.GetStateParam ) ; - else - return FCK_TRISTATE_OFF ; -} - -// Generic Undefined command (usually used when a command is under development). -var FCKUndefinedCommand = function() -{ - this.Name = 'Undefined' ; -} - -FCKUndefinedCommand.prototype.Execute = function() -{ - alert( FCKLang.NotImplemented ) ; -} - -FCKUndefinedCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} - -// ### FontName -var FCKFontNameCommand = function() -{ - this.Name = 'FontName' ; -} - -FCKFontNameCommand.prototype.Execute = function( fontName ) -{ - if (fontName == null || fontName == "") - { - // TODO: Remove font name attribute. - } - else - FCK.ExecuteNamedCommand( 'FontName', fontName ) ; -} - -FCKFontNameCommand.prototype.GetState = function() -{ - return FCK.GetNamedCommandValue( 'FontName' ) ; -} - -// ### FontSize -var FCKFontSizeCommand = function() -{ - this.Name = 'FontSize' ; -} - -FCKFontSizeCommand.prototype.Execute = function( fontSize ) -{ - if ( typeof( fontSize ) == 'string' ) fontSize = parseInt(fontSize, 10) ; - - if ( fontSize == null || fontSize == '' ) - { - // TODO: Remove font size attribute (Now it works with size 3. Will it work forever?) - FCK.ExecuteNamedCommand( 'FontSize', 3 ) ; - } - else - FCK.ExecuteNamedCommand( 'FontSize', fontSize ) ; -} - -FCKFontSizeCommand.prototype.GetState = function() -{ - return FCK.GetNamedCommandValue( 'FontSize' ) ; -} - -// ### FormatBlock -var FCKFormatBlockCommand = function() -{ - this.Name = 'FormatBlock' ; -} - -FCKFormatBlockCommand.prototype.Execute = function( formatName ) -{ - if ( formatName == null || formatName == '' ) - FCK.ExecuteNamedCommand( 'FormatBlock', '

    ' ) ; - else if ( formatName == 'div' && FCKBrowserInfo.IsGecko ) - FCK.ExecuteNamedCommand( 'FormatBlock', 'div' ) ; - else - FCK.ExecuteNamedCommand( 'FormatBlock', '<' + formatName + '>' ) ; -} - -FCKFormatBlockCommand.prototype.GetState = function() -{ - return FCK.GetNamedCommandValue( 'FormatBlock' ) ; -} - -// ### Preview -var FCKPreviewCommand = function() -{ - this.Name = 'Preview' ; -} - -FCKPreviewCommand.prototype.Execute = function() -{ - FCK.Preview() ; -} - -FCKPreviewCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} - -// ### Save -var FCKSaveCommand = function() -{ - this.Name = 'Save' ; -} - -FCKSaveCommand.prototype.Execute = function() -{ - // Get the linked field form. - var oForm = FCK.GetParentForm() ; - - if ( typeof( oForm.onsubmit ) == 'function' ) - { - var bRet = oForm.onsubmit() ; - if ( bRet != null && bRet === false ) - return ; - } - - // Submit the form. - // If there's a button named "submit" then the form.submit() function is masked and - // can't be called in Mozilla, so we call the click() method of that button. - if ( typeof( oForm.submit ) == 'function' ) - oForm.submit() ; - else - oForm.submit.click() ; -} - -FCKSaveCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} - -// ### NewPage -var FCKNewPageCommand = function() -{ - this.Name = 'NewPage' ; -} - -FCKNewPageCommand.prototype.Execute = function() -{ - FCKUndo.SaveUndoStep() ; - FCK.SetHTML( '' ) ; - FCKUndo.Typing = true ; -} - -FCKNewPageCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} - -// ### Source button -var FCKSourceCommand = function() -{ - this.Name = 'Source' ; -} - -FCKSourceCommand.prototype.Execute = function() -{ - if ( FCKConfig.SourcePopup ) // Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko. - { - var iWidth = FCKConfig.ScreenWidth * 0.65 ; - var iHeight = FCKConfig.ScreenHeight * 0.65 ; - FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ; - } - else - FCK.SwitchEditMode() ; -} - -FCKSourceCommand.prototype.GetState = function() -{ - return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ; -} - -// ### Undo -var FCKUndoCommand = function() -{ - this.Name = 'Undo' ; -} - -FCKUndoCommand.prototype.Execute = function() -{ - if ( FCKBrowserInfo.IsIE ) - FCKUndo.Undo() ; - else - FCK.ExecuteNamedCommand( 'Undo' ) ; -} - -FCKUndoCommand.prototype.GetState = function() -{ - if ( FCKBrowserInfo.IsIE ) - return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ; - else - return FCK.GetNamedCommandState( 'Undo' ) ; -} - -// ### Redo -var FCKRedoCommand = function() -{ - this.Name = 'Redo' ; -} - -FCKRedoCommand.prototype.Execute = function() -{ - if ( FCKBrowserInfo.IsIE ) - FCKUndo.Redo() ; - else - FCK.ExecuteNamedCommand( 'Redo' ) ; -} - -FCKRedoCommand.prototype.GetState = function() -{ - if ( FCKBrowserInfo.IsIE ) - return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ; - else - return FCK.GetNamedCommandState( 'Redo' ) ; -} - -// ### Page Break -var FCKPageBreakCommand = function() -{ - this.Name = 'PageBreak' ; -} - -FCKPageBreakCommand.prototype.Execute = function() -{ -// var e = FCK.EditorDocument.createElement( 'CENTER' ) ; -// e.style.pageBreakAfter = 'always' ; - - // Tidy was removing the empty CENTER tags, so the following solution has - // been found. It also validates correctly as XHTML 1.0 Strict. - var e = FCK.EditorDocument.createElement( 'DIV' ) ; - e.style.pageBreakAfter = 'always' ; - e.innerHTML = ' ' ; - - var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ; - oFakeImage = FCK.InsertElement( oFakeImage ) ; -} - -FCKPageBreakCommand.prototype.GetState = function() -{ - return 0 ; // FCK_TRISTATE_OFF -} - -// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com) -var FCKUnlinkCommand = function() -{ - this.Name = 'Unlink' ; -} - -FCKUnlinkCommand.prototype.Execute = function() -{ - if ( FCKBrowserInfo.IsGecko ) - { - var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ; - // The unlink command can generate a span in Firefox, so let's do it our way. See #430 - if ( oLink ) - FCKTools.RemoveOuterTags( oLink ) ; - - return ; - } - - FCK.ExecuteNamedCommand( this.Name ) ; -} - -FCKUnlinkCommand.prototype.GetState = function() -{ - var state = FCK.GetNamedCommandState( this.Name ) ; - - // Check that it isn't an anchor - if ( state == FCK_TRISTATE_OFF && FCK.EditMode == FCK_EDITMODE_WYSIWYG ) - { - var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ; - var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ; - if ( bIsAnchor ) - state = FCK_TRISTATE_DISABLED ; - } - - return state ; -} - -// FCKSelectAllCommand -var FCKSelectAllCommand = function() -{ - this.Name = 'SelectAll' ; -} - -FCKSelectAllCommand.prototype.Execute = function() -{ - if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) - { - FCK.ExecuteNamedCommand( 'SelectAll' ) ; - } - else - { - // Select the contents of the textarea - var textarea = FCK.EditingArea.Textarea ; - if ( FCKBrowserInfo.IsIE ) - { - textarea.createTextRange().execCommand( 'SelectAll' ) ; - } - else - { - textarea.selectionStart = 0; - textarea.selectionEnd = textarea.value.length ; - } - textarea.focus() ; - } -} - -FCKSelectAllCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} - -// FCKPasteCommand -var FCKPasteCommand = function() -{ - this.Name = 'Paste' ; -} - -FCKPasteCommand.prototype = -{ - Execute : function() - { - if ( FCKBrowserInfo.IsIE ) - FCK.Paste() ; - else - FCK.ExecuteNamedCommand( 'Paste' ) ; - }, - - GetState : function() - { - return FCK.GetNamedCommandState( 'Paste' ) ; - } -} ; diff --git a/static/fckeditor/editor/_source/commandclasses/fckstylecommand.js b/static/fckeditor/editor/_source/commandclasses/fckstylecommand.js deleted file mode 100644 index 6ba8142..0000000 --- a/static/fckeditor/editor/_source/commandclasses/fckstylecommand.js +++ /dev/null @@ -1,99 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKStyleCommand Class: represents the "Style" command. - */ - -var FCKStyleCommand = function() -{ - this.Name = 'Style' ; - - // Load the Styles defined in the XML file. - this.StylesLoader = new FCKStylesLoader() ; - this.StylesLoader.Load( FCKConfig.StylesXmlPath ) ; - this.Styles = this.StylesLoader.Styles ; -} - -FCKStyleCommand.prototype.Execute = function( styleName, styleComboItem ) -{ - FCKUndo.SaveUndoStep() ; - - if ( styleComboItem.Selected ) - styleComboItem.Style.RemoveFromSelection() ; - else - styleComboItem.Style.ApplyToSelection() ; - - FCKUndo.SaveUndoStep() ; - - FCK.Focus() ; - - FCK.Events.FireEvent( "OnSelectionChange" ) ; -} - -FCKStyleCommand.prototype.GetState = function() -{ - if ( !FCK.EditorDocument ) - return FCK_TRISTATE_DISABLED ; - - var oSelection = FCK.EditorDocument.selection ; - - if ( FCKSelection.GetType() == 'Control' ) - { - var e = FCKSelection.GetSelectedElement() ; - if ( e ) - return this.StylesLoader.StyleGroups[ e.tagName ] ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; - } - - return FCK_TRISTATE_OFF ; -} - -FCKStyleCommand.prototype.GetActiveStyles = function() -{ - var aActiveStyles = new Array() ; - - if ( FCKSelection.GetType() == 'Control' ) - this._CheckStyle( FCKSelection.GetSelectedElement(), aActiveStyles, false ) ; - else - this._CheckStyle( FCKSelection.GetParentElement(), aActiveStyles, true ) ; - - return aActiveStyles ; -} - -FCKStyleCommand.prototype._CheckStyle = function( element, targetArray, checkParent ) -{ - if ( ! element ) - return ; - - if ( element.nodeType == 1 ) - { - var aStyleGroup = this.StylesLoader.StyleGroups[ element.tagName ] ; - if ( aStyleGroup ) - { - for ( var i = 0 ; i < aStyleGroup.length ; i++ ) - { - if ( aStyleGroup[i].IsEqual( element ) ) - targetArray[ targetArray.length ] = aStyleGroup[i] ; - } - } - } - - if ( checkParent ) - this._CheckStyle( element.parentNode, targetArray, checkParent ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/commandclasses/fcktablecommand.js b/static/fckeditor/editor/_source/commandclasses/fcktablecommand.js deleted file mode 100644 index ed69d85..0000000 --- a/static/fckeditor/editor/_source/commandclasses/fcktablecommand.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * FCKPastePlainTextCommand Class: represents the - * "Paste as Plain Text" command. - */ - -var FCKTableCommand = function( command ) -{ - this.Name = command ; -} - -FCKTableCommand.prototype.Execute = function() -{ - FCKUndo.SaveUndoStep() ; - - switch ( this.Name ) - { - case 'TableInsertRow' : - FCKTableHandler.InsertRow() ; - break ; - case 'TableDeleteRows' : - FCKTableHandler.DeleteRows() ; - break ; - case 'TableInsertColumn' : - FCKTableHandler.InsertColumn() ; - break ; - case 'TableDeleteColumns' : - FCKTableHandler.DeleteColumns() ; - break ; - case 'TableInsertCell' : - FCKTableHandler.InsertCell() ; - break ; - case 'TableDeleteCells' : - FCKTableHandler.DeleteCells() ; - break ; - case 'TableMergeCells' : - FCKTableHandler.MergeCells() ; - break ; - case 'TableSplitCell' : - FCKTableHandler.SplitCell() ; - break ; - case 'TableDelete' : - FCKTableHandler.DeleteTable() ; - break ; - default : - alert( FCKLang.UnknownCommand.replace( /%1/g, this.Name ) ) ; - } -} - -FCKTableCommand.prototype.GetState = function() -{ - return FCK_TRISTATE_OFF ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/internals/fck.js b/static/fckeditor/editor/_source/internals/fck.js deleted file mode 100644 index d0ea9d4..0000000 --- a/static/fckeditor/editor/_source/internals/fck.js +++ /dev/null @@ -1,864 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Creation and initialization of the "FCK" object. This is the main object - * that represents an editor instance. - */ - -// FCK represents the active editor instance. -var FCK = -{ - Name : FCKURLParams[ 'InstanceName' ], - Status : FCK_STATUS_NOTLOADED, - EditMode : FCK_EDITMODE_WYSIWYG, - Toolbar : null, - HasFocus : false, - - AttachToOnSelectionChange : function( functionPointer ) - { - this.Events.AttachEvent( 'OnSelectionChange', functionPointer ) ; - }, - - GetLinkedFieldValue : function() - { - return this.LinkedField.value ; - }, - - GetParentForm : function() - { - return this.LinkedField.form ; - } , - - // # START : IsDirty implementation - - StartupValue : '', - - IsDirty : function() - { - if ( this.EditMode == FCK_EDITMODE_SOURCE ) - return ( this.StartupValue != this.EditingArea.Textarea.value ) ; - else - return ( this.StartupValue != this.EditorDocument.body.innerHTML ) ; - }, - - ResetIsDirty : function() - { - if ( this.EditMode == FCK_EDITMODE_SOURCE ) - this.StartupValue = this.EditingArea.Textarea.value ; - else if ( this.EditorDocument.body ) - this.StartupValue = this.EditorDocument.body.innerHTML ; - }, - - // # END : IsDirty implementation - - StartEditor : function() - { - this.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '' : '' ; - - // Setup the keystroke handler. - var oKeystrokeHandler = FCK.KeystrokeHandler = new FCKKeystrokeHandler() ; - oKeystrokeHandler.OnKeystroke = _FCK_KeystrokeHandler_OnKeystroke ; - - oKeystrokeHandler.SetKeystrokes( FCKConfig.Keystrokes ) ; - - // In IE7, if the editor tries to access the clipboard by code, a dialog is - // shown to the user asking if the application is allowed to access or not. - // Due to the IE implementation of it, the KeystrokeHandler will not work - //well in this case, so we must leave the pasting keys to have their default behavior. - if ( FCKBrowserInfo.IsIE7 ) - { - if ( ( CTRL + 86 /*V*/ ) in oKeystrokeHandler.Keystrokes ) - oKeystrokeHandler.SetKeystrokes( [ CTRL + 86, true ] ) ; - - if ( ( SHIFT + 45 /*INS*/ ) in oKeystrokeHandler.Keystrokes ) - oKeystrokeHandler.SetKeystrokes( [ SHIFT + 45, true ] ) ; - } - - this.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ; - this.EditingArea.FFSpellChecker = FCKConfig.FirefoxSpellChecker ; - - // Final setup of the lists lib. - FCKListsLib.Setup() ; - - // Set the editor's startup contents - this.SetHTML( this.GetLinkedFieldValue(), true ) ; - }, - - Focus : function() - { - FCK.EditingArea.Focus() ; - }, - - SetStatus : function( newStatus ) - { - this.Status = newStatus ; - - if ( newStatus == FCK_STATUS_ACTIVE ) - { - FCKFocusManager.AddWindow( window, true ) ; - - if ( FCKBrowserInfo.IsIE ) - FCKFocusManager.AddWindow( window.frameElement, true ) ; - - // Force the focus in the editor. - if ( FCKConfig.StartupFocus ) - FCK.Focus() ; - } - - this.Events.FireEvent( 'OnStatusChange', newStatus ) ; - }, - - // Fixes the body by moving all inline and text nodes to appropriate block - // elements. - FixBody : function() - { - var sBlockTag = FCKConfig.EnterMode ; - - // In 'br' mode, no fix must be done. - if ( sBlockTag != 'p' && sBlockTag != 'div' ) - return ; - - var oDocument = this.EditorDocument ; - - if ( !oDocument ) - return ; - - var oBody = oDocument.body ; - - if ( !oBody ) - return ; - - FCKDomTools.TrimNode( oBody ) ; - - var oNode = oBody.firstChild ; - var oNewBlock ; - - while ( oNode ) - { - var bMoveNode = false ; - - switch ( oNode.nodeType ) - { - // Element Node. - case 1 : - if ( !FCKListsLib.BlockElements[ oNode.nodeName.toLowerCase() ] ) - bMoveNode = true ; - break ; - - // Text Node. - case 3 : - // Ignore space only or empty text. - if ( oNewBlock || oNode.nodeValue.Trim().length > 0 ) - bMoveNode = true ; - } - - if ( bMoveNode ) - { - var oParent = oNode.parentNode ; - - if ( !oNewBlock ) - oNewBlock = oParent.insertBefore( oDocument.createElement( sBlockTag ), oNode ) ; - - oNewBlock.appendChild( oParent.removeChild( oNode ) ) ; - - oNode = oNewBlock.nextSibling ; - } - else - { - if ( oNewBlock ) - { - FCKDomTools.TrimNode( oNewBlock ) ; - oNewBlock = null ; - } - oNode = oNode.nextSibling ; - } - } - - if ( oNewBlock ) - FCKDomTools.TrimNode( oNewBlock ) ; - }, - - GetXHTML : function( format ) - { - // We assume that if the user is in source editing, the editor value must - // represent the exact contents of the source, as the user wanted it to be. - if ( FCK.EditMode == FCK_EDITMODE_SOURCE ) - return FCK.EditingArea.Textarea.value ; - - this.FixBody() ; - - var sXHTML ; - var oDoc = FCK.EditorDocument ; - - if ( !oDoc ) - return null ; - - if ( FCKConfig.FullPage ) - { - sXHTML = FCKXHtml.GetXHTML( oDoc.getElementsByTagName( 'html' )[0], true, format ) ; - - if ( FCK.DocTypeDeclaration && FCK.DocTypeDeclaration.length > 0 ) - sXHTML = FCK.DocTypeDeclaration + '\n' + sXHTML ; - - if ( FCK.XmlDeclaration && FCK.XmlDeclaration.length > 0 ) - sXHTML = FCK.XmlDeclaration + '\n' + sXHTML ; - } - else - { - sXHTML = FCKXHtml.GetXHTML( oDoc.body, false, format ) ; - - if ( FCKConfig.IgnoreEmptyParagraphValue && FCKRegexLib.EmptyOutParagraph.test( sXHTML ) ) - sXHTML = '' ; - } - - // Restore protected attributes. - sXHTML = FCK.ProtectEventsRestore( sXHTML ) ; - - if ( FCKBrowserInfo.IsIE ) - sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ; - - return FCKConfig.ProtectedSource.Revert( sXHTML ) ; - }, - - UpdateLinkedField : function() - { - FCK.LinkedField.value = FCK.GetXHTML( FCKConfig.FormatOutput ) ; - FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ; - }, - - RegisteredDoubleClickHandlers : new Object(), - - OnDoubleClick : function( element ) - { - var oHandler = FCK.RegisteredDoubleClickHandlers[ element.tagName ] ; - if ( oHandler ) - oHandler( element ) ; - }, - - // Register objects that can handle double click operations. - RegisterDoubleClickHandler : function( handlerFunction, tag ) - { - FCK.RegisteredDoubleClickHandlers[ tag.toUpperCase() ] = handlerFunction ; - }, - - OnAfterSetHTML : function() - { - FCKDocumentProcessor.Process( FCK.EditorDocument ) ; - FCKUndo.SaveUndoStep() ; - - FCK.Events.FireEvent( 'OnSelectionChange' ) ; - FCK.Events.FireEvent( 'OnAfterSetHTML' ) ; - }, - - // Saves URLs on links and images on special attributes, so they don't change when - // moving around. - ProtectUrls : function( html ) - { - // href - html = html.replace( FCKRegexLib.ProtectUrlsA , '$& _fcksavedurl=$1' ) ; - - // src - html = html.replace( FCKRegexLib.ProtectUrlsImg , '$& _fcksavedurl=$1' ) ; - - return html ; - }, - - // Saves event attributes (like onclick) so they don't get executed while - // editing. - ProtectEvents : function( html ) - { - return html.replace( FCKRegexLib.TagsWithEvent, _FCK_ProtectEvents_ReplaceTags ) ; - }, - - ProtectEventsRestore : function( html ) - { - return html.replace( FCKRegexLib.ProtectedEvents, _FCK_ProtectEvents_RestoreEvents ) ; - }, - - ProtectTags : function( html ) - { - var sTags = FCKConfig.ProtectedTags ; - - // IE doesn't support and it breaks it. Let's protect it. - if ( FCKBrowserInfo.IsIE ) - sTags += sTags.length > 0 ? '|ABBR|XML' : 'ABBR|XML' ; - - var oRegex ; - if ( sTags.length > 0 ) - { - oRegex = new RegExp( '<(' + sTags + ')(?!\w|:)', 'gi' ) ; - html = html.replace( oRegex, '', 'gi' ) ; - html = html.replace( oRegex, '<\/FCK:$1>' ) ; - } - - // Protect some empty elements. We must do it separately becase the - // original tag may not contain the closing slash, like


    : - // - tags get executed, so if you have a redirect meta, the - // content will move to the target page. - // -
    may destroy the document structure if not well - // positioned. The trick is protect it here and restore them in - // the FCKDocumentProcessor. - sTags = 'META' ; - if ( FCKBrowserInfo.IsIE ) - sTags += '|HR' ; - - oRegex = new RegExp( '<((' + sTags + ')(?=\\s|>|/)[\\s\\S]*?)/?>', 'gi' ) ; - html = html.replace( oRegex, '' ) ; - - return html ; - }, - - SetHTML : function( html, resetIsDirty ) - { - this.EditingArea.Mode = FCK.EditMode ; - - if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) - { - html = FCKConfig.ProtectedSource.Protect( html ) ; - - // Fix for invalid self-closing tags (see #152). - html = html.replace( FCKRegexLib.InvalidSelfCloseTags, '$1>' ) ; - - html = FCK.ProtectEvents( html ) ; - html = FCK.ProtectUrls( html ) ; - html = FCK.ProtectTags( html ) ; - - // Firefox can't handle correctly the editing of the STRONG and EM tags. - // We must replace them with B and I. - if ( FCKBrowserInfo.IsGecko ) - { - html = html.replace( FCKRegexLib.StrongOpener, '' ) ; - html = html.replace( FCKRegexLib.EmOpener, '' ) ; - } - - this._ForceResetIsDirty = ( resetIsDirty === true ) ; - - var sHtml = '' ; - - if ( FCKConfig.FullPage ) - { - // The HTML must be fixed if the is not available. - if ( !FCKRegexLib.HeadOpener.test( html ) ) - { - // Check if the is available. - if ( !FCKRegexLib.HtmlOpener.test( html ) ) - html = '' + html + '' ; - - // Add the . - html = html.replace( FCKRegexLib.HtmlOpener, '$&' ) ; - } - - // Save the DOCTYPE. - FCK.DocTypeDeclaration = html.match( FCKRegexLib.DocTypeTag ) ; - - if ( FCKBrowserInfo.IsIE ) - sHtml = FCK._GetBehaviorsStyle() ; - else if ( FCKConfig.ShowBorders ) - sHtml = '' ; - - sHtml += '' ; - - // Attention: do not change it before testing it well (sample07)! - // This is tricky... if the head ends with , - // Firefox will break. But, it works if we include the temporary - // links as the last elements in the HEAD. - sHtml = html.replace( FCKRegexLib.HeadCloser, sHtml + '$&' ) ; - - // Insert the base tag (FCKConfig.BaseHref), if not exists in the source. - // The base must be the first tag in the HEAD, to get relative - // links on styles, for example. - if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) ) - sHtml = sHtml.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ; - } - else - { - sHtml = - FCKConfig.DocType + - '' + - _FCK_GetEditorAreaStyleTags() + - '' ; - - if ( FCKBrowserInfo.IsIE ) - sHtml += FCK._GetBehaviorsStyle() ; - else if ( FCKConfig.ShowBorders ) - sHtml += '' ; - - sHtml += FCK.TempBaseTag ; - - // Add ID and Class to the body - var sBodyTag = ' 0 ) - sBodyTag += ' id="' + FCKConfig.BodyId + '"' ; - if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 ) - sBodyTag += ' class="' + FCKConfig.BodyClass + '"' ; - sHtml += '' + sBodyTag + '>' ; - - if ( FCKBrowserInfo.IsGecko && ( html.length == 0 || FCKRegexLib.EmptyParagraph.test( html ) ) ) - sHtml += GECKO_BOGUS ; - else - sHtml += html ; - - sHtml += '' ; - } - - this.EditingArea.OnLoad = _FCK_EditingArea_OnLoad ; - this.EditingArea.Start( sHtml ) ; - } - else - { - // Remove the references to the following elements, as the editing area - // IFRAME will be removed. - FCK.EditorWindow = null ; - FCK.EditorDocument = null ; - - this.EditingArea.OnLoad = null ; - this.EditingArea.Start( html ) ; - - // Enables the context menu in the textarea. - this.EditingArea.Textarea._FCKShowContextMenu = true ; - - // Removes the enter key handler. - FCK.EnterKeyHandler = null ; - - if ( resetIsDirty ) - this.ResetIsDirty() ; - - // Listen for keystroke events. - FCK.KeystrokeHandler.AttachToElement( this.EditingArea.Textarea ) ; - - this.EditingArea.Textarea.focus() ; - - FCK.Events.FireEvent( 'OnAfterSetHTML' ) ; - } - - if ( FCKBrowserInfo.IsGecko ) - window.onresize() ; - }, - - // For the FocusManager - HasFocus : false, - - - // This collection is used by the browser specific implementations to tell - // wich named commands must be handled separately. - RedirectNamedCommands : new Object(), - - ExecuteNamedCommand : function( commandName, commandParameter, noRedirect ) - { - FCKUndo.SaveUndoStep() ; - - if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null ) - FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ; - else - { - FCK.Focus() ; - FCK.EditorDocument.execCommand( commandName, false, commandParameter ) ; - FCK.Events.FireEvent( 'OnSelectionChange' ) ; - } - - FCKUndo.SaveUndoStep() ; - }, - - GetNamedCommandState : function( commandName ) - { - try - { - - if ( !FCK.EditorDocument.queryCommandEnabled( commandName ) ) - return FCK_TRISTATE_DISABLED ; - else - return FCK.EditorDocument.queryCommandState( commandName ) ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ; - } - catch ( e ) - { - return FCK_TRISTATE_OFF ; - } - }, - - GetNamedCommandValue : function( commandName ) - { - var sValue = '' ; - var eState = FCK.GetNamedCommandState( commandName ) ; - - if ( eState == FCK_TRISTATE_DISABLED ) - return null ; - - try - { - sValue = this.EditorDocument.queryCommandValue( commandName ) ; - } - catch(e) {} - - return sValue ? sValue : '' ; - }, - - PasteFromWord : function() - { - FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ; - }, - - Preview : function() - { - var iWidth = FCKConfig.ScreenWidth * 0.8 ; - var iHeight = FCKConfig.ScreenHeight * 0.7 ; - var iLeft = ( FCKConfig.ScreenWidth - iWidth ) / 2 ; - var oWindow = window.open( '', null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + iWidth + ',height=' + iHeight + ',left=' + iLeft ) ; - - var sHTML ; - - if ( FCKConfig.FullPage ) - { - if ( FCK.TempBaseTag.length > 0 ) - sHTML = FCK.TempBaseTag + FCK.GetXHTML() ; - else - sHTML = FCK.GetXHTML() ; - } - else - { - sHTML = - FCKConfig.DocType + - '' + - '' + - FCK.TempBaseTag + - '' + FCKLang.Preview + '' + - _FCK_GetEditorAreaStyleTags() + - '' + - FCK.GetXHTML() + - '' ; - } - - oWindow.document.write( sHTML ); - oWindow.document.close(); - }, - - SwitchEditMode : function( noUndo ) - { - var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ; - - // Save the current IsDirty state, so we may restore it after the switch. - var bIsDirty = FCK.IsDirty() ; - - var sHtml ; - - // Update the HTML in the view output to show. - if ( bIsWysiwyg ) - { - if ( !noUndo && FCKBrowserInfo.IsIE ) - FCKUndo.SaveUndoStep() ; - - sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ; - - if ( sHtml == null ) - return false ; - } - else - sHtml = this.EditingArea.Textarea.value ; - - FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ; - - FCK.SetHTML( sHtml, !bIsDirty ) ; - - // Set the Focus. - FCK.Focus() ; - - // Update the toolbar (Running it directly causes IE to fail). - FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ; - - return true ; - }, - - CreateElement : function( tag ) - { - var e = FCK.EditorDocument.createElement( tag ) ; - return FCK.InsertElementAndGetIt( e ) ; - }, - - InsertElementAndGetIt : function( e ) - { - e.setAttribute( 'FCKTempLabel', 'true' ) ; - - this.InsertElement( e ) ; - - var aEls = FCK.EditorDocument.getElementsByTagName( e.tagName ) ; - - for ( var i = 0 ; i < aEls.length ; i++ ) - { - if ( aEls[i].getAttribute( 'FCKTempLabel' ) ) - { - aEls[i].removeAttribute( 'FCKTempLabel' ) ; - return aEls[i] ; - } - } - return null ; - } - -} ; - -FCK.Events = new FCKEvents( FCK ) ; -// GetHTML is Deprecated : returns the same value as GetXHTML. -FCK.GetHTML = FCK.GetXHTML ; - -// Replace all events attributes (like onclick). -function _FCK_ProtectEvents_ReplaceTags( tagMatch ) -{ - return tagMatch.replace( FCKRegexLib.EventAttributes, _FCK_ProtectEvents_ReplaceEvents ) ; -} - -// Replace an event attribute with its respective __fckprotectedatt attribute. -// The original event markup will be encoded and saved as the value of the new -// attribute. -function _FCK_ProtectEvents_ReplaceEvents( eventMatch, attName ) -{ - return ' ' + attName + '_fckprotectedatt="' + eventMatch.ReplaceAll( [/&/g,/'/g,/"/g,/=/g,//g,/\r/g,/\n/g], [''',''','"','=','<','>',' ',' '] ) + '"' ; -} - -function _FCK_ProtectEvents_RestoreEvents( match, encodedOriginal ) -{ - return encodedOriginal.ReplaceAll( [/'/g,/"/g,/=/g,/</g,/>/g,/ /g,/ /g,/'/g], ["'",'"','=','<','>','\r','\n','&'] ) ; -} - -function _FCK_EditingArea_OnLoad() -{ - // Get the editor's window and document (DOM) - FCK.EditorWindow = FCK.EditingArea.Window ; - FCK.EditorDocument = FCK.EditingArea.Document ; - - FCK.InitializeBehaviors() ; - - // Create the enter key handler - if ( !FCKConfig.DisableEnterKeyHandler ) - FCK.EnterKeyHandler = new FCKEnterKey( FCK.EditorWindow, FCKConfig.EnterMode, FCKConfig.ShiftEnterMode ) ; - - // Listen for keystroke events. - FCK.KeystrokeHandler.AttachToElement( FCK.EditorDocument ) ; - - if ( FCK._ForceResetIsDirty ) - FCK.ResetIsDirty() ; - - // This is a tricky thing for IE. In some cases, even if the cursor is - // blinking in the editing, the keystroke handler doesn't catch keyboard - // events. We must activate the editing area to make it work. (#142). - if ( FCKBrowserInfo.IsIE && FCK.HasFocus ) - FCK.EditorDocument.body.setActive() ; - - FCK.OnAfterSetHTML() ; - - // Check if it is not a startup call, otherwise complete the startup. - if ( FCK.Status != FCK_STATUS_NOTLOADED ) - return ; - - FCK.SetStatus( FCK_STATUS_ACTIVE ) ; -} - -function _FCK_GetEditorAreaStyleTags() -{ - var sTags = '' ; - var aCSSs = FCKConfig.EditorAreaCSS ; - - for ( var i = 0 ; i < aCSSs.length ; i++ ) - sTags += '' ; - - return sTags ; -} - -function _FCK_KeystrokeHandler_OnKeystroke( keystroke, keystrokeValue ) -{ - if ( FCK.Status != FCK_STATUS_COMPLETE ) - return false ; - - if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) - { - if ( keystrokeValue == 'Paste' ) - return !FCK.Events.FireEvent( 'OnPaste' ) ; - } - else - { - // In source mode, some actions must have their default behavior. - if ( keystrokeValue.Equals( 'Paste', 'Undo', 'Redo', 'SelectAll' ) ) - return false ; - } - - // The return value indicates if the default behavior of the keystroke must - // be cancelled. Let's do that only if the Execute() call explicitelly returns "false". - var oCommand = FCK.Commands.GetCommand( keystrokeValue ) ; - return ( oCommand.Execute.apply( oCommand, FCKTools.ArgumentsToArray( arguments, 2 ) ) !== false ) ; -} - -// Set the FCK.LinkedField reference to the field that will be used to post the -// editor data. -(function() -{ - // There is a bug on IE... getElementById returns any META tag that has the - // name set to the ID you are looking for. So the best way in to get the array - // by names and look for the correct one. - // As ASP.Net generates a ID that is different from the Name, we must also - // look for the field based on the ID (the first one is the ID). - - var oDocument = window.parent.document ; - - // Try to get the field using the ID. - var eLinkedField = oDocument.getElementById( FCK.Name ) ; - - var i = 0; - while ( eLinkedField || i == 0 ) - { - if ( eLinkedField && eLinkedField.tagName.toLowerCase().Equals( 'input', 'textarea' ) ) - { - FCK.LinkedField = eLinkedField ; - break ; - } - - eLinkedField = oDocument.getElementsByName( FCK.Name )[i++] ; - } -})() ; - -var FCKTempBin = -{ - Elements : new Array(), - - AddElement : function( element ) - { - var iIndex = this.Elements.length ; - this.Elements[ iIndex ] = element ; - return iIndex ; - }, - - RemoveElement : function( index ) - { - var e = this.Elements[ index ] ; - this.Elements[ index ] = null ; - return e ; - }, - - Reset : function() - { - var i = 0 ; - while ( i < this.Elements.length ) - this.Elements[ i++ ] = null ; - this.Elements.length = 0 ; - } -} ; - - - -// # Focus Manager: Manages the focus in the editor. -var FCKFocusManager = FCK.FocusManager = -{ - IsLocked : false, - - AddWindow : function( win, sendToEditingArea ) - { - var oTarget ; - - if ( FCKBrowserInfo.IsIE ) - oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ; - else - oTarget = win.document ; - - FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ; - FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ; - }, - - RemoveWindow : function( win ) - { - if ( FCKBrowserInfo.IsIE ) - oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ; - else - oTarget = win.document ; - - FCKTools.RemoveEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ; - FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus_Area ) ; - FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus ) ; - }, - - Lock : function() - { - this.IsLocked = true ; - }, - - Unlock : function() - { - if ( this._HasPendingBlur ) - FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ; - - this.IsLocked = false ; - }, - - _ResetTimer : function() - { - this._HasPendingBlur = false ; - - if ( this._Timer ) - { - window.clearTimeout( this._Timer ) ; - delete this._Timer ; - } - } -} ; - -function FCKFocusManager_Win_OnBlur() -{ - if ( typeof(FCK) != 'undefined' && FCK.HasFocus ) - { - FCKFocusManager._ResetTimer() ; - FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ; - } -} - -function FCKFocusManager_FireOnBlur() -{ - if ( FCKFocusManager.IsLocked ) - FCKFocusManager._HasPendingBlur = true ; - else - { - FCK.HasFocus = false ; - FCK.Events.FireEvent( "OnBlur" ) ; - } -} - -function FCKFocusManager_Win_OnFocus_Area() -{ - FCK.Focus() ; - FCKFocusManager_Win_OnFocus() ; -} - -function FCKFocusManager_Win_OnFocus() -{ - FCKFocusManager._ResetTimer() ; - - if ( !FCK.HasFocus && !FCKFocusManager.IsLocked ) - { - FCK.HasFocus = true ; - FCK.Events.FireEvent( "OnFocus" ) ; - } -} diff --git a/static/fckeditor/editor/_source/internals/fck_gecko.js b/static/fckeditor/editor/_source/internals/fck_gecko.js deleted file mode 100644 index bc3f772..0000000 --- a/static/fckeditor/editor/_source/internals/fck_gecko.js +++ /dev/null @@ -1,254 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Creation and initialization of the "FCK" object. This is the main - * object that represents an editor instance. - * (Gecko specific implementations) - */ - -FCK.Description = "FCKeditor for Gecko Browsers" ; - -FCK.InitializeBehaviors = function() -{ - // When calling "SetHTML", the editing area IFRAME gets a fixed height. So we must recaulculate it. - if ( FCKBrowserInfo.IsGecko ) // Not for Safari/Opera. - Window_OnResize() ; - - FCKFocusManager.AddWindow( this.EditorWindow ) ; - - this.ExecOnSelectionChange = function() - { - FCK.Events.FireEvent( "OnSelectionChange" ) ; - } - - this.ExecOnSelectionChangeTimer = function() - { - if ( FCK.LastOnChangeTimer ) - window.clearTimeout( FCK.LastOnChangeTimer ) ; - - FCK.LastOnChangeTimer = window.setTimeout( FCK.ExecOnSelectionChange, 100 ) ; - } - - this.EditorDocument.addEventListener( 'mouseup', this.ExecOnSelectionChange, false ) ; - - // On Gecko, firing the "OnSelectionChange" event on every key press started to be too much - // slow. So, a timer has been implemented to solve performance issues when tipying to quickly. - this.EditorDocument.addEventListener( 'keyup', this.ExecOnSelectionChangeTimer, false ) ; - - this._DblClickListener = function( e ) - { - FCK.OnDoubleClick( e.target ) ; - e.stopPropagation() ; - } - this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ; - - // Reset the context menu. - FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ; - FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ; -} - -FCK.MakeEditable = function() -{ - this.EditingArea.MakeEditable() ; -} - -// Disable the context menu in the editor (outside the editing area). -function Document_OnContextMenu( e ) -{ - if ( !e.target._FCKShowContextMenu ) - e.preventDefault() ; -} -document.oncontextmenu = Document_OnContextMenu ; - -// GetNamedCommandState overload for Gecko. -FCK._BaseGetNamedCommandState = FCK.GetNamedCommandState ; -FCK.GetNamedCommandState = function( commandName ) -{ - switch ( commandName ) - { - case 'Unlink' : - return FCKSelection.HasAncestorNode('A') ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; - default : - return FCK._BaseGetNamedCommandState( commandName ) ; - } -} - -// Named commands to be handled by this browsers specific implementation. -FCK.RedirectNamedCommands = -{ - Print : true, - Paste : true, - Cut : true, - Copy : true -} ; - -// ExecuteNamedCommand overload for Gecko. -FCK.ExecuteRedirectedNamedCommand = function( commandName, commandParameter ) -{ - switch ( commandName ) - { - case 'Print' : - FCK.EditorWindow.print() ; - break ; - case 'Paste' : - try { if ( FCK.Paste() ) FCK.ExecuteNamedCommand( 'Paste', null, true ) ; } - catch (e) { FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.Paste, 'dialog/fck_paste.html', 400, 330, 'Security' ) ; } - break ; - case 'Cut' : - try { FCK.ExecuteNamedCommand( 'Cut', null, true ) ; } - catch (e) { alert(FCKLang.PasteErrorCut) ; } - break ; - case 'Copy' : - try { FCK.ExecuteNamedCommand( 'Copy', null, true ) ; } - catch (e) { alert(FCKLang.PasteErrorCopy) ; } - break ; - default : - FCK.ExecuteNamedCommand( commandName, commandParameter ) ; - } -} - -FCK.Paste = function() -{ - if ( FCKConfig.ForcePasteAsPlainText ) - { - FCK.PasteAsPlainText() ; - return false ; - } - - /* For now, the AutoDetectPasteFromWord feature is IE only. */ - - return true ; -} - -//** -// FCK.InsertHtml: Inserts HTML at the current cursor location. Deletes the -// selected content if any. -FCK.InsertHtml = function( html ) -{ - html = FCKConfig.ProtectedSource.Protect( html ) ; - html = FCK.ProtectEvents( html ) ; - html = FCK.ProtectUrls( html ) ; - html = FCK.ProtectTags( html ) ; - - // Firefox can't handle correctly the editing of the STRONG and EM tags. - // We must replace them with B and I. - html = html.replace( FCKRegexLib.StrongOpener, '' ) ; - html = html.replace( FCKRegexLib.EmOpener, '' ) ; - - // Delete the actual selection. - var oSel = FCKSelection.Delete() ; - - // Get the first available range. - var oRange = oSel.getRangeAt(0) ; - - // Create a fragment with the input HTML. - var oFragment = oRange.createContextualFragment( html ) ; - - // Get the last available node. - var oLastNode = oFragment.lastChild ; - - // Insert the fragment in the range. - oRange.insertNode(oFragment) ; - - // Set the cursor after the inserted fragment. - FCKSelection.SelectNode( oLastNode ) ; - FCKSelection.Collapse( false ) ; - - this.Focus() ; -} - -FCK.InsertElement = function( element ) -{ - // Deletes the actual selection. - var oSel = FCKSelection.Delete() ; - - // Gets the first available range. - var oRange = oSel.getRangeAt(0) ; - - // Inserts the element in the range. - oRange.insertNode( element ) ; - - // Set the cursor after the inserted fragment. - FCKSelection.SelectNode( element ) ; - FCKSelection.Collapse( false ) ; - - this.Focus() ; -} - -FCK.PasteAsPlainText = function() -{ - // TODO: Implement the "Paste as Plain Text" code. - - // If the function is called inmediately Firefox 2 does automatically paste the contents as soon as the new dialog is created - // so we run it in a Timeout and the paste event can be cancelled - FCKTools.RunFunction( FCKDialog.OpenDialog, FCKDialog, ['FCKDialog_Paste', FCKLang.PasteAsText, 'dialog/fck_paste.html', 400, 330, 'PlainText'] ) ; - -/* - var sText = FCKTools.HTMLEncode( clipboardData.getData("Text") ) ; - sText = sText.replace( /\n/g, '
    ' ) ; - this.InsertHtml( sText ) ; -*/ -} -/* -FCK.PasteFromWord = function() -{ - // TODO: Implement the "Paste as Plain Text" code. - - FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ; - -// FCK.CleanAndPaste( FCK.GetClipboardHTML() ) ; -} -*/ -FCK.GetClipboardHTML = function() -{ - return '' ; -} - -FCK.CreateLink = function( url ) -{ - // Creates the array that will be returned. It contains one or more created links (see #220). - var aCreatedLinks = new Array() ; - - FCK.ExecuteNamedCommand( 'Unlink' ) ; - - if ( url.length > 0 ) - { - // Generate a temporary name for the link. - var sTempUrl = 'javascript:void(0);/*' + ( new Date().getTime() ) + '*/' ; - - // Use the internal "CreateLink" command to create the link. - FCK.ExecuteNamedCommand( 'CreateLink', sTempUrl ) ; - - // Retrieve the just created links using XPath. - var oLinksInteractor = this.EditorDocument.evaluate("//a[@href='" + sTempUrl + "']", this.EditorDocument.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null) ; - - // Add all links to the returning array. - for ( var i = 0 ; i < oLinksInteractor.snapshotLength ; i++ ) - { - var oLink = oLinksInteractor.snapshotItem( i ) ; - oLink.href = url ; - aCreatedLinks.push( oLink ) ; - } - } - - return aCreatedLinks ; -} diff --git a/static/fckeditor/editor/_source/internals/fckdebug.js b/static/fckeditor/editor/_source/internals/fckdebug.js deleted file mode 100644 index 289d75e..0000000 --- a/static/fckeditor/editor/_source/internals/fckdebug.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Debug window control and operations. - */ - -var FCKDebug = new Object() ; - -FCKDebug._GetWindow = function() -{ - if ( !this.DebugWindow || this.DebugWindow.closed ) - this.DebugWindow = window.open( FCKConfig.BasePath + 'fckdebug.html', 'FCKeditorDebug', 'menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500', true ) ; - - return this.DebugWindow ; -} - -FCKDebug.Output = function( message, color, noParse ) -{ - if ( ! FCKConfig.Debug ) - return ; - - try - { - this._GetWindow().Output( message, color ) ; - } - catch ( e ) {} // Ignore errors -} - -FCKDebug.OutputObject = function( anyObject, color ) -{ - if ( ! FCKConfig.Debug ) - return ; - - try - { - this._GetWindow().OutputObject( anyObject, color ) ; - } - catch ( e ) {} // Ignore errors -} \ No newline at end of file diff --git a/static/fckeditor/editor/_source/internals/fckdialog.js b/static/fckeditor/editor/_source/internals/fckdialog.js deleted file mode 100644 index 125b3d7..0000000 --- a/static/fckeditor/editor/_source/internals/fckdialog.js +++ /dev/null @@ -1,38 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Dialog windows operations. - */ - -var FCKDialog = new Object() ; - -// This method opens a dialog window using the standard dialog template. -FCKDialog.OpenDialog = function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable ) -{ - // Setup the dialog info. - var oDialogInfo = new Object() ; - oDialogInfo.Title = dialogTitle ; - oDialogInfo.Page = dialogPage ; - oDialogInfo.Editor = window ; - oDialogInfo.CustomValue = customValue ; // Optional - - var sUrl = FCKConfig.BasePath + 'fckdialog.html' ; - this.Show( oDialogInfo, dialogName, sUrl, width, height, parentWindow, resizable ) ; -} diff --git a/static/fckeditor/editor/_source/internals/fckdialog_gecko.js b/static/fckeditor/editor/_source/internals/fckdialog_gecko.js deleted file mode 100644 index 4419cad..0000000 --- a/static/fckeditor/editor/_source/internals/fckdialog_gecko.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Dialog windows operations. (Gecko specific implementations) - */ - -FCKDialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow, resizable ) -{ - var iTop = (FCKConfig.ScreenHeight - dialogHeight) / 2 ; - var iLeft = (FCKConfig.ScreenWidth - dialogWidth) / 2 ; - - var sOption = "location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes" + - ",resizable=" + ( resizable ? 'yes' : 'no' ) + - ",width=" + dialogWidth + - ",height=" + dialogHeight + - ",top=" + iTop + - ",left=" + iLeft ; - - if ( !parentWindow ) - parentWindow = window ; - - FCKFocusManager.Lock() ; - - var oWindow = parentWindow.open( '', 'FCKeditorDialog_' + dialogName, sOption, true ) ; - - if ( !oWindow ) - { - alert( FCKLang.DialogBlocked ) ; - FCKFocusManager.Unlock() ; - return ; - } - - oWindow.moveTo( iLeft, iTop ) ; - oWindow.resizeTo( dialogWidth, dialogHeight ) ; - oWindow.focus() ; - oWindow.location.href = pageUrl ; - - oWindow.dialogArguments = dialogInfo ; - - // On some Gecko browsers (probably over slow connections) the - // "dialogArguments" are not set to the target window so we must - // put it in the opener window so it can be used by the target one. - parentWindow.FCKLastDialogInfo = dialogInfo ; - - this.Window = oWindow ; - - // Try/Catch must be used to avoit an error when using a frameset - // on a different domain: - // "Permission denied to get property Window.releaseEvents". - try - { - window.top.parent.addEventListener( 'mousedown', this.CheckFocus, true ) ; - window.top.parent.addEventListener( 'mouseup', this.CheckFocus, true ) ; - window.top.parent.addEventListener( 'click', this.CheckFocus, true ) ; - window.top.parent.addEventListener( 'focus', this.CheckFocus, true ) ; - } - catch (e) - {} -} - -FCKDialog.CheckFocus = function() -{ - // It is strange, but we have to check the FCKDialog existence to avoid a - // random error: "FCKDialog is not defined". - if ( typeof( FCKDialog ) != "object" ) - return false ; - - if ( FCKDialog.Window && !FCKDialog.Window.closed ) - FCKDialog.Window.focus() ; - else - { - // Try/Catch must be used to avoit an error when using a frameset - // on a different domain: - // "Permission denied to get property Window.releaseEvents". - try - { - window.top.parent.removeEventListener( 'onmousedown', FCKDialog.CheckFocus, true ) ; - window.top.parent.removeEventListener( 'mouseup', FCKDialog.CheckFocus, true ) ; - window.top.parent.removeEventListener( 'click', FCKDialog.CheckFocus, true ) ; - window.top.parent.removeEventListener( 'onfocus', FCKDialog.CheckFocus, true ) ; - } - catch (e) - {} - } - return false ; -} diff --git a/static/fckeditor/editor/_source/internals/fckdialog_ie.js b/static/fckeditor/editor/_source/internals/fckdialog_ie.js deleted file mode 100644 index f24e477..0000000 --- a/static/fckeditor/editor/_source/internals/fckdialog_ie.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Dialog windows operations. (IE specific implementations) - */ - -FCKDialog.Show = function( dialogInfo, dialogName, pageUrl, dialogWidth, dialogHeight, parentWindow, resizable ) -{ - if ( !parentWindow ) - parentWindow = window ; - - var sOptions = 'help:no;scroll:no;status:no' + - ';resizable:' + ( resizable ? 'yes' : 'no' ) + - ';dialogWidth:' + dialogWidth + 'px' + - ';dialogHeight:' + dialogHeight + 'px' ; - - FCKFocusManager.Lock() ; - - var oReturn = 'B' ; - - try - { - oReturn = parentWindow.showModalDialog( pageUrl, dialogInfo, sOptions ) ; - } - catch( e ) {} - - if ( 'B' === oReturn ) - alert( FCKLang.DialogBlocked ) ; - - FCKFocusManager.Unlock() ; -} diff --git a/static/fckeditor/editor/_source/internals/fckdomtools.js b/static/fckeditor/editor/_source/internals/fckdomtools.js deleted file mode 100644 index e1abafb..0000000 --- a/static/fckeditor/editor/_source/internals/fckdomtools.js +++ /dev/null @@ -1,295 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Utility functions to work with the DOM. - */ - -var FCKDomTools = -{ - MoveChildren : function( source, target ) - { - if ( source == target ) - return ; - - var eChild ; - while ( (eChild = source.firstChild) ) - target.appendChild( source.removeChild( eChild ) ) ; - }, - - // Remove blank spaces from the beginning and the end of the contents of a node. - TrimNode : function( node, ignoreEndBRs ) - { - this.LTrimNode( node ) ; - this.RTrimNode( node, ignoreEndBRs ) ; - }, - - LTrimNode : function( node ) - { - var eChildNode ; - - while ( (eChildNode = node.firstChild) ) - { - if ( eChildNode.nodeType == 3 ) - { - var sTrimmed = eChildNode.nodeValue.LTrim() ; - var iOriginalLength = eChildNode.nodeValue.length ; - - if ( sTrimmed.length == 0 ) - { - node.removeChild( eChildNode ) ; - continue ; - } - else if ( sTrimmed.length < iOriginalLength ) - { - eChildNode.splitText( iOriginalLength - sTrimmed.length ) ; - node.removeChild( node.firstChild ) ; - } - } - break ; - } - }, - - RTrimNode : function( node, ignoreEndBRs ) - { - var eChildNode ; - - while ( (eChildNode = node.lastChild) ) - { - switch ( eChildNode.nodeType ) - { - case 1 : - if ( eChildNode.nodeName.toUpperCase() == 'BR' && ( ignoreEndBRs || eChildNode.getAttribute( 'type', 2 ) == '_moz' ) ) - { - // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#324). - eChildNode.parentNode.removeChild( eChildNode ) ; - continue ; - } - break ; - - case 3 : - var sTrimmed = eChildNode.nodeValue.RTrim() ; - var iOriginalLength = eChildNode.nodeValue.length ; - - if ( sTrimmed.length == 0 ) - { - // If the trimmed text node is empty, just remove it. - - // Use "eChildNode.parentNode" instead of "node" to avoid IE bug (#81). - eChildNode.parentNode.removeChild( eChildNode ) ; - continue ; - } - else if ( sTrimmed.length < iOriginalLength ) - { - // If the trimmed text lenght is less than the original - // lenght, strip all spaces from the end by splitting - // the text and removing the resulting useless node. - - eChildNode.splitText( sTrimmed.length ) ; - // Use "node.lastChild.parentNode" instead of "node" to avoid IE bug (#81). - node.lastChild.parentNode.removeChild( node.lastChild ) ; - } - } - break ; - } - }, - - RemoveNode : function( node, excludeChildren ) - { - if ( excludeChildren ) - { - // Move all children before the node. - var eChild ; - while ( (eChild = node.firstChild) ) - node.parentNode.insertBefore( node.removeChild( eChild ), node ) ; - } - - return node.parentNode.removeChild( node ) ; - }, - - GetFirstChild : function( node, childNames ) - { - // If childNames is a string, transform it in a Array. - if ( typeof ( childNames ) == 'string' ) - childNames = [ childNames ] ; - - var eChild = node.firstChild ; - while( eChild ) - { - if ( eChild.nodeType == 1 && eChild.tagName.Equals.apply( eChild.tagName, childNames ) ) - return eChild ; - - eChild = eChild.nextSibling ; - } - - return null ; - }, - - GetLastChild : function( node, childNames ) - { - // If childNames is a string, transform it in a Array. - if ( typeof ( childNames ) == 'string' ) - childNames = [ childNames ] ; - - var eChild = node.lastChild ; - while( eChild ) - { - if ( eChild.nodeType == 1 && ( !childNames || eChild.tagName.Equals( childNames ) ) ) - return eChild ; - - eChild = eChild.previousSibling ; - } - - return null ; - }, - - /* - * Gets the previous element (nodeType=1) in the source order. Returns - * "null" If no element is found. - * @param {Object} currentNode The node to start searching from. - * @param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be - * handled. If set to "true", only white spaces text nodes - * will be ignored, while non white space text nodes will stop - * the search, returning null. If "false" or ommitted, all - * text nodes are ignored. - * @param {string[]} stopSearchElements An array of element names that - * will cause the search to stop when found, returning null. - * May be ommitted (or null). - * @param {string[]} ignoreElements An array of element names that - * must be ignored during the search. - */ - GetPreviousSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) - { - if ( !currentNode ) - return null ; - - if ( stopSearchElements && currentNode.nodeType == 1 && currentNode.nodeName.IEquals( stopSearchElements ) ) - return null ; - - if ( currentNode.previousSibling ) - currentNode = currentNode.previousSibling ; - else - return this.GetPreviousSourceElement( currentNode.parentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ; - - while ( currentNode ) - { - if ( currentNode.nodeType == 1 ) - { - if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) ) - break ; - - if ( !ignoreElements || !currentNode.nodeName.IEquals( ignoreElements ) ) - return currentNode ; - } - else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 ) - break ; - - if ( currentNode.lastChild ) - currentNode = currentNode.lastChild ; - else - return this.GetPreviousSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ; - } - - return null ; - }, - - /* - * Gets the next element (nodeType=1) in the source order. Returns - * "null" If no element is found. - * @param {Object} currentNode The node to start searching from. - * @param {Boolean} ignoreSpaceTextOnly Sets how text nodes will be - * handled. If set to "true", only white spaces text nodes - * will be ignored, while non white space text nodes will stop - * the search, returning null. If "false" or ommitted, all - * text nodes are ignored. - * @param {string[]} stopSearchElements An array of element names that - * will cause the search to stop when found, returning null. - * May be ommitted (or null). - * @param {string[]} ignoreElements An array of element names that - * must be ignored during the search. - */ - GetNextSourceElement : function( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) - { - if ( !currentNode ) - return null ; - - if ( currentNode.nextSibling ) - currentNode = currentNode.nextSibling ; - else - return this.GetNextSourceElement( currentNode.parentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ; - - while ( currentNode ) - { - if ( currentNode.nodeType == 1 ) - { - if ( stopSearchElements && currentNode.nodeName.IEquals( stopSearchElements ) ) - break ; - - if ( !ignoreElements || !currentNode.nodeName.IEquals( ignoreElements ) ) - return currentNode ; - } - else if ( ignoreSpaceTextOnly && currentNode.nodeType == 3 && currentNode.nodeValue.RTrim().length > 0 ) - break ; - - if ( currentNode.firstChild ) - currentNode = currentNode.firstChild ; - else - return this.GetNextSourceElement( currentNode, ignoreSpaceTextOnly, stopSearchElements, ignoreElements ) ; - } - - return null ; - }, - - // Inserts a element after a existing one. - InsertAfterNode : function( existingNode, newNode ) - { - return existingNode.parentNode.insertBefore( newNode, existingNode.nextSibling ) ; - }, - - GetParents : function( node ) - { - var parents = new Array() ; - - while ( node ) - { - parents.splice( 0, 0, node ) ; - node = node.parentNode ; - } - - return parents ; - }, - - GetIndexOf : function( node ) - { - var currentNode = node.parentNode ? node.parentNode.firstChild : null ; - var currentIndex = -1 ; - - while ( currentNode ) - { - currentIndex++ ; - - if ( currentNode == node ) - return currentIndex ; - - currentNode = currentNode.nextSibling ; - } - - return -1 ; - } -} ; \ No newline at end of file diff --git a/static/fckeditor/editor/_source/internals/fcklistslib.js b/static/fckeditor/editor/_source/internals/fcklistslib.js deleted file mode 100644 index 390c06c..0000000 --- a/static/fckeditor/editor/_source/internals/fcklistslib.js +++ /dev/null @@ -1,60 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Library of keys collections. - * - * Test have shown that check for the existence of a key in an object is the - * most efficient list entry check (10x faster that regex). Example: - * if ( FCKListsLib.[key] != null ) - */ - -var FCKListsLib = -{ - // We are not handling and as block elements, for now. - BlockElements : { address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 }, - - // Block elements that may be filled with   if empty. - NonEmptyBlockElements : { p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 }, - - // Inline elements which MUST have child nodes. - InlineChildReqElements : { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 }, - - // Elements marked as empty "Empty" in the XHTML DTD. - EmptyElements : { base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 }, - - // Elements that may be considered the "Block boundary" in an element path. - PathBlockElements : { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 }, - - // Elements that may be considered the "Block limit" in an element path. - PathBlockLimitElements : { body:1,td:1,th:1,caption:1,form:1 }, - - // Final setup of FCKListsLib once the editor is loaded (at FCK.StartEditor). - // TODO: For v3, there should be a generic way to register to the editor - // startup event, so this function would not be needed to be defined here, not - // even be called at FCK.StartEditor. - Setup : function() - { - //
    is considered a block element only if EnterMode=div, otherwise it is a block limit. - if ( FCKConfig.EnterMode == 'div' ) - this.PathBlockElements.div = 1 ; - else - this.PathBlockLimitElements.div = 1 ; - } -} ; \ No newline at end of file diff --git a/static/fckeditor/editor/_source/internals/fckselection_gecko.js b/static/fckeditor/editor/_source/internals/fckselection_gecko.js deleted file mode 100644 index e47a3d2..0000000 --- a/static/fckeditor/editor/_source/internals/fckselection_gecko.js +++ /dev/null @@ -1,151 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Active selection functions. (Gecko specific implementation) - */ - -// Get the selection type (like document.select.type in IE). -FCKSelection.GetType = function() -{ -// if ( ! this._Type ) -// { - // By default set the type to "Text". - this._Type = 'Text' ; - - // Check if the actual selection is a Control (IMG, TABLE, HR, etc...). - var oSel ; - try { oSel = FCK.EditorWindow.getSelection() ; } - catch (e) {} - - if ( oSel && oSel.rangeCount == 1 ) - { - var oRange = oSel.getRangeAt(0) ; - if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != Node.TEXT_NODE ) - this._Type = 'Control' ; - } -// } - return this._Type ; -} - -// Retrieves the selected element (if any), just in the case that a single -// element (object like and image or a table) is selected. -FCKSelection.GetSelectedElement = function() -{ - if ( this.GetType() == 'Control' ) - { - var oSel = FCK.EditorWindow.getSelection() ; - return oSel.anchorNode.childNodes[ oSel.anchorOffset ] ; - } - return null ; -} - -FCKSelection.GetParentElement = function() -{ - if ( this.GetType() == 'Control' ) - return FCKSelection.GetSelectedElement().parentNode ; - else - { - var oSel = FCK.EditorWindow.getSelection() ; - if ( oSel ) - { - var oNode = oSel.anchorNode ; - - while ( oNode && oNode.nodeType != 1 ) - oNode = oNode.parentNode ; - - return oNode ; - } - } - return null ; -} - -FCKSelection.SelectNode = function( element ) -{ -// FCK.Focus() ; - - var oRange = FCK.EditorDocument.createRange() ; - oRange.selectNode( element ) ; - - var oSel = FCK.EditorWindow.getSelection() ; - oSel.removeAllRanges() ; - oSel.addRange( oRange ) ; -} - -FCKSelection.Collapse = function( toStart ) -{ - var oSel = FCK.EditorWindow.getSelection() ; - - if ( toStart == null || toStart === true ) - oSel.collapseToStart() ; - else - oSel.collapseToEnd() ; -} - -// The "nodeTagName" parameter must be Upper Case. -FCKSelection.HasAncestorNode = function( nodeTagName ) -{ - var oContainer = this.GetSelectedElement() ; - if ( ! oContainer && FCK.EditorWindow ) - { - try { oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ; } - catch(e){} - } - - while ( oContainer ) - { - if ( oContainer.nodeType == 1 && oContainer.tagName == nodeTagName ) return true ; - oContainer = oContainer.parentNode ; - } - - return false ; -} - -// The "nodeTagName" parameter must be Upper Case. -FCKSelection.MoveToAncestorNode = function( nodeTagName ) -{ - var oNode ; - - var oContainer = this.GetSelectedElement() ; - if ( ! oContainer ) - oContainer = FCK.EditorWindow.getSelection().getRangeAt(0).startContainer ; - - while ( oContainer ) - { - if ( oContainer.nodeName == nodeTagName ) - return oContainer ; - - oContainer = oContainer.parentNode ; - } - return null ; -} - -FCKSelection.Delete = function() -{ - // Gets the actual selection. - var oSel = FCK.EditorWindow.getSelection() ; - - // Deletes the actual selection contents. - for ( var i = 0 ; i < oSel.rangeCount ; i++ ) - { - oSel.getRangeAt(i).deleteContents() ; - } - - return oSel ; -} diff --git a/static/fckeditor/editor/_source/internals/fckselection_ie.js b/static/fckeditor/editor/_source/internals/fckselection_ie.js deleted file mode 100644 index 8e1505d..0000000 --- a/static/fckeditor/editor/_source/internals/fckselection_ie.js +++ /dev/null @@ -1,159 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Active selection functions. (IE specific implementation) - */ - -// Get the selection type. -FCKSelection.GetType = function() -{ - return FCK.EditorDocument.selection.type ; -} ; - -// Retrieves the selected element (if any), just in the case that a single -// element (object like and image or a table) is selected. -FCKSelection.GetSelectedElement = function() -{ - if ( this.GetType() == 'Control' ) - { - var oRange = FCK.EditorDocument.selection.createRange() ; - - if ( oRange && oRange.item ) - return FCK.EditorDocument.selection.createRange().item(0) ; - } - return null ; -} ; - -FCKSelection.GetParentElement = function() -{ - switch ( this.GetType() ) - { - case 'Control' : - return FCKSelection.GetSelectedElement().parentElement ; - case 'None' : - return null ; - default : - return FCK.EditorDocument.selection.createRange().parentElement() ; - } -} ; - -FCKSelection.SelectNode = function( node ) -{ - FCK.Focus() ; - FCK.EditorDocument.selection.empty() ; - var oRange ; - try - { - // Try to select the node as a control. - oRange = FCK.EditorDocument.body.createControlRange() ; - oRange.addElement( node ) ; - } - catch(e) - { - // If failed, select it as a text range. - oRange = FCK.EditorDocument.body.createTextRange() ; - oRange.moveToElementText( node ) ; - } - - oRange.select() ; -} ; - -FCKSelection.Collapse = function( toStart ) -{ - FCK.Focus() ; - if ( this.GetType() == 'Text' ) - { - var oRange = FCK.EditorDocument.selection.createRange() ; - oRange.collapse( toStart == null || toStart === true ) ; - oRange.select() ; - } -} ; - -// The "nodeTagName" parameter must be Upper Case. -FCKSelection.HasAncestorNode = function( nodeTagName ) -{ - var oContainer ; - - if ( FCK.EditorDocument.selection.type == "Control" ) - { - oContainer = this.GetSelectedElement() ; - } - else - { - var oRange = FCK.EditorDocument.selection.createRange() ; - oContainer = oRange.parentElement() ; - } - - while ( oContainer ) - { - if ( oContainer.tagName == nodeTagName ) return true ; - oContainer = oContainer.parentNode ; - } - - return false ; -} ; - -// The "nodeTagName" parameter must be UPPER CASE. -FCKSelection.MoveToAncestorNode = function( nodeTagName ) -{ - var oNode, oRange ; - - if ( ! FCK.EditorDocument ) - return null ; - - if ( FCK.EditorDocument.selection.type == "Control" ) - { - oRange = FCK.EditorDocument.selection.createRange() ; - for ( i = 0 ; i < oRange.length ; i++ ) - { - if (oRange(i).parentNode) - { - oNode = oRange(i).parentNode ; - break ; - } - } - } - else - { - oRange = FCK.EditorDocument.selection.createRange() ; - oNode = oRange.parentElement() ; - } - - while ( oNode && oNode.nodeName != nodeTagName ) - oNode = oNode.parentNode ; - - return oNode ; -} ; - -FCKSelection.Delete = function() -{ - // Gets the actual selection. - var oSel = FCK.EditorDocument.selection ; - - // Deletes the actual selection contents. - if ( oSel.type.toLowerCase() != "none" ) - { - oSel.clear() ; - } - - return oSel ; -} ; - - diff --git a/static/fckeditor/editor/_source/internals/fcktablehandler.js b/static/fckeditor/editor/_source/internals/fcktablehandler.js deleted file mode 100644 index 7d7d448..0000000 --- a/static/fckeditor/editor/_source/internals/fcktablehandler.js +++ /dev/null @@ -1,385 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Manage table operations. - */ - -var FCKTableHandler = new Object() ; - -FCKTableHandler.InsertRow = function() -{ - // Get the row where the selection is placed in. - var oRow = FCKSelection.MoveToAncestorNode( 'TR' ) ; - if ( !oRow ) return ; - - // Create a clone of the row. - var oNewRow = oRow.cloneNode( true ) ; - - // Insert the new row (copy) before of it. - oRow.parentNode.insertBefore( oNewRow, oRow ) ; - - // Clean the row (it seems that the new row has been added after it). - FCKTableHandler.ClearRow( oRow ) ; -} - -FCKTableHandler.DeleteRows = function( row ) -{ - // If no row has been passed as a parameter, - // then get the row where the selection is placed in. - if ( !row ) - row = FCKSelection.MoveToAncestorNode( 'TR' ) ; - if ( !row ) return ; - - // Get the row's table. - var oTable = FCKTools.GetElementAscensor( row, 'TABLE' ) ; - - // If just one row is available then delete the entire table. - if ( oTable.rows.length == 1 ) - { - FCKTableHandler.DeleteTable( oTable ) ; - return ; - } - - // Delete the row. - row.parentNode.removeChild( row ) ; -} - -FCKTableHandler.DeleteTable = function( table ) -{ - // If no table has been passed as a parameer, - // then get the table where the selection is placed in. - if ( !table ) - { - table = FCKSelection.GetSelectedElement() ; - if ( !table || table.tagName != 'TABLE' ) - table = FCKSelection.MoveToAncestorNode( 'TABLE' ) ; - } - if ( !table ) return ; - - // Delete the table. - FCKSelection.SelectNode( table ) ; - FCKSelection.Collapse(); - table.parentNode.removeChild( table ) ; -} - -FCKTableHandler.InsertColumn = function() -{ - // Get the cell where the selection is placed in. - var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ; - - if ( !oCell ) return ; - - // Get the cell's table. - var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ; - - // Get the index of the column to be created (based on the cell). - var iIndex = oCell.cellIndex + 1 ; - - // Loop throw all rows available in the table. - for ( var i = 0 ; i < oTable.rows.length ; i++ ) - { - // Get the row. - var oRow = oTable.rows[i] ; - - // If the row doens't have enought cells, ignore it. - if ( oRow.cells.length < iIndex ) - continue ; - - oCell = oRow.cells[iIndex-1].cloneNode(false) ; - - if ( FCKBrowserInfo.IsGecko ) - oCell.innerHTML = GECKO_BOGUS ; - - // Get the cell that is placed in the new cell place. - var oBaseCell = oRow.cells[iIndex] ; - - // If the cell is available (we are not in the last cell of the row). - if ( oBaseCell ) - oRow.insertBefore( oCell, oBaseCell ) ; // Insert the new cell just before of it. - else - oRow.appendChild( oCell ) ; // Append the cell at the end of the row. - } -} - -FCKTableHandler.DeleteColumns = function() -{ - // Get the cell where the selection is placed in. - var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ; - - if ( !oCell ) return ; - - // Get the cell's table. - var oTable = FCKTools.GetElementAscensor( oCell, 'TABLE' ) ; - - // Get the cell index. - var iIndex = oCell.cellIndex ; - - // Loop throw all rows (from down to up, because it's possible that some - // rows will be deleted). - for ( var i = oTable.rows.length - 1 ; i >= 0 ; i-- ) - { - // Get the row. - var oRow = oTable.rows[i] ; - - // If the cell to be removed is the first one and the row has just one cell. - if ( iIndex == 0 && oRow.cells.length == 1 ) - { - // Remove the entire row. - FCKTableHandler.DeleteRows( oRow ) ; - continue ; - } - - // If the cell to be removed exists the delete it. - if ( oRow.cells[iIndex] ) - oRow.removeChild( oRow.cells[iIndex] ) ; - } -} - -FCKTableHandler.InsertCell = function( cell ) -{ - // Get the cell where the selection is placed in. - var oCell = cell ? cell : FCKSelection.MoveToAncestorNode( 'TD' ) ; - if ( !oCell ) return null ; - - // Create the new cell element to be added. - var oNewCell = FCK.EditorDocument.createElement( 'TD' ) ; - if ( FCKBrowserInfo.IsGecko ) - oNewCell.innerHTML = GECKO_BOGUS ; -// oNewCell.innerHTML = " " ; - - // If it is the last cell in the row. - if ( oCell.cellIndex == oCell.parentNode.cells.length - 1 ) - { - // Add the new cell at the end of the row. - oCell.parentNode.appendChild( oNewCell ) ; - } - else - { - // Add the new cell before the next cell (after the active one). - oCell.parentNode.insertBefore( oNewCell, oCell.nextSibling ) ; - } - - return oNewCell ; -} - -FCKTableHandler.DeleteCell = function( cell ) -{ - // If this is the last cell in the row. - if ( cell.parentNode.cells.length == 1 ) - { - // Delete the entire row. - FCKTableHandler.DeleteRows( FCKTools.GetElementAscensor( cell, 'TR' ) ) ; - return ; - } - - // Delete the cell from the row. - cell.parentNode.removeChild( cell ) ; -} - -FCKTableHandler.DeleteCells = function() -{ - var aCells = FCKTableHandler.GetSelectedCells() ; - - for ( var i = aCells.length - 1 ; i >= 0 ; i-- ) - { - FCKTableHandler.DeleteCell( aCells[i] ) ; - } -} - -FCKTableHandler.MergeCells = function() -{ - // Get all selected cells. - var aCells = FCKTableHandler.GetSelectedCells() ; - - // At least 2 cells must be selected. - if ( aCells.length < 2 ) - return ; - - // The merge can occour only if the selected cells are from the same row. - if ( aCells[0].parentNode != aCells[aCells.length-1].parentNode ) - return ; - - // Calculate the new colSpan for the first cell. - var iColSpan = isNaN( aCells[0].colSpan ) ? 1 : aCells[0].colSpan ; - - var sHtml = '' ; - var oCellsContents = FCK.EditorDocument.createDocumentFragment() ; - - for ( var i = aCells.length - 1 ; i >= 0 ; i-- ) - { - var eCell = aCells[i] ; - - // Move its contents to the document fragment. - for ( var c = eCell.childNodes.length - 1 ; c >= 0 ; c-- ) - { - var eChild = eCell.removeChild( eCell.childNodes[c] ) ; - - if ( ( eChild.hasAttribute && eChild.hasAttribute('_moz_editor_bogus_node') ) || ( eChild.getAttribute && eChild.getAttribute( 'type', 2 ) == '_moz' ) ) - continue ; - - oCellsContents.insertBefore( eChild, oCellsContents.firstChild ) ; - } - - if ( i > 0 ) - { - // Accumulate the colspan of the cell. - iColSpan += isNaN( eCell.colSpan ) ? 1 : eCell.colSpan ; - - // Delete the cell. - FCKTableHandler.DeleteCell( eCell ) ; - } - } - - // Set the innerHTML of the remaining cell (the first one). - aCells[0].colSpan = iColSpan ; - - if ( FCKBrowserInfo.IsGecko && oCellsContents.childNodes.length == 0 ) - aCells[0].innerHTML = GECKO_BOGUS ; - else - aCells[0].appendChild( oCellsContents ) ; -} - -FCKTableHandler.SplitCell = function() -{ - // Check that just one cell is selected, otherwise return. - var aCells = FCKTableHandler.GetSelectedCells() ; - if ( aCells.length != 1 ) - return ; - - var aMap = this._CreateTableMap( aCells[0].parentNode.parentNode ) ; - var iCellIndex = FCKTableHandler._GetCellIndexSpan( aMap, aCells[0].parentNode.rowIndex , aCells[0] ) ; - - var aCollCells = this._GetCollumnCells( aMap, iCellIndex ) ; - - for ( var i = 0 ; i < aCollCells.length ; i++ ) - { - if ( aCollCells[i] == aCells[0] ) - { - var oNewCell = this.InsertCell( aCells[0] ) ; - if ( !isNaN( aCells[0].rowSpan ) && aCells[0].rowSpan > 1 ) - oNewCell.rowSpan = aCells[0].rowSpan ; - } - else - { - if ( isNaN( aCollCells[i].colSpan ) ) - aCollCells[i].colSpan = 2 ; - else - aCollCells[i].colSpan += 1 ; - } - } -} - -// Get the cell index from a TableMap. -FCKTableHandler._GetCellIndexSpan = function( tableMap, rowIndex, cell ) -{ - if ( tableMap.length < rowIndex + 1 ) - return null ; - - var oRow = tableMap[ rowIndex ] ; - - for ( var c = 0 ; c < oRow.length ; c++ ) - { - if ( oRow[c] == cell ) - return c ; - } - - return null ; -} - -// Get the cells available in a collumn of a TableMap. -FCKTableHandler._GetCollumnCells = function( tableMap, collumnIndex ) -{ - var aCollCells = new Array() ; - - for ( var r = 0 ; r < tableMap.length ; r++ ) - { - var oCell = tableMap[r][collumnIndex] ; - if ( oCell && ( aCollCells.length == 0 || aCollCells[ aCollCells.length - 1 ] != oCell ) ) - aCollCells[ aCollCells.length ] = oCell ; - } - - return aCollCells ; -} - -// This function is quite hard to explain. It creates a matrix representing all cells in a table. -// The difference here is that the "spanned" cells (colSpan and rowSpan) are duplicated on the matrix -// cells that are "spanned". For example, a row with 3 cells where the second cell has colSpan=2 and rowSpan=3 -// will produce a bi-dimensional matrix with the following values (representing the cells): -// Cell1, Cell2, Cell2, Cell 3 -// Cell4, Cell2, Cell2, Cell 5 -FCKTableHandler._CreateTableMap = function( table ) -{ - var aRows = table.rows ; - - // Row and Collumn counters. - var r = -1 ; - - var aMap = new Array() ; - - for ( var i = 0 ; i < aRows.length ; i++ ) - { - r++ ; - if ( !aMap[r] ) - aMap[r] = new Array() ; - - var c = -1 ; - - for ( var j = 0 ; j < aRows[i].cells.length ; j++ ) - { - var oCell = aRows[i].cells[j] ; - - c++ ; - while ( aMap[r][c] ) - c++ ; - - var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ; - var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ; - - for ( var rs = 0 ; rs < iRowSpan ; rs++ ) - { - if ( !aMap[r + rs] ) - aMap[r + rs] = new Array() ; - - for ( var cs = 0 ; cs < iColSpan ; cs++ ) - { - aMap[r + rs][c + cs] = aRows[i].cells[j] ; - } - } - - c += iColSpan - 1 ; - } - } - return aMap ; -} - -FCKTableHandler.ClearRow = function( tr ) -{ - // Get the array of row's cells. - var aCells = tr.cells ; - - // Replace the contents of each cell with "nothing". - for ( var i = 0 ; i < aCells.length ; i++ ) - { - if ( FCKBrowserInfo.IsGecko ) - aCells[i].innerHTML = GECKO_BOGUS ; - else - aCells[i].innerHTML = '' ; - } -} diff --git a/static/fckeditor/editor/_source/internals/fcktools.js b/static/fckeditor/editor/_source/internals/fcktools.js deleted file mode 100644 index 5e9ff91..0000000 --- a/static/fckeditor/editor/_source/internals/fcktools.js +++ /dev/null @@ -1,233 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Utility functions. - */ - -// Constant for the Gecko Bogus Node. -//var GECKO_BOGUS = '
    ' ; -var GECKO_BOGUS = '
    ' ; - -var FCKTools = new Object() ; - -FCKTools.CreateBogusBR = function( targetDocument ) -{ - var eBR = targetDocument.createElement( 'br' ) ; -// eBR.setAttribute( '_moz_editor_bogus_node', 'TRUE' ) ; - eBR.setAttribute( 'type', '_moz' ) ; - return eBR ; -} - -// Returns a reference to the appended style sheet or an array with all the appended references -FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray ) -{ - if ( typeof( cssFileUrlOrArray ) == 'string' ) - return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ; - else - { - var aStyleSheeArray = new Array() ; - - for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ ) - aStyleSheeArray.push(this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ) ; - - return aStyleSheeArray ; - } -} - -FCKTools.GetElementDocument = function ( element ) -{ - return element.ownerDocument || element.document ; -} - -// Get the window object where the element is placed in. -FCKTools.GetElementWindow = function( element ) -{ - return this.GetDocumentWindow( this.GetElementDocument( element ) ) ; -} - -FCKTools.GetDocumentWindow = function( document ) -{ - // With Safari, there is not way to retrieve the window from the document, so we must fix it. - if ( FCKBrowserInfo.IsSafari && !document.parentWindow ) - this.FixDocumentParentWindow( window.top ) ; - - return document.parentWindow || document.defaultView ; -} - -/* - This is a Safari specific function that fix the reference to the parent - window from the document object. -*/ -FCKTools.FixDocumentParentWindow = function( targetWindow ) -{ - targetWindow.document.parentWindow = targetWindow ; - - for ( var i = 0 ; i < targetWindow.frames.length ; i++ ) - FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ; -} - -FCKTools.HTMLEncode = function( text ) -{ - if ( !text ) - return '' ; - - text = text.replace( /&/g, '&' ) ; - text = text.replace( //g, '>' ) ; - - return text ; -} - -FCKTools.HTMLDecode = function( text ) -{ - if ( !text ) - return '' ; - - text = text.replace( />/g, '>' ) ; - text = text.replace( /</g, '<' ) ; - text = text.replace( /&/g, '&' ) ; - - return text ; -} - -/** - * Adds an option to a SELECT element. - */ -FCKTools.AddSelectOption = function( selectElement, optionText, optionValue ) -{ - var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ; - - oOption.text = optionText ; - oOption.value = optionValue ; - - selectElement.options.add(oOption) ; - - return oOption ; -} - -FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow ) -{ - if ( func ) - this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ; -} - -FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow ) -{ - return ( timerWindow || window ).setTimeout( - function() - { - if ( paramsArray ) - func.apply( thisObject, [].concat( paramsArray ) ) ; - else - func.apply( thisObject ) ; - }, - milliseconds ) ; -} - -FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow ) -{ - return ( timerWindow || window ).setInterval( - function() - { - func.apply( thisObject, paramsArray || [] ) ; - }, - milliseconds ) ; -} - -FCKTools.ConvertStyleSizeToHtml = function( size ) -{ - return size.EndsWith( '%' ) ? size : parseInt( size, 10 ) ; -} - -FCKTools.ConvertHtmlSizeToStyle = function( size ) -{ - return size.EndsWith( '%' ) ? size : ( size + 'px' ) ; -} - -// START iCM MODIFICATIONS -// Amended to accept a list of one or more ascensor tag names -// Amended to check the element itself before working back up through the parent hierarchy -FCKTools.GetElementAscensor = function( element, ascensorTagNames ) -{ -// var e = element.parentNode ; - var e = element ; - var lstTags = "," + ascensorTagNames.toUpperCase() + "," ; - - while ( e ) - { - if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 ) - return e ; - - e = e.parentNode ; - } - return null ; -} -// END iCM MODIFICATIONS - -FCKTools.CreateEventListener = function( func, params ) -{ - var f = function() - { - var aAllParams = [] ; - - for ( var i = 0 ; i < arguments.length ; i++ ) - aAllParams.push( arguments[i] ) ; - - func.apply( this, aAllParams.concat( params ) ) ; - } - - return f ; -} - -FCKTools.IsStrictMode = function( document ) -{ - // There is no compatMode in Safari, but it seams that it always behave as - // CSS1Compat, so let's assume it as the default. - return ( 'CSS1Compat' == ( document.compatMode || 'CSS1Compat' ) ) ; -} - -// Transforms a "arguments" object to an array. -FCKTools.ArgumentsToArray = function( args, startIndex, maxLength ) -{ - startIndex = startIndex || 0 ; - maxLength = maxLength || args.length ; - - var argsArray = new Array() ; - - for ( var i = startIndex ; i < startIndex + maxLength && i < args.length ; i++ ) - argsArray.push( args[i] ) ; - - return argsArray ; -} - -FCKTools.CloneObject = function( sourceObject ) -{ - var fCloneCreator = function() {} ; - fCloneCreator.prototype = sourceObject ; - return new fCloneCreator ; -} - -FCKTools.GetLastItem = function( list ) -{ - if ( list.length > 0 ) - return list[ list.length - 1 ] ; - - return null ; -} diff --git a/static/fckeditor/editor/_source/internals/fckundo_ie.js b/static/fckeditor/editor/_source/internals/fckundo_ie.js deleted file mode 100644 index 3216bb7..0000000 --- a/static/fckeditor/editor/_source/internals/fckundo_ie.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * IE specific implementation for the Undo/Redo system. - */ - -var FCKUndo = new Object() ; - -FCKUndo.SavedData = new Array() ; -FCKUndo.CurrentIndex = -1 ; -FCKUndo.TypesCount = FCKUndo.MaxTypes = 25 ; -FCKUndo.Typing = false ; - -FCKUndo.SaveUndoStep = function() -{ - if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) - return ; - - // Shrink the array to the current level. - FCKUndo.SavedData = FCKUndo.SavedData.slice( 0, FCKUndo.CurrentIndex + 1 ) ; - - // Get the Actual HTML. - var sHtml = FCK.EditorDocument.body.innerHTML ; - - // Cancel operation if the new step is identical to the previous one. - if ( FCKUndo.CurrentIndex >= 0 && sHtml == FCKUndo.SavedData[ FCKUndo.CurrentIndex ][0] ) - return ; - - // If we reach the Maximun number of undo levels, we must remove the first - // entry of the list shifting all elements. - if ( FCKUndo.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels ) - FCKUndo.SavedData.shift() ; - else - FCKUndo.CurrentIndex++ ; - - // Get the actual selection. - var sBookmark ; - if ( FCK.EditorDocument.selection.type == 'Text' ) - sBookmark = FCK.EditorDocument.selection.createRange().getBookmark() ; - - // Save the new level in front of the actual position. - FCKUndo.SavedData[ FCKUndo.CurrentIndex ] = [ sHtml, sBookmark ] ; - - FCK.Events.FireEvent( "OnSelectionChange" ) ; -} - -FCKUndo.CheckUndoState = function() -{ - return ( FCKUndo.Typing || FCKUndo.CurrentIndex > 0 ) ; -} - -FCKUndo.CheckRedoState = function() -{ - return ( !FCKUndo.Typing && FCKUndo.CurrentIndex < ( FCKUndo.SavedData.length - 1 ) ) ; -} - -FCKUndo.Undo = function() -{ - if ( FCKUndo.CheckUndoState() ) - { - // If it is the first step. - if ( FCKUndo.CurrentIndex == ( FCKUndo.SavedData.length - 1 ) ) - { - // Save the actual state for a possible "Redo" call. - FCKUndo.SaveUndoStep() ; - } - - // Go a step back. - FCKUndo._ApplyUndoLevel( --FCKUndo.CurrentIndex ) ; - - FCK.Events.FireEvent( "OnSelectionChange" ) ; - } -} - -FCKUndo.Redo = function() -{ - if ( FCKUndo.CheckRedoState() ) - { - // Go a step forward. - FCKUndo._ApplyUndoLevel( ++FCKUndo.CurrentIndex ) ; - - FCK.Events.FireEvent( "OnSelectionChange" ) ; - } -} - -FCKUndo._ApplyUndoLevel = function(level) -{ - var oData = FCKUndo.SavedData[ level ] ; - - if ( !oData ) - return ; - - // Update the editor contents with that step data. - FCK.SetInnerHtml( oData[0] ) ; -// FCK.EditorDocument.body.innerHTML = oData[0] ; - - if ( oData[1] ) - { - var oRange = FCK.EditorDocument.selection.createRange() ; - oRange.moveToBookmark( oData[1] ) ; - oRange.select() ; - } - - FCKUndo.TypesCount = 0 ; - FCKUndo.Typing = false ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/css/fck_editorarea.css b/static/fckeditor/editor/css/fck_editorarea.css deleted file mode 100644 index 8539aa4..0000000 --- a/static/fckeditor/editor/css/fck_editorarea.css +++ /dev/null @@ -1,91 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * This is the default CSS file used by the editor area. It defines the - * initial font of the editor and background color. - * - * A user can configure the editor to use another CSS file. Just change - * the value of the FCKConfig.EditorAreaCSS key in the configuration - * file. - */ - -/* - The "body" styles should match your editor web site, mainly regarding - background color and font family and size. -*/ - -body -{ - background-color: #ffffff; - padding: 5px 5px 5px 5px; - margin: 0px; -} - -body, td -{ - font-family: Arial, Verdana, Sans-Serif; - font-size: 12px; -} - -a[href] -{ - color: #0000FF !important; /* For Firefox... mark as important, otherwise it becomes black */ -} - -/* - Just uncomment the following block if you want to avoid spaces between - paragraphs. Remember to apply the same style in your output front end page. -*/ - -/* -p, ul, li -{ - margin-top: 0px; - margin-bottom: 0px; -} -*/ - -/* - The following are some sample styles used in the "Styles" toolbar command. - You should instead remove them, and include the styles used by the site - you are using the editor in. -*/ - -.Bold -{ - font-weight: bold; -} - -.Title -{ - font-weight: bold; - font-size: 18px; - color: #cc3300; -} - -.Code -{ - border: #8b4513 1px solid; - padding-right: 5px; - padding-left: 5px; - color: #000066; - font-family: 'Courier New' , Monospace; - background-color: #ff9933; -} \ No newline at end of file diff --git a/static/fckeditor/editor/dialog/common/fck_dialog_common.js b/static/fckeditor/editor/dialog/common/fck_dialog_common.js deleted file mode 100644 index 26b5628..0000000 --- a/static/fckeditor/editor/dialog/common/fck_dialog_common.js +++ /dev/null @@ -1,154 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Useful functions used by almost all dialog window pages. - */ - -var GECKO_BOGUS = '
    ' ; - -// Gets a element by its Id. Used for shorter coding. -function GetE( elementId ) -{ - return document.getElementById( elementId ) ; -} - -function ShowE( element, isVisible ) -{ - if ( typeof( element ) == 'string' ) - element = GetE( element ) ; - element.style.display = isVisible ? '' : 'none' ; -} - -function SetAttribute( element, attName, attValue ) -{ - if ( attValue == null || attValue.length == 0 ) - element.removeAttribute( attName, 0 ) ; // 0 : Case Insensitive - else - element.setAttribute( attName, attValue, 0 ) ; // 0 : Case Insensitive -} - -function GetAttribute( element, attName, valueIfNull ) -{ - var oAtt = element.attributes[attName] ; - - if ( oAtt == null || !oAtt.specified ) - return valueIfNull ? valueIfNull : '' ; - - var oValue = element.getAttribute( attName, 2 ) ; - - if ( oValue == null ) - oValue = oAtt.nodeValue ; - - return ( oValue == null ? valueIfNull : oValue ) ; -} - -// Functions used by text fiels to accept numbers only. -function IsDigit( e ) -{ - if ( !e ) - e = event ; - - var iCode = ( e.keyCode || e.charCode ) ; - - return ( - ( iCode >= 48 && iCode <= 57 ) // Numbers - || (iCode >= 37 && iCode <= 40) // Arrows - || iCode == 8 // Backspace - || iCode == 46 // Delete - ) ; -} - -String.prototype.Trim = function() -{ - return this.replace( /(^\s*)|(\s*$)/g, '' ) ; -} - -String.prototype.StartsWith = function( value ) -{ - return ( this.substr( 0, value.length ) == value ) ; -} - -String.prototype.Remove = function( start, length ) -{ - var s = '' ; - - if ( start > 0 ) - s = this.substring( 0, start ) ; - - if ( start + length < this.length ) - s += this.substring( start + length , this.length ) ; - - return s ; -} - -String.prototype.ReplaceAll = function( searchArray, replaceArray ) -{ - var replaced = this ; - - for ( var i = 0 ; i < searchArray.length ; i++ ) - { - replaced = replaced.replace( searchArray[i], replaceArray[i] ) ; - } - - return replaced ; -} - -function OpenFileBrowser( url, width, height ) -{ - // oEditor must be defined. - - var iLeft = ( oEditor.FCKConfig.ScreenWidth - width ) / 2 ; - var iTop = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ; - - var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes,scrollbars=yes" ; - sOptions += ",width=" + width ; - sOptions += ",height=" + height ; - sOptions += ",left=" + iLeft ; - sOptions += ",top=" + iTop ; - - // The "PreserveSessionOnFileBrowser" because the above code could be - // blocked by popup blockers. - if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE ) - { - // The following change has been made otherwise IE will open the file - // browser on a different server session (on some cases): - // http://support.microsoft.com/default.aspx?scid=kb;en-us;831678 - // by Simone Chiaretta. - var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ; - - if ( oWindow ) - { - // Detect Yahoo popup blocker. - try - { - var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user. - oWindow.opener = window ; - } - catch(e) - { - alert( oEditor.FCKLang.BrowseServerBlocked ) ; - } - } - else - alert( oEditor.FCKLang.BrowseServerBlocked ) ; - } - else - window.open( url, 'FCKBrowseWindow', sOptions ) ; -} \ No newline at end of file diff --git a/static/fckeditor/editor/dialog/common/fcknumericfield.htc b/static/fckeditor/editor/dialog/common/fcknumericfield.htc deleted file mode 100644 index 74f26d0..0000000 --- a/static/fckeditor/editor/dialog/common/fcknumericfield.htc +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/static/fckeditor/editor/dialog/common/moz-bindings.xml b/static/fckeditor/editor/dialog/common/moz-bindings.xml deleted file mode 100644 index a457577..0000000 --- a/static/fckeditor/editor/dialog/common/moz-bindings.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - this.keypress = CheckIsDigit ; - - - - = 48 && iCode <= 57 ) // Numbers - || (iCode >= 37 && iCode <= 40) // Arrows - || iCode == 8 // Backspace - || iCode == 46 // Delete - ) ; - - return bAccepted ; - ]]> - - - - - - - - \ No newline at end of file diff --git a/static/fckeditor/editor/dialog/fck_find.html b/static/fckeditor/editor/dialog/fck_find.html deleted file mode 100644 index eba7f90..0000000 --- a/static/fckeditor/editor/dialog/fck_find.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
    -   - - - - -
    -   -
    - -
    - - diff --git a/static/fckeditor/editor/dialog/fck_image/fck_image_preview.html b/static/fckeditor/editor/dialog/fck_image/fck_image_preview.html deleted file mode 100644 index 21bdc25..0000000 --- a/static/fckeditor/editor/dialog/fck_image/fck_image_preview.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - -
    - Lorem - ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. - Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. - Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis - euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce - mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. - Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque - egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, - in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut - placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy - metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, - ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris - non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas - elementum. Nunc imperdiet gravida mauris. - - diff --git a/static/fckeditor/editor/dialog/fck_replace.html b/static/fckeditor/editor/dialog/fck_replace.html deleted file mode 100644 index fe5a788..0000000 --- a/static/fckeditor/editor/dialog/fck_replace.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    - - - - - -
    -   -
    -   -
    - - diff --git a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm b/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm deleted file mode 100644 index a2f8c77..0000000 --- a/static/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - - function LastIndexOf(subs, str) - { - return Len(str) - Find(subs, Reverse(str)) + 1; - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/fckeditor/editor/fckdialog.html b/static/fckeditor/editor/fckdialog.html deleted file mode 100644 index 7f26822..0000000 --- a/static/fckeditor/editor/fckdialog.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - - - - - -
      - -   - -
    -
    - - \ No newline at end of file diff --git a/static/fckeditor/editor/fckeditor.html b/static/fckeditor/editor/fckeditor.html deleted file mode 100644 index 25ad37e..0000000 --- a/static/fckeditor/editor/fckeditor.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - FCKeditor - - - - - - - - - - - - - - - - - - -
    - - diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp b/static/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp deleted file mode 100644 index b5e8581..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/class_upload.asp +++ /dev/null @@ -1,257 +0,0 @@ - -<% -'********************************************** -' File: NetRube_Upload.asp -' Version: NetRube Upload Class Version 2.3 Build 20070528 -' Author: NetRube -' Email: NetRube@126.com -' Date: 05/28/2007 -' Comments: The code for the Upload. -' This can free usage, but please -' not to delete this copyright information. -' If you have a modification version, -' Please send out a duplicate to me. -'********************************************** -' 文件名: NetRube_Upload.asp -' 版本: NetRube Upload Class Version 2.3 Build 20070528 -' 作者: NetRube(网络乡巴佬) -' 电子邮件: NetRube@126.com -' 日期: 2007年05月28日 -' 声明: 文件上传类 -' 本上传类可以自由使用,但请保留此版权声明信息 -' 如果您对本上传类进行修改增强, -' 请发送一份给俺。 -'********************************************** - -Class NetRube_Upload - - Public File, Form - Private oSourceData - Private nMaxSize, nErr, sAllowed, sDenied - - Private Sub Class_Initialize - nErr = 0 - nMaxSize = 1048576 - - Set File = Server.CreateObject("Scripting.Dictionary") - File.CompareMode = 1 - Set Form = Server.CreateObject("Scripting.Dictionary") - Form.CompareMode = 1 - - Set oSourceData = Server.CreateObject("ADODB.Stream") - oSourceData.Type = 1 - oSourceData.Mode = 3 - oSourceData.Open - End Sub - - Private Sub Class_Terminate - Form.RemoveAll - Set Form = Nothing - File.RemoveAll - Set File = Nothing - - oSourceData.Close - Set oSourceData = Nothing - End Sub - - Public Property Get Version - Version = "NetRube Upload Class Version 2.3 Build 20070528" - End Property - - Public Property Get ErrNum - ErrNum = nErr - End Property - - Public Property Let MaxSize(nSize) - nMaxSize = nSize - End Property - - Public Property Let Allowed(sExt) - sAllowed = sExt - End Property - - Public Property Let Denied(sExt) - sDenied = sExt - End Property - - Public Sub GetData - Dim aCType - aCType = Split(Request.ServerVariables("HTTP_CONTENT_TYPE"), ";") - If aCType(0) <> "multipart/form-data" Then - nErr = 1 - Exit Sub - End If - - Dim nTotalSize - nTotalSize = Request.TotalBytes - If nTotalSize < 1 Then - nErr = 2 - Exit Sub - End If - If nMaxSize > 0 And nTotalSize > nMaxSize Then - nErr = 3 - Exit Sub - End If - - 'Thankful long(yrl031715@163.com) - 'Fix upload large file. - '********************************************** - ' 修正作者:long - ' 联系邮件: yrl031715@163.com - ' 修正时间:2007年5月6日 - ' 修正说明:由于iis6的Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值(默认200K), IIS 将返回一个 403 错误信息. - ' 直接导致在iis6下调试FCKeditor上传功能时,一旦文件超过200K,上传文件时文件管理器失去响应,受此影响,文件的快速上传功能也存在在缺陷。 - ' 在参考 宝玉 的 Asp无组件上传带进度条 演示程序后作出如下修改,以修正在iis6下的错误。 - - Dim nTotalBytes, nPartBytes, ReadBytes - ReadBytes = 0 - nTotalBytes = Request.TotalBytes - '循环分块读取 - Do While ReadBytes < nTotalBytes - '分块读取 - nPartBytes = 64 * 1024 '分成每块64k - If nPartBytes + ReadBytes > nTotalBytes Then - nPartBytes = nTotalBytes - ReadBytes - End If - oSourceData.Write Request.BinaryRead(nPartBytes) - ReadBytes = ReadBytes + nPartBytes - Loop - '********************************************** - oSourceData.Position = 0 - - Dim oTotalData, oFormStream, sFormHeader, sFormName, bCrLf, nBoundLen, nFormStart, nFormEnd, nPosStart, nPosEnd, sBoundary - - oTotalData = oSourceData.Read - bCrLf = ChrB(13) & ChrB(10) - sBoundary = MidB(oTotalData, 1, InStrB(1, oTotalData, bCrLf) - 1) - nBoundLen = LenB(sBoundary) + 2 - nFormStart = nBoundLen - - Set oFormStream = Server.CreateObject("ADODB.Stream") - - Do While (nFormStart + 2) < nTotalSize - nFormEnd = InStrB(nFormStart, oTotalData, bCrLf & bCrLf) + 3 - - With oFormStream - .Type = 1 - .Mode = 3 - .Open - oSourceData.Position = nFormStart - oSourceData.CopyTo oFormStream, nFormEnd - nFormStart - .Position = 0 - .Type = 2 - .CharSet = "UTF-8" - sFormHeader = .ReadText - .Close - End With - - nFormStart = InStrB(nFormEnd, oTotalData, sBoundary) - 1 - nPosStart = InStr(22, sFormHeader, " name=", 1) + 7 - nPosEnd = InStr(nPosStart, sFormHeader, """") - sFormName = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart) - - If InStr(45, sFormHeader, " filename=", 1) > 0 Then - Set File(sFormName) = New NetRube_FileInfo - File(sFormName).FormName = sFormName - File(sFormName).Start = nFormEnd - File(sFormName).Size = nFormStart - nFormEnd - 2 - nPosStart = InStr(nPosEnd, sFormHeader, " filename=", 1) + 11 - nPosEnd = InStr(nPosStart, sFormHeader, """") - File(sFormName).ClientPath = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart) - File(sFormName).Name = Mid(File(sFormName).ClientPath, InStrRev(File(sFormName).ClientPath, "\") + 1) - File(sFormName).Ext = LCase(Mid(File(sFormName).Name, InStrRev(File(sFormName).Name, ".") + 1)) - nPosStart = InStr(nPosEnd, sFormHeader, "Content-Type: ", 1) + 14 - nPosEnd = InStr(nPosStart, sFormHeader, vbCr) - File(sFormName).MIME = Mid(sFormHeader, nPosStart, nPosEnd - nPosStart) - Else - With oFormStream - .Type = 1 - .Mode = 3 - .Open - oSourceData.Position = nFormEnd - oSourceData.CopyTo oFormStream, nFormStart - nFormEnd - 2 - .Position = 0 - .Type = 2 - .CharSet = "UTF-8" - Form(sFormName) = .ReadText - .Close - End With - End If - - nFormStart = nFormStart + nBoundLen - Loop - - oTotalData = "" - Set oFormStream = Nothing - End Sub - - Public Sub SaveAs(sItem, sFileName) - If File(sItem).Size < 1 Then - nErr = 2 - Exit Sub - End If - - If Not IsAllowed(File(sItem).Ext) Then - nErr = 4 - Exit Sub - End If - - Dim oFileStream - Set oFileStream = Server.CreateObject("ADODB.Stream") - With oFileStream - .Type = 1 - .Mode = 3 - .Open - oSourceData.Position = File(sItem).Start - oSourceData.CopyTo oFileStream, File(sItem).Size - .Position = 0 - .SaveToFile sFileName, 2 - .Close - End With - Set oFileStream = Nothing - End Sub - - Private Function IsAllowed(sExt) - Dim oRE - Set oRE = New RegExp - oRE.IgnoreCase = True - oRE.Global = True - - If sDenied = "" Then - oRE.Pattern = sAllowed - IsAllowed = (sAllowed = "") Or oRE.Test(sExt) - Else - oRE.Pattern = sDenied - IsAllowed = Not oRE.Test(sExt) - End If - - Set oRE = Nothing - End Function -End Class - -Class NetRube_FileInfo - Dim FormName, ClientPath, Path, Name, Ext, Content, Size, MIME, Start -End Class -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp b/static/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp deleted file mode 100644 index ce83c37..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/config.asp +++ /dev/null @@ -1,49 +0,0 @@ - -<% - -' SECURITY: You must explicitelly enable this "connector" (set it to "True"). -Dim ConfigIsEnabled -ConfigIsEnabled = False - -' Path to user files relative to the document root. -Dim ConfigUserFilesPath -ConfigUserFilesPath = "/userfiles/" - -Dim ConfigAllowedExtensions, ConfigDeniedExtensions -Set ConfigAllowedExtensions = CreateObject( "Scripting.Dictionary" ) -Set ConfigDeniedExtensions = CreateObject( "Scripting.Dictionary" ) - -ConfigAllowedExtensions.Add "File", "" -ConfigDeniedExtensions.Add "File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm" - -ConfigAllowedExtensions.Add "Image", "jpg|gif|jpeg|png|bmp" -ConfigDeniedExtensions.Add "Image", "" - -ConfigAllowedExtensions.Add "Flash", "swf|fla" -ConfigDeniedExtensions.Add "Flash", "" - -ConfigAllowedExtensions.Add "Media", "swf|fla|jpg|gif|jpeg|png|avi|mpg|mpeg|mp(1-4)|wma|wmv|wav|mid|midi|rmi|rm|ram|rmvb|mov|qt" -ConfigDeniedExtensions.Add "Media", "" - -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp b/static/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp deleted file mode 100644 index 69594dc..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp +++ /dev/null @@ -1,124 +0,0 @@ -<%@ CodePage=65001 Language="VBScript"%> -<% -Option Explicit -Response.Buffer = True -%> - - - - - - - -<% - -If ( ConfigIsEnabled = False ) Then - SendError 1, "This connector is disabled. Please check the ""editor/filemanager/browser/default/connectors/asp/config.asp"" file" -End If - -' Get the "UserFiles" path. -Dim sUserFilesPath - -If ( Not IsEmpty( ConfigUserFilesPath ) ) Then - sUserFilesPath = ConfigUserFilesPath - - If ( Right( sUserFilesPath, 1 ) <> "/" ) Then - sUserFilesPath = sUserFilesPath & "/" - End If -Else - sUserFilesPath = "/userfiles/" -End If - -' Map the "UserFiles" path to a local directory. -Dim sUserFilesDirectory -sUserFilesDirectory = Server.MapPath( sUserFilesPath ) - -If ( Right( sUserFilesDirectory, 1 ) <> "\" ) Then - sUserFilesDirectory = sUserFilesDirectory & "\" -End If - -DoResponse - -Sub DoResponse() - Dim sCommand, sResourceType, sCurrentFolder - - ' Get the main request information. - sCommand = Request.QueryString("Command") - If ( sCommand = "" ) Then Exit Sub - - sResourceType = Request.QueryString("Type") - If ( sResourceType = "" ) Then Exit Sub - - sCurrentFolder = Request.QueryString("CurrentFolder") - If ( sCurrentFolder = "" ) Then Exit Sub - - ' Check if it is an allower resource type. - if ( Not IsAllowedType( sResourceType ) ) Then Exit Sub - - ' Check the current folder syntax (must begin and start with a slash). - If ( Right( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = sCurrentFolder & "/" - If ( Left( sCurrentFolder, 1 ) <> "/" ) Then sCurrentFolder = "/" & sCurrentFolder - - ' Check for invalid folder paths (..) - If ( InStr( 1, sCurrentFolder, ".." ) <> 0 OR InStr( 1, sResourceType, ".." ) <> 0 ) Then - SendError 102, "" - End If - - ' File Upload doesn't have to Return XML, so it must be intercepted before anything. - If ( sCommand = "FileUpload" ) Then - FileUpload sResourceType, sCurrentFolder - Exit Sub - End If - - SetXmlHeaders - - CreateXmlHeader sCommand, sResourceType, sCurrentFolder - - ' Execute the required command. - Select Case sCommand - Case "GetFolders" - GetFolders sResourceType, sCurrentFolder - Case "GetFoldersAndFiles" - GetFoldersAndFiles sResourceType, sCurrentFolder - Case "CreateFolder" - CreateFolder sResourceType, sCurrentFolder - End Select - - CreateXmlFooter - - Response.End -End Sub - -Function IsAllowedType( resourceType ) - Dim oRE - Set oRE = New RegExp - oRE.IgnoreCase = True - oRE.Global = True - oRE.Pattern = "^(File|Image|Flash|Media)$" - - IsAllowedType = oRE.Test( resourceType ) - - Set oRE = Nothing -End Function -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp b/static/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp deleted file mode 100644 index 3b764c8..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/asp/io.asp +++ /dev/null @@ -1,89 +0,0 @@ - -<% -Function GetUrlFromPath( resourceType, folderPath ) - If resourceType = "" Then - GetUrlFromPath = RemoveFromEnd( sUserFilesPath, "/" ) & folderPath - Else - GetUrlFromPath = sUserFilesPath & LCase( resourceType ) & folderPath - End If -End Function - -Function RemoveExtension( fileName ) - RemoveExtension = Left( fileName, InStrRev( fileName, "." ) - 1 ) -End Function - -Function ServerMapFolder( resourceType, folderPath ) - ' Get the resource type directory. - Dim sResourceTypePath - sResourceTypePath = sUserFilesDirectory & LCase( resourceType ) & "\" - - ' Ensure that the directory exists. - CreateServerFolder sResourceTypePath - - ' Return the resource type directory combined with the required path. - ServerMapFolder = sResourceTypePath & RemoveFromStart( folderPath, "/" ) -End Function - -Sub CreateServerFolder( folderPath ) - Dim oFSO - Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) - - Dim sParent - sParent = oFSO.GetParentFolderName( folderPath ) - - ' Check if the parent exists, or create it. - If ( NOT oFSO.FolderExists( sParent ) ) Then CreateServerFolder( sParent ) - - If ( oFSO.FolderExists( folderPath ) = False ) Then - oFSO.CreateFolder( folderPath ) - End If - - Set oFSO = Nothing -End Sub - -Function IsAllowedExt( extension, resourceType ) - Dim oRE - Set oRE = New RegExp - oRE.IgnoreCase = True - oRE.Global = True - - Dim sAllowed, sDenied - sAllowed = ConfigAllowedExtensions.Item( resourceType ) - sDenied = ConfigDeniedExtensions.Item( resourceType ) - - IsAllowedExt = True - - If sDenied <> "" Then - oRE.Pattern = sDenied - IsAllowedExt = Not oRE.Test( extension ) - End If - - If IsAllowedExt And sAllowed <> "" Then - oRE.Pattern = sAllowed - IsAllowedExt = oRE.Test( extension ) - End If - - Set oRE = Nothing -End Function -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm b/static/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm deleted file mode 100644 index 29c8da6..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/cfm/config.cfm +++ /dev/null @@ -1,99 +0,0 @@ - - - - config = structNew(); - - // SECURITY: You must explicitly enable this "connector". (Set enabled to "true") - config.enabled = false; - - config.userFilesPath = "/userfiles/"; - - config.serverPath = ""; // use this to force the server path if FCKeditor is not running directly off the root of the application or the FCKeditor directory in the URL is a virtual directory or a symbolic link / junction - - config.allowedExtensions = structNew(); - config.deniedExtensions = structNew(); - - // config.allowedExtensions["File"] = "doc,rtf,pdf,ppt,pps,xls,csv,vnd,zip"; - config.allowedExtensions["File"] = ""; - config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis,sh,shtml,shtm,phtm"; - - config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp"; - config.deniedExtensions["Image"] = ""; - - config.allowedExtensions["Flash"] = "swf,fla"; - config.deniedExtensions["Flash"] = ""; - - config.allowedExtensions["Media"] = "swf,fla,jpg,gif,jpeg,png,avi,mpg,mpeg,mp3,mp4,m4a,wma,wmv,wav,mid,midi,rmi,rm,ram,rmvb,mov,qt"; - config.deniedExtensions["Media"] = ""; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function structCopyKeys(stFrom, stTo) { - for ( key in stFrom ) { - if ( isStruct(stFrom[key]) ) { - structCopyKeys(stFrom[key],stTo[key]); - } else { - stTo[key] = stFrom[key]; - } - } - } - structCopyKeys(FCKeditor, config); - - - diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/php/config.php b/static/fckeditor/editor/filemanager/browser/default/connectors/php/config.php deleted file mode 100644 index 175f0b6..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/php/config.php +++ /dev/null @@ -1,56 +0,0 @@ - \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php b/static/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php deleted file mode 100644 index cc05f28..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php +++ /dev/null @@ -1,113 +0,0 @@ - 0 ) -{ - $GLOBALS["UserFilesDirectory"] = $Config['UserFilesAbsolutePath'] ; - - if ( ! ereg( '/$', $GLOBALS["UserFilesDirectory"] ) ) - $GLOBALS["UserFilesDirectory"] .= '/' ; -} -else -{ - // Map the "UserFiles" path to a local directory. - $GLOBALS["UserFilesDirectory"] = GetRootPath() . $GLOBALS["UserFilesPath"] ; -} - -DoResponse() ; - -function DoResponse() -{ - if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) ) - return ; - - // Get the main request informaiton. - $sCommand = $_GET['Command'] ; - $sResourceType = $_GET['Type'] ; - $sCurrentFolder = $_GET['CurrentFolder'] ; - - // Check if it is an allowed type. - if ( !in_array( $sResourceType, array('File','Image','Flash','Media') ) ) - return ; - - // Check the current folder syntax (must begin and start with a slash). - if ( ! ereg( '/$', $sCurrentFolder ) ) $sCurrentFolder .= '/' ; - if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ; - - // Check for invalid folder paths (..) - if ( strpos( $sCurrentFolder, '..' ) ) - SendError( 102, "" ) ; - - // File Upload doesn't have to Return XML, so it must be intercepted before anything. - if ( $sCommand == 'FileUpload' ) - { - FileUpload( $sResourceType, $sCurrentFolder ) ; - return ; - } - - CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ; - - // Execute the required command. - switch ( $sCommand ) - { - case 'GetFolders' : - GetFolders( $sResourceType, $sCurrentFolder ) ; - break ; - case 'GetFoldersAndFiles' : - GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ; - break ; - case 'CreateFolder' : - CreateFolder( $sResourceType, $sCurrentFolder ) ; - break ; - } - - CreateXmlFooter() ; - - exit ; -} -?> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/php/io.php b/static/fckeditor/editor/filemanager/browser/default/connectors/php/io.php deleted file mode 100644 index a53cd93..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/php/io.php +++ /dev/null @@ -1,125 +0,0 @@ - strlen( $sRealPath ) - strlen( $sSelfPath ) ) - SendError( 1, 'Sorry, can\'t map "UserFilesPath" to a physical path. You must set the "UserFilesAbsolutePath" value in "editor/filemanager/browser/default/connectors/php/config.php".' ) ; - - return substr( $sRealPath, 0, $position ) ; -} -?> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/php/util.php b/static/fckeditor/editor/filemanager/browser/default/connectors/php/util.php deleted file mode 100644 index cc9840e..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/php/util.php +++ /dev/null @@ -1,41 +0,0 @@ - \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py b/static/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py deleted file mode 100644 index d8fce79..0000000 --- a/static/fckeditor/editor/filemanager/browser/default/connectors/py/connector.py +++ /dev/null @@ -1,785 +0,0 @@ -#!/usr/bin/env python - -""" -FCKeditor - The text editor for Internet - http://www.fckeditor.net -Copyright (C) 2003-2007 Frederico Caldeira Knabben - -== BEGIN LICENSE == - -Licensed under the terms of any of the following licenses at your -choice: - - - GNU General Public License Version 2 or later (the "GPL") - http://www.gnu.org/licenses/gpl.html - - - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - http://www.gnu.org/licenses/lgpl.html - - - Mozilla Public License Version 1.1 or later (the "MPL") - http://www.mozilla.org/MPL/MPL-1.1.html - -== END LICENSE == - -Connector for Python. - -Tested With: -Standard: - Python 2.3.3 -Zope: - Zope Version: (Zope 2.8.1-final, python 2.3.5, linux2) - Python Version: 2.3.5 (#4, Mar 10 2005, 01:40:25) - [GCC 3.3.3 20040412 (Red Hat Linux 3.3.3-7)] - System Platform: linux2 -""" - -""" -Author Notes (04 December 2005): -This module has gone through quite a few phases of change. Obviously, -I am only supporting that part of the code that I use. Initially -I had the upload directory as a part of zope (ie. uploading files -directly into Zope), before realising that there were too many -complex intricacies within Zope to deal with. Zope is one ugly piece -of code. So I decided to complement Zope by an Apache server (which -I had running anyway, and doing nothing). So I mapped all uploads -from an arbitrary server directory to an arbitrary web directory. -All the FCKeditor uploading occurred this way, and I didn't have to -stuff around with fiddling with Zope objects and the like (which are -terribly complex and something you don't want to do - trust me). - -Maybe a Zope expert can touch up the Zope components. In the end, -I had FCKeditor loaded in Zope (probably a bad idea as well), and -I replaced the connector.py with an alias to a server module. -Right now, all Zope components will simple remain as is because -I've had enough of Zope. - -See notes right at the end of this file for how I aliased out of Zope. - -Anyway, most of you probably wont use Zope, so things are pretty -simple in that regard. - -Typically, SERVER_DIR is the root of WEB_DIR (not necessarily). -Most definitely, SERVER_USERFILES_DIR points to WEB_USERFILES_DIR. -""" - -import cgi -import re -import os -import string - -""" -escape - -Converts the special characters '<', '>', and '&'. - -RFC 1866 specifies that these characters be represented -in HTML as < > and & respectively. In Python -1.5 we use the new string.replace() function for speed. -""" -def escape(text, replace=string.replace): - text = replace(text, '&', '&') # must be done 1st - text = replace(text, '<', '<') - text = replace(text, '>', '>') - text = replace(text, '"', '"') - return text - -""" -getFCKeditorConnector - -Creates a new instance of an FCKeditorConnector, and runs it -""" -def getFCKeditorConnector(context=None): - # Called from Zope. Passes the context through - connector = FCKeditorConnector(context=context) - return connector.run() - - -""" -FCKeditorRequest - -A wrapper around the request object -Can handle normal CGI request, or a Zope request -Extend as required -""" -class FCKeditorRequest(object): - def __init__(self, context=None): - if (context is not None): - r = context.REQUEST - else: - r = cgi.FieldStorage() - self.context = context - self.request = r - - def isZope(self): - if (self.context is not None): - return True - return False - - def has_key(self, key): - return self.request.has_key(key) - - def get(self, key, default=None): - value = None - if (self.isZope()): - value = self.request.get(key, default) - else: - if key in self.request.keys(): - value = self.request[key].value - else: - value = default - return value - -""" -FCKeditorConnector - -The connector class -""" -class FCKeditorConnector(object): - # Configuration for FCKEditor - # can point to another server here, if linked correctly - #WEB_HOST = "http://127.0.0.1/" - WEB_HOST = "" - SERVER_DIR = "/var/www/html/" - - WEB_USERFILES_FOLDER = WEB_HOST + "upload/" - SERVER_USERFILES_FOLDER = SERVER_DIR + "upload/" - - # Allow access (Zope) - __allow_access_to_unprotected_subobjects__ = 1 - # Class Attributes - parentFolderRe = re.compile("[\/][^\/]+[\/]?$") - - """ - Constructor - """ - def __init__(self, context=None): - # The given root path will NOT be shown to the user - # Only the userFilesPath will be shown - - # Instance Attributes - self.context = context - self.request = FCKeditorRequest(context=context) - self.rootPath = self.SERVER_DIR - self.userFilesFolder = self.SERVER_USERFILES_FOLDER - self.webUserFilesFolder = self.WEB_USERFILES_FOLDER - - # Enables / Disables the connector - self.enabled = False # Set to True to enable this connector - - # These are instance variables - self.zopeRootContext = None - self.zopeUploadContext = None - - # Copied from php module =) - self.allowedExtensions = { - "File": None, - "Image": None, - "Flash": None, - "Media": None - } - self.deniedExtensions = { - "File": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ], - "Image": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ], - "Flash": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ], - "Media": [ "html","htm","php","php2","php3","php4","php5","phtml","pwml","inc","asp","aspx","ascx","jsp","cfm","cfc","pl","bat","exe","com","dll","vbs","js","reg","cgi","htaccess","asis","sh","shtml","shtm","phtm" ] - } - - """ - Zope specific functions - """ - def isZope(self): - # The context object is the zope object - if (self.context is not None): - return True - return False - - def getZopeRootContext(self): - if self.zopeRootContext is None: - self.zopeRootContext = self.context.getPhysicalRoot() - return self.zopeRootContext - - def getZopeUploadContext(self): - if self.zopeUploadContext is None: - folderNames = self.userFilesFolder.split("/") - c = self.getZopeRootContext() - for folderName in folderNames: - if (folderName <> ""): - c = c[folderName] - self.zopeUploadContext = c - return self.zopeUploadContext - - """ - Generic manipulation functions - """ - def getUserFilesFolder(self): - return self.userFilesFolder - - def getWebUserFilesFolder(self): - return self.webUserFilesFolder - - def getAllowedExtensions(self, resourceType): - return self.allowedExtensions[resourceType] - - def getDeniedExtensions(self, resourceType): - return self.deniedExtensions[resourceType] - - def removeFromStart(self, string, char): - return string.lstrip(char) - - def removeFromEnd(self, string, char): - return string.rstrip(char) - - def convertToXmlAttribute(self, value): - if (value is None): - value = "" - return escape(value) - - def convertToPath(self, path): - if (path[-1] <> "/"): - return path + "/" - else: - return path - - def getUrlFromPath(self, resourceType, path): - if (resourceType is None) or (resourceType == ''): - url = "%s%s" % ( - self.removeFromEnd(self.getUserFilesFolder(), '/'), - path - ) - else: - url = "%s%s%s" % ( - self.getUserFilesFolder(), - resourceType, - path - ) - return url - - def getWebUrlFromPath(self, resourceType, path): - if (resourceType is None) or (resourceType == ''): - url = "%s%s" % ( - self.removeFromEnd(self.getWebUserFilesFolder(), '/'), - path - ) - else: - url = "%s%s%s" % ( - self.getWebUserFilesFolder(), - resourceType, - path - ) - return url - - def removeExtension(self, fileName): - index = fileName.rindex(".") - newFileName = fileName[0:index] - return newFileName - - def getExtension(self, fileName): - index = fileName.rindex(".") + 1 - fileExtension = fileName[index:] - return fileExtension - - def getParentFolder(self, folderPath): - parentFolderPath = self.parentFolderRe.sub('', folderPath) - return parentFolderPath - - """ - serverMapFolder - - Purpose: works out the folder map on the server - """ - def serverMapFolder(self, resourceType, folderPath): - # Get the resource type directory - resourceTypeFolder = "%s%s/" % ( - self.getUserFilesFolder(), - resourceType - ) - # Ensure that the directory exists - self.createServerFolder(resourceTypeFolder) - - # Return the resource type directory combined with the - # required path - return "%s%s" % ( - resourceTypeFolder, - self.removeFromStart(folderPath, '/') - ) - - """ - createServerFolder - - Purpose: physically creates a folder on the server - """ - def createServerFolder(self, folderPath): - # Check if the parent exists - parentFolderPath = self.getParentFolder(folderPath) - if not(os.path.exists(parentFolderPath)): - errorMsg = self.createServerFolder(parentFolderPath) - if errorMsg is not None: - return errorMsg - # Check if this exists - if not(os.path.exists(folderPath)): - os.mkdir(folderPath) - os.chmod(folderPath, 0755) - errorMsg = None - else: - if os.path.isdir(folderPath): - errorMsg = None - else: - raise "createServerFolder: Non-folder of same name already exists" - return errorMsg - - - """ - getRootPath - - Purpose: returns the root path on the server - """ - def getRootPath(self): - return self.rootPath - - """ - setXmlHeaders - - Purpose: to prepare the headers for the xml to return - """ - def setXmlHeaders(self): - #now = self.context.BS_get_now() - #yesterday = now - 1 - self.setHeader("Content-Type", "text/xml") - #self.setHeader("Expires", yesterday) - #self.setHeader("Last-Modified", now) - #self.setHeader("Cache-Control", "no-store, no-cache, must-revalidate") - self.printHeaders() - return - - def setHeader(self, key, value): - if (self.isZope()): - self.context.REQUEST.RESPONSE.setHeader(key, value) - else: - print "%s: %s" % (key, value) - return - - def printHeaders(self): - # For non-Zope requests, we need to print an empty line - # to denote the end of headers - if (not(self.isZope())): - print "" - - """ - createXmlFooter - - Purpose: returns the xml header - """ - def createXmlHeader(self, command, resourceType, currentFolder): - self.setXmlHeaders() - s = "" - # Create the XML document header - s += """""" - # Create the main connector node - s += """""" % ( - command, - resourceType - ) - # Add the current folder node - s += """""" % ( - self.convertToXmlAttribute(currentFolder), - self.convertToXmlAttribute( - self.getWebUrlFromPath( - resourceType, - currentFolder - ) - ), - ) - return s - - """ - createXmlFooter - - Purpose: returns the xml footer - """ - def createXmlFooter(self): - s = """""" - return s - - """ - sendError - - Purpose: in the event of an error, return an xml based error - """ - def sendError(self, number, text): - self.setXmlHeaders() - s = "" - # Create the XML document header - s += """""" - s += """""" - s += """""" % (number, text) - s += """""" - return s - - """ - getFolders - - Purpose: command to recieve a list of folders - """ - def getFolders(self, resourceType, currentFolder): - if (self.isZope()): - return self.getZopeFolders(resourceType, currentFolder) - else: - return self.getNonZopeFolders(resourceType, currentFolder) - - def getZopeFolders(self, resourceType, currentFolder): - # Open the folders node - s = "" - s += """""" - zopeFolder = self.findZopeFolder(resourceType, currentFolder) - for (name, o) in zopeFolder.objectItems(["Folder"]): - s += """""" % ( - self.convertToXmlAttribute(name) - ) - # Close the folders node - s += """""" - return s - - def getNonZopeFolders(self, resourceType, currentFolder): - # Map the virtual path to our local server - serverPath = self.serverMapFolder(resourceType, currentFolder) - # Open the folders node - s = "" - s += """""" - for someObject in os.listdir(serverPath): - someObjectPath = os.path.join(serverPath, someObject) - if os.path.isdir(someObjectPath): - s += """""" % ( - self.convertToXmlAttribute(someObject) - ) - # Close the folders node - s += """""" - return s - - """ - getFoldersAndFiles - - Purpose: command to recieve a list of folders and files - """ - def getFoldersAndFiles(self, resourceType, currentFolder): - if (self.isZope()): - return self.getZopeFoldersAndFiles(resourceType, currentFolder) - else: - return self.getNonZopeFoldersAndFiles(resourceType, currentFolder) - - def getNonZopeFoldersAndFiles(self, resourceType, currentFolder): - # Map the virtual path to our local server - serverPath = self.serverMapFolder(resourceType, currentFolder) - # Open the folders / files node - folders = """""" - files = """""" - for someObject in os.listdir(serverPath): - someObjectPath = os.path.join(serverPath, someObject) - if os.path.isdir(someObjectPath): - folders += """""" % ( - self.convertToXmlAttribute(someObject) - ) - elif os.path.isfile(someObjectPath): - size = os.path.getsize(someObjectPath) - files += """""" % ( - self.convertToXmlAttribute(someObject), - os.path.getsize(someObjectPath) - ) - # Close the folders / files node - folders += """""" - files += """""" - # Return it - s = folders + files - return s - - def getZopeFoldersAndFiles(self, resourceType, currentFolder): - folders = self.getZopeFolders(resourceType, currentFolder) - files = self.getZopeFiles(resourceType, currentFolder) - s = folders + files - return s - - def getZopeFiles(self, resourceType, currentFolder): - # Open the files node - s = "" - s += """""" - zopeFolder = self.findZopeFolder(resourceType, currentFolder) - for (name, o) in zopeFolder.objectItems(["File","Image"]): - s += """""" % ( - self.convertToXmlAttribute(name), - ((o.get_size() / 1024) + 1) - ) - # Close the files node - s += """""" - return s - - def findZopeFolder(self, resourceType, folderName): - # returns the context of the resource / folder - zopeFolder = self.getZopeUploadContext() - folderName = self.removeFromStart(folderName, "/") - folderName = self.removeFromEnd(folderName, "/") - if (resourceType <> ""): - try: - zopeFolder = zopeFolder[resourceType] - except: - zopeFolder.manage_addProduct["OFSP"].manage_addFolder(id=resourceType, title=resourceType) - zopeFolder = zopeFolder[resourceType] - if (folderName <> ""): - folderNames = folderName.split("/") - for folderName in folderNames: - zopeFolder = zopeFolder[folderName] - return zopeFolder - - """ - createFolder - - Purpose: command to create a new folder - """ - def createFolder(self, resourceType, currentFolder): - if (self.isZope()): - return self.createZopeFolder(resourceType, currentFolder) - else: - return self.createNonZopeFolder(resourceType, currentFolder) - - def createZopeFolder(self, resourceType, currentFolder): - # Find out where we are - zopeFolder = self.findZopeFolder(resourceType, currentFolder) - errorNo = 0 - errorMsg = "" - if self.request.has_key("NewFolderName"): - newFolder = self.request.get("NewFolderName", None) - zopeFolder.manage_addProduct["OFSP"].manage_addFolder(id=newFolder, title=newFolder) - else: - errorNo = 102 - error = """""" % ( - errorNo, - self.convertToXmlAttribute(errorMsg) - ) - return error - - def createNonZopeFolder(self, resourceType, currentFolder): - errorNo = 0 - errorMsg = "" - if self.request.has_key("NewFolderName"): - newFolder = self.request.get("NewFolderName", None) - currentFolderPath = self.serverMapFolder( - resourceType, - currentFolder - ) - try: - newFolderPath = currentFolderPath + newFolder - errorMsg = self.createServerFolder(newFolderPath) - if (errorMsg is not None): - errorNo = 110 - except: - errorNo = 103 - else: - errorNo = 102 - error = """""" % ( - errorNo, - self.convertToXmlAttribute(errorMsg) - ) - return error - - """ - getFileName - - Purpose: helper function to extrapolate the filename - """ - def getFileName(self, filename): - for splitChar in ["/", "\\"]: - array = filename.split(splitChar) - if (len(array) > 1): - filename = array[-1] - return filename - - """ - fileUpload - - Purpose: command to upload files to server - """ - def fileUpload(self, resourceType, currentFolder): - if (self.isZope()): - return self.zopeFileUpload(resourceType, currentFolder) - else: - return self.nonZopeFileUpload(resourceType, currentFolder) - - def zopeFileUpload(self, resourceType, currentFolder, count=None): - zopeFolder = self.findZopeFolder(resourceType, currentFolder) - file = self.request.get("NewFile", None) - fileName = self.getFileName(file.filename) - fileNameOnly = self.removeExtension(fileName) - fileExtension = self.getExtension(fileName).lower() - if (count): - nid = "%s.%s.%s" % (fileNameOnly, count, fileExtension) - else: - nid = fileName - title = nid - try: - zopeFolder.manage_addProduct['OFSP'].manage_addFile( - id=nid, - title=title, - file=file.read() - ) - except: - if (count): - count += 1 - else: - count = 1 - self.zopeFileUpload(resourceType, currentFolder, count) - return - - def nonZopeFileUpload(self, resourceType, currentFolder): - errorNo = 0 - errorMsg = "" - if self.request.has_key("NewFile"): - # newFile has all the contents we need - newFile = self.request.get("NewFile", "") - # Get the file name - newFileName = newFile.filename - newFileNameOnly = self.removeExtension(newFileName) - newFileExtension = self.getExtension(newFileName).lower() - allowedExtensions = self.getAllowedExtensions(resourceType) - deniedExtensions = self.getDeniedExtensions(resourceType) - if (allowedExtensions is not None): - # Check for allowed - isAllowed = False - if (newFileExtension in allowedExtensions): - isAllowed = True - elif (deniedExtensions is not None): - # Check for denied - isAllowed = True - if (newFileExtension in deniedExtensions): - isAllowed = False - else: - # No extension limitations - isAllowed = True - - if (isAllowed): - if (self.isZope()): - # Upload into zope - self.zopeFileUpload(resourceType, currentFolder) - else: - # Upload to operating system - # Map the virtual path to the local server path - currentFolderPath = self.serverMapFolder( - resourceType, - currentFolder - ) - i = 0 - while (True): - newFilePath = "%s%s" % ( - currentFolderPath, - newFileName - ) - if os.path.exists(newFilePath): - i += 1 - newFilePath = "%s%s(%s).%s" % ( - currentFolderPath, - newFileNameOnly, - i, - newFileExtension - ) - errorNo = 201 - break - else: - fileHandle = open(newFilePath,'w') - linecount = 0 - while (1): - #line = newFile.file.readline() - line = newFile.readline() - if not line: break - fileHandle.write("%s" % line) - linecount += 1 - os.chmod(newFilePath, 0777) - break - else: - newFileName = "Extension not allowed" - errorNo = 203 - else: - newFileName = "No File" - errorNo = 202 - - string = """ - - """ % ( - errorNo, - newFileName.replace('"',"'") - ) - return string - - def run(self): - s = "" - try: - # Check if this is disabled - if not(self.enabled): - return self.sendError(1, "This connector is disabled. Please check the connector configurations and try again") - # Make sure we have valid inputs - if not( - (self.request.has_key("Command")) and - (self.request.has_key("Type")) and - (self.request.has_key("CurrentFolder")) - ): - return - # Get command - command = self.request.get("Command", None) - # Get resource type - resourceType = self.request.get("Type", None) - # folder syntax must start and end with "/" - currentFolder = self.request.get("CurrentFolder", None) - if (currentFolder[-1] <> "/"): - currentFolder += "/" - if (currentFolder[0] <> "/"): - currentFolder = "/" + currentFolder - # Check for invalid paths - if (".." in currentFolder): - return self.sendError(102, "") - # File upload doesn't have to return XML, so intercept - # her:e - if (command == "FileUpload"): - return self.fileUpload(resourceType, currentFolder) - # Begin XML - s += self.createXmlHeader(command, resourceType, currentFolder) - # Execute the command - if (command == "GetFolders"): - f = self.getFolders - elif (command == "GetFoldersAndFiles"): - f = self.getFoldersAndFiles - elif (command == "CreateFolder"): - f = self.createFolder - else: - f = None - if (f is not None): - s += f(resourceType, currentFolder) - s += self.createXmlFooter() - except Exception, e: - s = "ERROR: %s" % e - return s - -# Running from command line -if __name__ == '__main__': - # To test the output, uncomment the standard headers - #print "Content-Type: text/html" - #print "" - print getFCKeditorConnector() - -""" -Running from zope, you will need to modify this connector. -If you have uploaded the FCKeditor into Zope (like me), you need to -move this connector out of Zope, and replace the "connector" with an -alias as below. The key to it is to pass the Zope context in, as -we then have a like to the Zope context. - -## Script (Python) "connector.py" -##bind container=container -##bind context=context -##bind namespace= -##bind script=script -##bind subpath=traverse_subpath -##parameters=*args, **kws -##title=ALIAS -## -import Products.connector as connector -return connector.getFCKeditorConnector(context=context).run() -""" - - diff --git a/static/fckeditor/editor/filemanager/upload/asp/config.asp b/static/fckeditor/editor/filemanager/upload/asp/config.asp deleted file mode 100644 index c2df5d8..0000000 --- a/static/fckeditor/editor/filemanager/upload/asp/config.asp +++ /dev/null @@ -1,52 +0,0 @@ - -<% - -' SECURITY: You must explicitelly enable this "uploader" (set it to "True"). -Dim ConfigIsEnabled -ConfigIsEnabled = False - -' Set if the file type must be considere in the target path. -' Ex: /userfiles/image/ or /userfiles/file/ -Dim ConfigUseFileType -ConfigUseFileType = False - -' Path to user files relative to the document root. -Dim ConfigUserFilesPath -ConfigUserFilesPath = "/userfiles/" - -' Allowed and Denied extensions configurations. -Dim ConfigAllowedExtensions, ConfigDeniedExtensions -Set ConfigAllowedExtensions = CreateObject( "Scripting.Dictionary" ) -Set ConfigDeniedExtensions = CreateObject( "Scripting.Dictionary" ) - -ConfigAllowedExtensions.Add "File", "" -ConfigDeniedExtensions.Add "File", "html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm" - -ConfigAllowedExtensions.Add "Image", "jpg|gif|jpeg|png|bmp" -ConfigDeniedExtensions.Add "Image", "" - -ConfigAllowedExtensions.Add "Flash", "swf|fla" -ConfigDeniedExtensions.Add "Flash", "" - -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/asp/upload.asp b/static/fckeditor/editor/filemanager/upload/asp/upload.asp deleted file mode 100644 index fec8b72..0000000 --- a/static/fckeditor/editor/filemanager/upload/asp/upload.asp +++ /dev/null @@ -1,121 +0,0 @@ -<%@ CodePage=65001 Language="VBScript"%> -<% -Option Explicit -Response.Buffer = True -%> - - - - -<% - -' This is the function that sends the results of the uploading process. -Function SendResults( errorNumber, fileUrl, fileName, customMsg ) - Response.Write "" - Response.End -End Function - -%> -<% - -' Check if this uploader has been enabled. -If ( ConfigIsEnabled = False ) Then - SendResults "1", "", "", "This file uploader is disabled. Please check the ""editor/filemanager/upload/asp/config.asp"" file" -End If - -' The the file type (from the QueryString, by default 'File'). -Dim resourceType -If ( Request.QueryString("Type") <> "" ) Then - resourceType = Request.QueryString("Type") -Else - resourceType = "File" -End If - -' Create the Uploader object. -Dim oUploader -Set oUploader = New NetRube_Upload -oUploader.MaxSize = 0 -oUploader.Allowed = ConfigAllowedExtensions.Item( resourceType ) -oUploader.Denied = ConfigDeniedExtensions.Item( resourceType ) -oUploader.GetData - -If oUploader.ErrNum > 1 Then - SendResults "202", "", "", "" -Else - Dim sFileName, sFileUrl, sErrorNumber, sOriginalFileName, sExtension - sFileName = "" - sFileUrl = "" - sErrorNumber = "0" - - ' Map the virtual path to the local server path. - Dim sServerDir - sServerDir = Server.MapPath( ConfigUserFilesPath ) - If ( Right( sServerDir, 1 ) <> "\" ) Then - sServerDir = sServerDir & "\" - End If - - If ( ConfigUseFileType = True ) Then - sServerDir = sServerDir & resourceType & "\" - End If - - Dim oFSO - Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) - - ' Get the uploaded file name. - sFileName = oUploader.File( "NewFile" ).Name - sExtension = oUploader.File( "NewFile" ).Ext - sOriginalFileName = sFileName - - Dim iCounter - iCounter = 0 - - Do While ( True ) - Dim sFilePath - sFilePath = sServerDir & sFileName - - If ( oFSO.FileExists( sFilePath ) ) Then - iCounter = iCounter + 1 - sFileName = RemoveExtension( sOriginalFileName ) & "(" & iCounter & ")." & sExtension - sErrorNumber = "201" - Else - oUploader.SaveAs "NewFile", sFilePath - If oUploader.ErrNum > 0 Then SendResults "202", "", "", "" - Exit Do - End If - Loop - - If ( ConfigUseFileType = True ) Then - sFileUrl = ConfigUserFilesPath & resourceType & "/" & sFileName - Else - sFileUrl = ConfigUserFilesPath & sFileName - End If - - SendResults sErrorNumber, sFileUrl, sFileName, "" - -End If - -Set oUploader = Nothing -%> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/cfm/config.cfm b/static/fckeditor/editor/filemanager/upload/cfm/config.cfm deleted file mode 100644 index 0206ecc..0000000 --- a/static/fckeditor/editor/filemanager/upload/cfm/config.cfm +++ /dev/null @@ -1,94 +0,0 @@ - - - - config = StructNew(); - - // SECURITY: You must explicitelly enable this "uploader". - config.enabled = false; - - // Path to uploaded files relative to the document root. - config.userFilesPath = "/userfiles/"; - - config.serverPath = ""; // use this to force the server path if FCKeditor is not running directly off the root of the application or the FCKeditor directory in the URL is a virtual directory or a symbolic link / junction - - config.allowedExtensions = StructNew(); - config.deniedExtensions = StructNew(); - - config.allowedExtensions["File"] = ""; - config.deniedExtensions["File"] = "html,htm,php,php2,php3,php4,php5,phtml,pwml,inc,asp,aspx,ascx,jsp,cfm,cfc,pl,bat,exe,com,dll,vbs,js,reg,cgi,htaccess,asis,sh,shtml,shtm,phtm"; - - config.allowedExtensions["Image"] = "png,gif,jpg,jpeg,bmp"; - config.deniedExtensions["Image"] = ""; - - config.allowedExtensions["Flash"] = "swf,fla"; - config.deniedExtensions["Flash"] = ""; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function structCopyKeys(stFrom, stTo) { - for ( key in stFrom ) { - if ( isStruct(stFrom[key]) ) { - structCopyKeys(stFrom[key],stTo[key]); - } else { - stTo[key] = stFrom[key]; - } - } - } - structCopyKeys(FCKeditor, config); - - - \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/cfm/upload.cfm b/static/fckeditor/editor/filemanager/upload/cfm/upload.cfm deleted file mode 100644 index 352fa21..0000000 --- a/static/fckeditor/editor/filemanager/upload/cfm/upload.cfm +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - userFilesPath = config.userFilesPath; - lAllowedExtensions = config.allowedExtensions[url.type]; - lDeniedExtensions = config.deniedExtensions[url.type]; - customMsg = ''; // Can be overwritten. The last value will be sent with the result - - // make sure the user files path is correctly formatted - userFilesPath = replace(userFilesPath, "\", "/", "ALL"); - userFilesPath = replace(userFilesPath, '//', '/', 'ALL'); - if ( right(userFilesPath,1) NEQ "/" ) { - userFilesPath = userFilesPath & "/"; - } - if ( left(userFilesPath,1) NEQ "/" ) { - userFilesPath = "/" & userFilesPath; - } - - if (find("/",getBaseTemplatePath())) { - fs = "/"; - } else { - fs = "\"; - } - - // Get the base physical path to the web root for this application. The code to determine the path automatically assumes that - // the "FCKeditor" directory in the http request path is directly off the web root for the application and that it's not a - // virtual directory or a symbolic link / junction. Use the serverPath config setting to force a physical path if necessary. - if ( len(config.serverPath) ) { - serverPath = config.serverPath; - } else { - serverPath = replaceNoCase(getBaseTemplatePath(),replace(cgi.script_name,"/",fs,"all"),""); - } - - // map the user files path to a physical directory - userFilesServerPath = serverPath & replace(userFilesPath,"/",fs,"all"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - errorNumber = 0; - fileName = cffile.ClientFileName; - fileExt = cffile.ServerFileExt; - - // munge filename for html download. Only a-z, 0-9, _, - and . are allowed - if( reFind("[^A-Za-z0-9_\-\.]", fileName) ) { - fileName = reReplace(fileName, "[^A-Za-z0-9\-\.]", "_", "ALL"); - fileName = reReplace(fileName, "_{2,}", "_", "ALL"); - fileName = reReplace(fileName, "([^_]+)_+$", "\1", "ALL"); - fileName = reReplace(fileName, "$_([^_]+)$", "\1", "ALL"); - } - - // When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename. - if( compare( cffile.ServerFileName, fileName ) ) { - counter = 0; - tmpFileName = fileName; - while( fileExists("#currentFolderPath##fileName#.#fileExt#") ) { - counter = counter + 1; - fileName = tmpFileName & '(#counter#)'; - } - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/lasso/config.lasso b/static/fckeditor/editor/filemanager/upload/lasso/config.lasso deleted file mode 100644 index c6a6341..0000000 --- a/static/fckeditor/editor/filemanager/upload/lasso/config.lasso +++ /dev/null @@ -1,65 +0,0 @@ -[//lasso -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Configuration file for the Lasso File Uploader. - */ - - /*..................................................................... - The connector uses the file tags, which require authentication. Enter a - valid username and password from Lasso admin for a group with file tags - permissions for uploads and the path you define in UserFilesPath below. - */ - - var('connection') = array( - -username='xxxxxxxx', - -password='xxxxxxxx' - ); - - - /*..................................................................... - Set the base path for files that users can upload and browse (relative - to server root). - - Set which file extensions are allowed and/or denied for each file type. - */ - var('config') = map( - 'Enabled' = false, - 'UserFilesPath' = '/userfiles/', - 'Subdirectories' = map( - 'File' = 'File/', - 'Image' = 'Image/', - 'Flash' = 'Flash/', - 'Media' = 'Media/' - ), - 'AllowedExtensions' = map( - 'File' = array(), - 'Image' = array('jpg','gif','jpeg','png'), - 'Flash' = array('swf','fla'), - 'Media' = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') - ), - 'DeniedExtensions' = map( - 'File' = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','lasso','lassoapp','htaccess','asis','sh','shtml','shtm','phtm'), - 'Image' = array(), - 'Flash' = array(), - 'Media' = array() - ) - ); -] diff --git a/static/fckeditor/editor/filemanager/upload/php/config.php b/static/fckeditor/editor/filemanager/upload/php/config.php deleted file mode 100644 index 63302e1..0000000 --- a/static/fckeditor/editor/filemanager/upload/php/config.php +++ /dev/null @@ -1,56 +0,0 @@ - \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/php/upload.php b/static/fckeditor/editor/filemanager/upload/php/upload.php deleted file mode 100644 index d9a0fd8..0000000 --- a/static/fckeditor/editor/filemanager/upload/php/upload.php +++ /dev/null @@ -1,130 +0,0 @@ -' ; - echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . str_replace( '"', '\\"', $fileUrl ) . '","' . str_replace( '"', '\\"', $fileName ) . '", "' . str_replace( '"', '\\"', $customMsg ) . '") ;' ; - echo '' ; - exit ; -} - -// Check if this uploader has been enabled. -if ( !$Config['Enabled'] ) - SendResults( '1', '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/php/config.php" file' ) ; - -// Check if the file has been correctly uploaded. -if ( !isset( $_FILES['NewFile'] ) || is_null( $_FILES['NewFile']['tmp_name'] ) || $_FILES['NewFile']['name'] == '' ) - SendResults( '202' ) ; - -// Get the posted file. -$oFile = $_FILES['NewFile'] ; - -// Get the uploaded file name extension. -$sFileName = $oFile['name'] ; - -// Replace dots in the name with underscores (only one dot can be there... security issue). -if ( $Config['ForceSingleExtension'] ) - $sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ; - -$sOriginalFileName = $sFileName ; - -// Get the extension. -$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ; -$sExtension = strtolower( $sExtension ) ; - -// The the file type (from the QueryString, by default 'File'). -$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ; - -// Check if it is an allowed type. -if ( !in_array( $sType, array('File','Image','Flash','Media') ) ) - SendResults( 1, '', '', 'Invalid type specified' ) ; - -// Get the allowed and denied extensions arrays. -$arAllowed = $Config['AllowedExtensions'][$sType] ; -$arDenied = $Config['DeniedExtensions'][$sType] ; - -// Check if it is an allowed extension. -if ( ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) || ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) ) - SendResults( '202' ) ; - -$sErrorNumber = '0' ; -$sFileUrl = '' ; - -// Initializes the counter used to rename the file, if another one with the same name already exists. -$iCounter = 0 ; - -// Get the target directory. -if ( isset( $Config['UserFilesAbsolutePath'] ) && strlen( $Config['UserFilesAbsolutePath'] ) > 0 ) - $sServerDir = $Config['UserFilesAbsolutePath'] ; -else - $sServerDir = GetRootPath() . $Config["UserFilesPath"] ; - -if ( $Config['UseFileType'] ) - $sServerDir .= strtolower($sType) . '/' ; - -//check for the directory before uploading the file -if(!is_dir($sServerDir)) -{ - mkdir($sServerDir); -} - -while ( true ) -{ - // Compose the file path. - $sFilePath = $sServerDir . $sFileName ; - - // If a file with that name already exists. - if ( is_file( $sFilePath ) ) - { - $iCounter++ ; - $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; - $sErrorNumber = '201' ; - } - else - { - move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; - - if ( is_file( $sFilePath ) ) - { - $oldumask = umask(0) ; - chmod( $sFilePath, 0777 ) ; - umask( $oldumask ) ; - } - - if ( $Config['UseFileType'] ) - $sFileUrl = $Config["UserFilesPath"] . strtolower($sType) . '/' . $sFileName ; - else - $sFileUrl = $Config["UserFilesPath"] . $sFileName ; - - break ; - } -} - -SendResults( $sErrorNumber, $sFileUrl, $sFileName ) ; -?> \ No newline at end of file diff --git a/static/fckeditor/editor/filemanager/upload/php/util.php b/static/fckeditor/editor/filemanager/upload/php/util.php deleted file mode 100644 index d6abb93..0000000 --- a/static/fckeditor/editor/filemanager/upload/php/util.php +++ /dev/null @@ -1,40 +0,0 @@ - \ No newline at end of file diff --git a/static/fckeditor/editor/js/fckeditorcode_gecko.js b/static/fckeditor/editor/js/fckeditorcode_gecko.js deleted file mode 100644 index 8d5d31a..0000000 --- a/static/fckeditor/editor/js/fckeditorcode_gecko.js +++ /dev/null @@ -1,98 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * This file has been compressed for better performance. The original source - * can be found at "editor/_source". - */ - -var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';var CTRL=1000;var SHIFT=2000;var ALT=4000; -String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;iC) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B0?'':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;FCKListsLib.Setup();this.SetHTML(this.GetLinkedFieldValue(),true);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:if (!FCKListsLib.BlockElements[D.nodeName.toLowerCase()]) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var G=D.parentNode;if (!E) E=G.insertBefore(B.createElement(A),D);E.appendChild(G.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetXHTML:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B;var C=FCK.EditorDocument;if (!C) return null;if (FCKConfig.FullPage){B=FCKXHtml.GetXHTML(C.getElementsByTagName('html')[0],true,A);if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;}else{B=FCKXHtml.GetXHTML(C.body,false,A);if (FCKConfig.IgnoreEmptyParagraphValue&&FCKRegexLib.EmptyOutParagraph.test(B)) B='';};B=FCK.ProtectEventsRestore(B);if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');return FCKConfig.ProtectedSource.Revert(B);},UpdateLinkedField:function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);},RegisterDoubleClickHandler:function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML':'ABBR|XML';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'');return A;},SetHTML:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==0){A=FCKConfig.ProtectedSource.Protect(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'');A=A.replace(FCKRegexLib.EmOpener,'');};this._ForceResetIsDirty=(B===true);var C='';if (FCKConfig.FullPage){if (!FCKRegexLib.HeadOpener.test(A)){if (!FCKRegexLib.HtmlOpener.test(A)) A=''+A+'';A=A.replace(FCKRegexLib.HtmlOpener,'$&');};FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (FCKBrowserInfo.IsIE) C=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C='';C+='';C=A.replace(FCKRegexLib.HeadCloser,C+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) C=C.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{C=FCKConfig.DocType+'';if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+='';C+=FCK.TempBaseTag;var D='0) D+=' id="'+FCKConfig.BodyId+'"';if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) D+=' class="'+FCKConfig.BodyClass+'"';C+=''+D+'>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) C+=GECKO_BOGUS;else C+=A;C+='';};this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(C);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},HasFocus:false,RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else return FCK.EditorDocument.queryCommandState(A)?1:0;}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+''+FCK.TempBaseTag+''+FCKLang.Preview+''+_FCK_GetEditorAreaStyleTags()+''+FCK.GetXHTML()+'';};D.document.write(E);D.document.close();},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetHTML(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},CreateElement:function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);},InsertElementAndGetIt:function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i/g,/\r/g,/\n/g],[''',''','"','=','<','>',' ',' '])+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return B.ReplaceAll([/'/g,/"/g,/=/g,/</g,/>/g,/ /g,/ /g,/'/g],["'",'"','=','<','>','\r','\n','&']);};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();if (!FCKConfig.DisableEnterKeyHandler) FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i';return A;};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){if (B=='Paste') return!FCK.Events.FireEvent('OnPaste');}else{if (B.Equals('Paste','Undo','Redo','SelectAll')) return false;};var C=FCK.Commands.GetCommand(B);return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i');A=A.replace(FCKRegexLib.EmOpener,'');var B=FCKSelection.Delete();var C=B.getRangeAt(0);var D=C.createContextualFragment(A);var E=D.lastChild;C.insertNode(D);FCKSelection.SelectNode(E);FCKSelection.Collapse(false);this.Focus();};FCK.InsertElement=function(A){var B=FCKSelection.Delete();var C=B.getRangeAt(0);C.insertNode(A);FCKSelection.SelectNode(A);FCKSelection.Collapse(false);this.Focus();};FCK.PasteAsPlainText=function(){FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText']);};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A){var B=[];FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var C='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',C);var D=this.EditorDocument.evaluate("//a[@href='"+C+"']",this.EditorDocument.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for (var i=0;i0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';if (typeof(A.EditorAreaCSS)=='string') A.EditorAreaCSS=[A.EditorAreaCSS];var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;else if (typeof(B)=='string') A.ToolbarComboPreviewCSS=[B];};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource.RegexEntries=[//g,//gi,//gi,//gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '';};for (var i=0;i|>)/g,_Replace);} -var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}} -var FCKDomTools={MoveChildren:function(A,B){if (A==B) return;var C;while ((C=A.firstChild)) B.appendChild(A.removeChild(C));},TrimNode:function(A,B){this.LTrimNode(A);this.RTrimNode(A,B);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D){if (!A) return null;if (A.nextSibling) A=A.nextSibling;else return this.GetNextSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.firstChild) A=A.firstChild;else return this.GetNextSourceElement(A,B,C,D);};return null;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.splice(0,0,A);A=A.parentNode;};return B;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;}}; -var GECKO_BOGUS='
    ';var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{var C=[];for (var i=0;i/g,'>');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/>/g,'>');A=A.replace(/</g,'<');A=A.replace(/&/g,'&');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i0) return A[A.length-1];return null;}; -FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else A.style.userSelect='none';};FCKTools._AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i0){B.Class=A.className;A.className='';};var C=A.getAttribute('style');if (C&&C.length>0){B.Inline=C;A.setAttribute('style','',0);};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return this.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;var D=FCKTools.GetElementWindow(A);while (A){var E=D.getComputedStyle(A,'').position;if (E&&E!='static'&&A.style.zIndex!=FCKConfig.FloatingPanelsZIndex) break;c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (A.offsetParent) A=A.offsetParent;else{if (D!=C){A=D.frameElement;if (A) D=FCKTools.GetElementWindow(A);}else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}};return c;} -var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='var FCKeditorAPI = {Version : "2.4.3",VersionBuild : "15657",__Instances : new Object(),GetInstance : function( name ){return this.__Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.__Instances ){var oEditor = FCKeditorAPI.__Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){delete FCKeditorAPI.__Instances[FCK.Name];};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup); -var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/]*>/i,HeadOpener:/]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/(\s*FCK__[A-Za-z]*\s*)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*| )(<\/\1>)?$/,TagBody:/>])/gi,StrongCloser:/<\/STRONG>/gi,EmOpener:/])/gi,EmCloser:/<\/EM>/gi,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/]+))/gi,ProtectUrlsA:/]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi}; -var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,td:1,th:1,caption:1,form:1 },Setup:function(){if (FCKConfig.EnterMode=='div') this.PathBlockElements.div=1;else this.PathBlockLimitElements.div=1;}}; -var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');} -var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;E=E.substr(7,E.length-15).Trim();if (FCKBrowserInfo.IsGecko) E=E.replace(/$/,'');E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml._RemoveAttribute=function(A,B,C){var D=A.attributes.getNamedItem(C);if (D&&B.test(D.nodeValue)){var E=D.nodeValue.replace(B,'');if (E.length==0) A.attributes.removeNamedItem(C);else D.nodeValue=E;}};FCKXHtml.TagProcessors={img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){FCKXHtml._RemoveAttribute(A,FCKRegexLib.FCK_Class,'class');if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;},table:function(A,B){if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveAttribute(A,FCKRegexLib.FCK_Class,'class');A=FCKXHtml._AppendChildNodes(A,B,false);return A;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol; -FCKXHtml._GetMainXmlString=function(){var A=new XMLSerializer();return A.serializeToString(this.MainNode);};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i0) C.removeChild(C.childNodes[0]);if (this.Mode==0){var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1>');else if (!B){if (FCKBrowserInfo.IsGecko) A=A.replace(/(]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var F=A.match(FCKRegexLib.BodyContents);if (F){A=F[1]+' '+F[3];this._BodyHTML=F[2];}else this._BodyHTML=A;};this.Window=E.contentWindow;var G=this.Document=this.Window.document;G.open();G.write(A);G.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var H=this.Textarea=D.createElement('textarea');H.className='SourceField';H.dir='ltr';H.style.width=H.style.height='100%';H.style.border='none';C.appendChild(H);H.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.contentEditable=true;}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';try{A.execCommand('styleWithCSS',false,FCKConfig.GeckoUseSPAN);}catch (e){A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);};A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE&&this.Document.hasFocus()) return;if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else{this.Window.focus();}}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}; -var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;} -var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}}; -var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null) C=e;};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;}; -var FCKDomRange=function(A){this.Window=A;};FCKDomRange.prototype={_UpdateElementInfo:function(){if (!this._Range) this.Release(true);else{var A=this._Range.startContainer;var B=this._Range.endContainer;var C=new FCKElementPath(A);this.StartContainer=C.LastElement;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A!=B) C=new FCKElementPath(B);this.EndContainer=C.LastElement;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;}},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while ((B=A.firstChild)&&B.nodeType==1&&FCKListsLib.EmptyElements[B.nodeName.toLowerCase()]==null) A=B;this.MoveToElementStart(A);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(A){if (this.CheckIsCollapsed()) return true;var B=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(B);FCKDomTools.TrimNode(B,A);return (B.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this.Clone();A.Collapse(true);A.SetStart(A.StartBlock||A.StartBlockLimit,1);var B=A.CheckIsEmpty();A.Release();return B;},CheckEndOfBlock:function(A){var B=this.Clone();B.Collapse(false);B.SetEnd(B.EndBlock||B.EndBlockLimit,2);var C=B.CheckIsCollapsed();if (!C){var D=this.Window.document.createElement('div');B._Range.cloneContents().AppendTo(D);FCKDomTools.TrimNode(D,true);C=true;var E=D;while ((E=E.lastChild)){if (E.previousSibling||E.nodeType!=1||FCKListsLib.InlineChildReqElements[E.nodeName.toLowerCase()]==null){C=false;break;}}};B.Release();if (A) this.Select();return C;},CreateBookmark:function(){var A={StartId:'fck_dom_range_start_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000),EndId:'fck_dom_range_end_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000)};var B=this.Window.document;var C;var D;if (!this.CheckIsCollapsed()){C=B.createElement('span');C.id=A.EndId;C.innerHTML=' ';D=this.Clone();D.Collapse(false);D.InsertNode(C);};C=B.createElement('span');C.id=A.StartId;C.innerHTML=' ';D=this.Clone();D.Collapse(true);D.InsertNode(C);return A;},MoveToBookmark:function(A,B){var C=this.Window.document;var D=C.getElementById(A.StartId);var E=C.getElementById(A.EndId);this.SetStart(D,3);if (!B) FCKDomTools.RemoveNode(D);if (E){this.SetEnd(E,3);if (!B) FCKDomTools.RemoveNode(E);}else this.Collapse(true);},SetStart:function(A,B){var C=this._Range;if (!C) C=this._Range=this.CreateRange();switch(B){case 1:C.setStart(A,0);break;case 2:C.setStart(A,A.childNodes.length);break;case 3:C.setStartBefore(A);break;case 4:C.setStartAfter(A);};this._UpdateElementInfo();},SetEnd:function(A,B){var C=this._Range;if (!C) C=this._Range=this.CreateRange();switch(B){case 1:C.setEnd(A,0);break;case 2:C.setEnd(A,A.childNodes.length);break;case 3:C.setEndBefore(A);break;case 4:C.setEndAfter(A);};this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'block_contents':if (this.StartBlock) this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){if (!(B=B.childNodes[this._Range.startOffset])) B=B.firstChild;};if (!B) return;while (true){oSibling=B.previousSibling;if (!oSibling){if (B.parentNode!=this.StartBlockLimit) B=B.parentNode;else break;}else if (oSibling.nodeType!=1||!(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test(oSibling.nodeName.toUpperCase())){B=oSibling;}else break;};this._Range.setStartBefore(B);};if (this.EndBlock) this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;if (!B) return;while (true){oSibling=B.nextSibling;if (!oSibling){if (B.parentNode!=this.EndBlockLimit) B=B.parentNode;else break;}else if (oSibling.nodeType!=1||!(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test(oSibling.nodeName.toUpperCase())){B=oSibling;}else break;};this._Range.setEndAfter(B);};this._UpdateElementInfo();}},Release:function(A){if (!A) this.Window=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;}}; -FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);var A=this.Window.getSelection();if (A.rangeCount==1){this._Range=FCKW3CRange.CreateFromRange(this.Window.document,A.getRangeAt(0));this._UpdateElementInfo();}};FCKDomRange.prototype.Select=function(){var A=this._Range;if (A){var B=this.Window.document.createRange();B.setStart(A.startContainer,A.startOffset);try{B.setEnd(A.endContainer,A.endOffset);}catch (e){if (e.toString().Contains('NS_ERROR_ILLEGAL_VALUE')){A.collapse(true);B.setEnd(A.endContainer,A.endOffset);}else throw(e);};var C=this.Window.getSelection();C.removeAllRanges();C.addRange(B);}}; -var FCKDocumentFragment=function(A,B){this.RootNode=B||A.createDocumentFragment();};FCKDocumentFragment.prototype={AppendTo:function(A){A.appendChild(this.RootNode);},InsertAfterNode:function(A){FCKDomTools.InsertAfterNode(A,this.RootNode);}} -var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (C.childNodes.length>0&&E<=C.childNodes.length-1){if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else C=C.childNodes[E].previousSibling;}};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)) this.setStart(topEnd.parentNode,FCKDomTools.GetIndexOf(topEnd));this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);},toString:function(){var A=this.cloneContents();var B=this._Document.createElement('div');A.AppendTo(B);return B.textContent||B.innerText;}}; -var FCKEnterKey=function(A,B,C){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var D=new FCKKeystrokeHandler(false);D._EnterKey=this;D.OnKeystroke=FCKEnterKey_OnKeystroke;D.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[46,'Delete']]);D.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){this._HasShift=(B===true);var C=A||this.EnterMode;if (C=='br') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(C);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (!B.CheckIsCollapsed()) return false;var C=B.StartBlock;var D=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&C&&D){if (!B.CheckIsCollapsed()){var E=B.CheckEndOfBlock();B.DeleteContents();if (C!=D){B.SetStart(D,1);B.SetEnd(D,1);};B.Select();A=(C==D);};if (B.CheckStartOfBlock()){var F=B.StartBlock;var G=FCKDomTools.GetPreviousSourceElement(F,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,G,F);}else if (FCKBrowserInfo.IsGecko){B.Select();}};B.Release();return A;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.TrimNode(C);FCKDomTools.TrimNode(B);A.SetStart(B,2);A.Collapse(true);var I=A.CreateBookmark();FCKDomTools.MoveChildren(C,B);A.MoveToBookmark(I);A.Select();D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,C,D);};B.Release();return A;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);if (!B) C.MoveToSelection();if (C.StartBlockLimit==C.EndBlockLimit){if (!C.StartBlock) this._FixBlock(C,true,A);if (!C.EndBlock) this._FixBlock(C,false,A);var D=C.StartBlock;var E=C.EndBlock;if (!C.CheckIsEmpty()) C.DeleteContents();if (D==E){var F;var G=C.CheckStartOfBlock();var H=C.CheckEndOfBlock();if (G&&!H){F=D.cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) F.innerHTML=GECKO_BOGUS;D.parentNode.insertBefore(F,D);if (FCKBrowserInfo.IsIE){C.MoveToNodeContents(F);C.Select();};C.MoveToElementEditStart(D);}else{if (H){var I=D.tagName.toUpperCase();if (G&&I=='LI'){this._OutdentWithSelection(D,C);C.Release();return true;}else{if ((/^H[1-6]$/).test(I)||this._HasShift) F=this.Window.document.createElement(A);else{F=D.cloneNode(false);this._RecreateEndingTree(D,F);};if (FCKBrowserInfo.IsGeckoLike){F.innerHTML=GECKO_BOGUS;if (G) D.innerHTML=GECKO_BOGUS;}}}else{C.SetEnd(D,2);var J=C.ExtractContents();F=D.cloneNode(false);FCKDomTools.TrimNode(J.RootNode);if (J.RootNode.firstChild.nodeType==1&&J.RootNode.firstChild.tagName.toUpperCase().Equals('UL','OL')) F.innerHTML=GECKO_BOGUS;J.AppendTo(F);if (FCKBrowserInfo.IsGecko){this._AppendBogusBr(D);this._AppendBogusBr(F);}};if (F){FCKDomTools.InsertAfterNode(D,F);C.MoveToElementEditStart(F);if (FCKBrowserInfo.IsGeckoLike) F.scrollIntoView(false);}}}else{C.MoveToElementEditStart(E);};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDebug.Output('BR - Header');FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{FCKDebug.Output('BR - No Header');var G=this.Window.document.createElement('br');B.InsertNode(G);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(G,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) this._AppendBogusBr(G.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(G,4);else B.SetStart(G.nextSibling,1);};B.Collapse(true);B.Select();};B.Release();return true;};FCKEnterKey.prototype._FixBlock=function(A,B,C){var D=A.CreateBookmark();A.Collapse(B);A.Expand('block_contents');var E=this.Window.document.createElement(C);A.ExtractContents().AppendTo(E);FCKDomTools.TrimNode(E);A.InsertNode(E);A.MoveToBookmark(D);};FCKEnterKey.prototype._AppendBogusBr=function(A){if (!A) return;var B=FCKTools.GetLastItem(A.getElementsByTagName('br'));if (!B||B.getAttribute('type',2)!='_moz') A.appendChild(FCKTools.CreateBogusBR(this.Window.document));};FCKEnterKey.prototype._RecreateEndingTree=function(A,B){while ((A=A.lastChild)&&A.nodeType==1&&FCKListsLib.InlineChildReqElements[A.nodeName.toLowerCase()]!=null) B=B.insertBefore(A.cloneNode(false),B.firstChild);};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();} -var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=C.attributes['type'];if ((C.src&&C.src.EndsWith('.swf',true))||(D&&D.nodeValue=='application/x-shockwave-flash')){var E=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var F=['scale','play','loop','menu','wmode','quality'];for (var G=0;G0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('width'));if (B.getAttribute('height')>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('height'));};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}} -var FCKSelection=FCK.Selection={}; -FCKSelection.GetType=function(){this._Type='Text';var A;try { A=FCK.EditorWindow.getSelection();}catch (e) {};if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.startContainer==B.endContainer&&(B.endOffset-B.startOffset)==1&&B.startContainer.nodeType!=Node.TEXT_NODE) this._Type='Control';};return this._Type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorWindow.getSelection();return A.anchorNode.childNodes[A.anchorOffset];};return null;};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=FCK.EditorWindow.getSelection();if (A){var B=A.anchorNode;while (B&&B.nodeType!=1) B=B.parentNode;return B;}};return null;};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=FCK.EditorWindow.getSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=FCK.EditorWindow.getSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try { B=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (C){if (C.nodeName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=FCK.EditorWindow.getSelection();for (var i=0;i=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode('TD');if (!B) return null;var C=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length';};FCKStyleDef.prototype.GetCloserTag=function(){return '';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());} -FCKStyleDef.prototype.ApplyToSelection=function(){if (FCKSelection.GetType()=='Text'&&!this.IsObjectElement){var A=FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection();var e=FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement(this.Element);for (var i=0;i');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?0:-1);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?0:-1);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML=' ';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){return FCK.GetNamedCommandState('Paste');}}; -var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?0:-1;} -var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return 0;};function FCKTextColorCommand_OnMouseOver() { this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut() { this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='\n \n \n \n \n
    '+FCKLang.ColorAutomatic+'
    ';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H
    ';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='
    '+FCKLang.ColorMoreColors+'
    ';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;} -var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');}; -var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');}; -var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return 0;} -var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return -1;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?0:-1;};return 0;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=[];if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i';B.open();B.write(''+E+'<\/head><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';D=this.MainNode.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=this.MainNode.offsetWidth;var E=FCKTools.GetElementPosition(A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A,this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=E.X;y+=E.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var F=FCKTools.GetViewPaneSize(this._Window);var G=FCKTools.GetScrollPosition(this._Window);var H=F.Height+G.Y;var I=F.Width+G.X;if ((x+D)>I) x-=x+D-I;if ((y+this.MainNode.offsetHeight)>H) y-=y+this.MainNode.offsetHeight-H;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var J=D;var K=this.MainNode.offsetHeight;this._IFrame.width=J;this._IFrame.height=K;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;} -var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;} -var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case 1:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case -1:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);}; -var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);} -var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label=' ';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='
    ';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?' ':A;if (this._LabelEl){this._LabelEl.innerHTML=this.Label;FCKTools.DisableSelection(this._LabelEl);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='
     
    ';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='
    '+this.Caption+'
    ';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var A=this.SpecialCombo;if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}}; -var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this._LastValue=null;};function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}; -var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i'+B[i]+'
    ');} -var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i'+C[1]+'',C[1]);}} -var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);if (FCKConfig.BodyId&&FCKConfig.BodyId.length>0) B.body.id=FCKConfig.BodyId;if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) B.body.className+=' '+FCKConfig.BodyClass;var C=FCKLang['FontFormats'].split(';');var D={p:C[0],pre:C[1],address:C[2],h1:C[3],h2:C[4],h3:C[5],h4:C[6],h5:C[7],h6:C[8],div:C[9]};var E=FCKConfig.FontFormats.split(';');for (var i=0;i<'+F+'>'+G+'',G);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!=' ') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}} -var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);B.body.className+=' ForceBaseFont';if (FCKConfig.BodyId&&FCKConfig.BodyId.length>0) B.body.id=FCKConfig.BodyId;if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) B.body.className+=' '+FCKConfig.BodyClass;if (!(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsGecko10)) A.OnBeforeClick=this.RefreshVisibleItems;var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in C){var D=C[s];var E;if (D.IsObjectElement) E=A.AddItem(s,s);else E=A.AddItem(s,D.GetOpenerTag()+s+D.GetCloserTag());E.Style=D;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i'+document.getElementById('xToolbarSpace').innerHTML+'');G.close();G.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(G,FCKConfig.SkinPath+'fck_editor.css');B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');} -var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i-1);};String.prototype.Equals=function(){var A=arguments;if (A.length==1&&A[0].pop) A=A[0];for (var i=0;iC) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.Remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B0){var B=A.pop();if (B) B[1].call(B[0]);};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();} -var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:s.Contains('msie'),IsIE7:s.Contains('msie 7'),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains('safari'),IsOpera:s.Contains('opera'),IsMac:s.Contains('macintosh')};(function(A){A.IsGeckoLike=(A.IsGecko||A.IsSafari||A.IsOpera);if (A.IsGecko){var B=s.match(/gecko\/(\d+)/)[1];A.IsGecko10=((B<20051111)||(/rv:1\.7/.test(s)));}else A.IsGecko10=false;})(FCKBrowserInfo); -var FCKURLParams={};(function(){var A=document.location.search.substr(1).split('&');for (var i=0;i0?'':'';var A=FCK.KeystrokeHandler=new FCKKeystrokeHandler();A.OnKeystroke=_FCK_KeystrokeHandler_OnKeystroke;A.SetKeystrokes(FCKConfig.Keystrokes);if (FCKBrowserInfo.IsIE7){if ((CTRL+86/*V*/) in A.Keystrokes) A.SetKeystrokes([CTRL+86,true]);if ((SHIFT+45/*INS*/) in A.Keystrokes) A.SetKeystrokes([SHIFT+45,true]);};this.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.EditingArea.FFSpellChecker=FCKConfig.FirefoxSpellChecker;FCKListsLib.Setup();this.SetHTML(this.GetLinkedFieldValue(),true);},Focus:function(){FCK.EditingArea.Focus();},SetStatus:function(A){this.Status=A;if (A==1){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);},FixBody:function(){var A=FCKConfig.EnterMode;if (A!='p'&&A!='div') return;var B=this.EditorDocument;if (!B) return;var C=B.body;if (!C) return;FCKDomTools.TrimNode(C);var D=C.firstChild;var E;while (D){var F=false;switch (D.nodeType){case 1:if (!FCKListsLib.BlockElements[D.nodeName.toLowerCase()]) F=true;break;case 3:if (E||D.nodeValue.Trim().length>0) F=true;};if (F){var G=D.parentNode;if (!E) E=G.insertBefore(B.createElement(A),D);E.appendChild(G.removeChild(D));D=E.nextSibling;}else{if (E){FCKDomTools.TrimNode(E);E=null;};D=D.nextSibling;}};if (E) FCKDomTools.TrimNode(E);},GetXHTML:function(A){if (FCK.EditMode==1) return FCK.EditingArea.Textarea.value;this.FixBody();var B;var C=FCK.EditorDocument;if (!C) return null;if (FCKConfig.FullPage){B=FCKXHtml.GetXHTML(C.getElementsByTagName('html')[0],true,A);if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;}else{B=FCKXHtml.GetXHTML(C.body,false,A);if (FCKConfig.IgnoreEmptyParagraphValue&&FCKRegexLib.EmptyOutParagraph.test(B)) B='';};B=FCK.ProtectEventsRestore(B);if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');return FCKConfig.ProtectedSource.Revert(B);},UpdateLinkedField:function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');},RegisteredDoubleClickHandlers:{},OnDoubleClick:function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);},RegisterDoubleClickHandler:function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;},OnAfterSetHTML:function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCKUndo.SaveUndoStep();FCK.Events.FireEvent('OnSelectionChange');FCK.Events.FireEvent('OnAfterSetHTML');},ProtectUrls:function(A){A=A.replace(FCKRegexLib.ProtectUrlsA,'$& _fcksavedurl=$1');A=A.replace(FCKRegexLib.ProtectUrlsImg,'$& _fcksavedurl=$1');return A;},ProtectEvents:function(A){return A.replace(FCKRegexLib.TagsWithEvent,_FCK_ProtectEvents_ReplaceTags);},ProtectEventsRestore:function(A){return A.replace(FCKRegexLib.ProtectedEvents,_FCK_ProtectEvents_RestoreEvents);},ProtectTags:function(A){var B=FCKConfig.ProtectedTags;if (FCKBrowserInfo.IsIE) B+=B.length>0?'|ABBR|XML':'ABBR|XML';var C;if (B.length>0){C=new RegExp('<('+B+')(?!\w|:)','gi');A=A.replace(C,'','gi');A=A.replace(C,'<\/FCK:$1>');};B='META';if (FCKBrowserInfo.IsIE) B+='|HR';C=new RegExp('<(('+B+')(?=\\s|>|/)[\\s\\S]*?)/?>','gi');A=A.replace(C,'');return A;},SetHTML:function(A,B){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==0){A=FCKConfig.ProtectedSource.Protect(A);A=A.replace(FCKRegexLib.InvalidSelfCloseTags,'$1>');A=FCK.ProtectEvents(A);A=FCK.ProtectUrls(A);A=FCK.ProtectTags(A);if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'');A=A.replace(FCKRegexLib.EmOpener,'');};this._ForceResetIsDirty=(B===true);var C='';if (FCKConfig.FullPage){if (!FCKRegexLib.HeadOpener.test(A)){if (!FCKRegexLib.HtmlOpener.test(A)) A=''+A+'';A=A.replace(FCKRegexLib.HtmlOpener,'$&');};FCK.DocTypeDeclaration=A.match(FCKRegexLib.DocTypeTag);if (FCKBrowserInfo.IsIE) C=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C='';C+='';C=A.replace(FCKRegexLib.HeadCloser,C+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) C=C.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{C=FCKConfig.DocType+'';if (FCKBrowserInfo.IsIE) C+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) C+='';C+=FCK.TempBaseTag;var D='0) D+=' id="'+FCKConfig.BodyId+'"';if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) D+=' class="'+FCKConfig.BodyClass+'"';C+=''+D+'>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) C+=GECKO_BOGUS;else C+=A;C+='';};this.EditingArea.OnLoad=_FCK_EditingArea_OnLoad;this.EditingArea.Start(C);}else{FCK.EditorWindow=null;FCK.EditorDocument=null;this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;FCK.EnterKeyHandler=null;if (B) this.ResetIsDirty();FCK.KeystrokeHandler.AttachToElement(this.EditingArea.Textarea);this.EditingArea.Textarea.focus();FCK.Events.FireEvent('OnAfterSetHTML');};if (FCKBrowserInfo.IsGecko) window.onresize();},HasFocus:false,RedirectNamedCommands:{},ExecuteNamedCommand:function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();},GetNamedCommandState:function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return -1;else return FCK.EditorDocument.queryCommandState(A)?1:0;}catch (e){return 0;}},GetNamedCommandValue:function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==-1) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';},PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');},Preview:function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.TempBaseTag+FCK.GetXHTML();else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+''+FCK.TempBaseTag+''+FCKLang.Preview+''+_FCK_GetEditorAreaStyleTags()+''+FCK.GetXHTML()+'';};D.document.write(E);D.document.close();},SwitchEditMode:function(A){var B=(FCK.EditMode==0);var C=FCK.IsDirty();var D;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();D=FCK.GetXHTML(FCKConfig.FormatSource);if (D==null) return false;}else D=this.EditingArea.Textarea.value;FCK.EditMode=B?1:0;FCK.SetHTML(D,!C);FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);return true;},CreateElement:function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);},InsertElementAndGetIt:function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i/g,/\r/g,/\n/g],[''',''','"','=','<','>',' ',' '])+'"';};function _FCK_ProtectEvents_RestoreEvents(A,B){return B.ReplaceAll([/'/g,/"/g,/=/g,/</g,/>/g,/ /g,/ /g,/'/g],["'",'"','=','<','>','\r','\n','&']);};function _FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();if (!FCKConfig.DisableEnterKeyHandler) FCK.EnterKeyHandler=new FCKEnterKey(FCK.EditorWindow,FCKConfig.EnterMode,FCKConfig.ShiftEnterMode);FCK.KeystrokeHandler.AttachToElement(FCK.EditorDocument);if (FCK._ForceResetIsDirty) FCK.ResetIsDirty();if (FCKBrowserInfo.IsIE&&FCK.HasFocus) FCK.EditorDocument.body.setActive();FCK.OnAfterSetHTML();if (FCK.Status!=0) return;FCK.SetStatus(1);};function _FCK_GetEditorAreaStyleTags(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i';return A;};function _FCK_KeystrokeHandler_OnKeystroke(A,B){if (FCK.Status!=2) return false;if (FCK.EditMode==0){if (B=='Paste') return!FCK.Events.FireEvent('OnPaste');}else{if (B.Equals('Paste','Undo','Redo','SelectAll')) return false;};var C=FCK.Commands.GetCommand(B);return (C.Execute.apply(C,FCKTools.ArgumentsToArray(arguments,2))!==false);};(function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var i=0;while (B||i==0){if (B&&B.tagName.toLowerCase().Equals('input','textarea')){FCK.LinkedField=B;break;};B=A.getElementsByName(FCK.Name)[i++];}})();var FCKTempBin={Elements:[],AddElement:function(A){var B=this.Elements.length;this.Elements[B]=A;return B;},RemoveElement:function(A){var e=this.Elements[A];this.Elements[A]=null;return e;},Reset:function(){var i=0;while (i0) C+='TABLE { behavior: '+B+' ; }';C+='';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){return (FCK.Status==2&&FCK.Events.FireEvent("OnPaste"));};function Doc_OnKeyDown(){if (FCK.EditorWindow){var e=FCK.EditorWindow.event;if (!(e.keyCode>=16&&e.keyCode<=18)) Doc_OnKeyDownUndo();};return true;};function Doc_OnKeyDownUndo(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){FCK.Events.FireEvent("OnSelectionChange");};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);if (FCKConfig.TabSpaces>0){window.FCKTabHTML='';for (i=0;i '+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};function FCK_PreloadImages(){var A=new FCKImagePreloader();A.AddImages(FCKConfig.PreloadImages);A.AddImages(FCKConfig.SkinPath+'fck_strip.gif');A.OnComplete=LoadToolbarSetup;A.Start();};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.EditorWindow=null;this.EditorDocument=null;};FCK.Paste=function(){if (FCK._PasteIsRunning) return true;if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;};var A=FCK._CheckIsPastingEnabled(true);if (A===false) FCKTools.RunFunction(FCKDialog.OpenDialog,FCKDialog,['FCKDialog_Paste',FCKLang.Paste,'dialog/fck_paste.html',400,330,'Security']);else{if (FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang.PasteWordConfirm)){FCK.PasteFromWord();return false;}}};FCK._PasteIsRunning=true;FCK.ExecuteNamedCommand('Paste');delete FCK._PasteIsRunning;};return false;};FCK.PasteAsPlainText=function(){if (!FCK._CheckIsPastingEnabled()){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');return;};var A=clipboardData.getData("Text");if (A&&A.length>0){A=FCKTools.HTMLEncode(A).replace(/\n/g,'
    ');this.InsertHtml(A);}};FCK._CheckIsPastingEnabled=function(A){FCK._PasteIsEnabled=false;document.body.attachEvent('onpaste',FCK_CheckPasting_Listener);var B=FCK.GetClipboardHTML();document.body.detachEvent('onpaste',FCK_CheckPasting_Listener);if (FCK._PasteIsEnabled){if (!A) B=true;}else B=false;delete FCK._PasteIsEnabled;return B;};function FCK_CheckPasting_Listener(){FCK._PasteIsEnabled=true;};FCK.InsertElement=function(A){FCK.InsertHtml(A.outerHTML);};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){A=document.createElement('DIV');A.id='___FCKHiddenDiv';var B=A.style;B.position='absolute';B.visibility=B.overflow='hidden';B.width=B.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.CreateLink=function(A){var B=[];FCK.ExecuteNamedCommand('Unlink');if (A.length>0){if (FCKSelection.GetType()=='Control'){var C=this.EditorDocument.createElement('A');C.href=A;var D=FCKSelection.GetSelectedElement();D.parentNode.insertBefore(C,D);D.parentNode.removeChild(D);C.appendChild(D);return [C];};var E='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',E);var F=this.EditorDocument.links;for (i=0;i0&&!isNaN(E)) this.PageConfig[D]=parseInt(E,10);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var A=FCKConfig.PageConfig;for (var B in A) FCKConfig[B]=A[B];};function FCKConfig_PreProcess(){var A=FCKConfig;if (A.AllowQueryStringDebug){try{if ((/fckdebug=true/i).test(window.top.location.search)) A.Debug=true;}catch (e) {/*Ignore it. Much probably we are inside a FRAME where the "top" is in another domain (security error).*/}};if (!A.PluginsPath.EndsWith('/')) A.PluginsPath+='/';if (typeof(A.EditorAreaCSS)=='string') A.EditorAreaCSS=[A.EditorAreaCSS];var B=A.ToolbarComboPreviewCSS;if (!B||B.length==0) A.ToolbarComboPreviewCSS=A.EditorAreaCSS;else if (typeof(B)=='string') A.ToolbarComboPreviewCSS=[B];};FCKConfig.ToolbarSets={};FCKConfig.Plugins={};FCKConfig.Plugins.Items=[];FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource={};FCKConfig.ProtectedSource.RegexEntries=[//g,//gi,//gi,//gi];FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '';};for (var i=0;i|>)/g,_Replace);} -var FCKDebug={};FCKDebug._GetWindow=function(){if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=yes,resizable=yes,location=no,toolbar=no,width=600,height=500',true);return this.DebugWindow;};FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;try{this._GetWindow().Output(A,B);}catch (e) {}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;try{this._GetWindow().OutputObject(A,B);}catch (e) {}} -var FCKDomTools={MoveChildren:function(A,B){if (A==B) return;var C;while ((C=A.firstChild)) B.appendChild(A.removeChild(C));},TrimNode:function(A,B){this.LTrimNode(A);this.RTrimNode(A,B);},LTrimNode:function(A){var B;while ((B=A.firstChild)){if (B.nodeType==3){var C=B.nodeValue.LTrim();var D=B.nodeValue.length;if (C.length==0){A.removeChild(B);continue;}else if (C.length0) break;if (A.lastChild) A=A.lastChild;else return this.GetPreviousSourceElement(A,B,C,D);};return null;},GetNextSourceElement:function(A,B,C,D){if (!A) return null;if (A.nextSibling) A=A.nextSibling;else return this.GetNextSourceElement(A.parentNode,B,C,D);while (A){if (A.nodeType==1){if (C&&A.nodeName.IEquals(C)) break;if (!D||!A.nodeName.IEquals(D)) return A;}else if (B&&A.nodeType==3&&A.nodeValue.RTrim().length>0) break;if (A.firstChild) A=A.firstChild;else return this.GetNextSourceElement(A,B,C,D);};return null;},InsertAfterNode:function(A,B){return A.parentNode.insertBefore(B,A.nextSibling);},GetParents:function(A){var B=[];while (A){B.splice(0,0,A);A=A.parentNode;};return B;},GetIndexOf:function(A){var B=A.parentNode?A.parentNode.firstChild:null;var C=-1;while (B){C++;if (B==A) return C;B=B.nextSibling;};return-1;}}; -var GECKO_BOGUS='
    ';var FCKTools={};FCKTools.CreateBogusBR=function(A){var B=A.createElement('br');B.setAttribute('type','_moz');return B;};FCKTools.AppendStyleSheet=function(A,B){if (typeof(B)=='string') return this._AppendStyleSheet(A,B);else{var C=[];for (var i=0;i/g,'>');return A;};FCKTools.HTMLDecode=function(A){if (!A) return '';A=A.replace(/>/g,'>');A=A.replace(/</g,'<');A=A.replace(/&/g,'&');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.EndsWith('%')?A:parseInt(A,10);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.EndsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i0) return A[A.length-1];return null;}; -FCKTools.CancelEvent=function(e){return false;};FCKTools._AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=[];for (var i=0;i0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};return null;};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while ((e=A.all[i++])){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o={};o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=top.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B={};if (A.className.length>0){B.Class=A.className;A.className='';};var C=A.style.cssText;if (C.length>0){B.Inline=C;A.style.cssText='';};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';A.style.cssText=B.Inline||'';};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));};FCKTools.ToLowerCase=function(A){return A.toLowerCase();} -var FCKeditorAPI;function InitializeAPI(){var A=window.parent;if (!(FCKeditorAPI=A.FCKeditorAPI)){var B='var FCKeditorAPI = {Version : "2.4.3",VersionBuild : "15657",__Instances : new Object(),GetInstance : function( name ){return this.__Instances[ name ];},_FormSubmit : function(){for ( var name in FCKeditorAPI.__Instances ){var oEditor = FCKeditorAPI.__Instances[ name ] ;if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )oEditor.UpdateLinkedField() ;}this._FCKOriginalSubmit() ;},_FunctionQueue : {Functions : new Array(),IsRunning : false,Add : function( f ){this.Functions.push( f );if ( !this.IsRunning )this.StartNext();},StartNext : function(){var aQueue = this.Functions ;if ( aQueue.length > 0 ){this.IsRunning = true;aQueue[0].call();}else this.IsRunning = false;},Remove : function( f ){var aQueue = this.Functions;var i = 0, fFunc;while( (fFunc = aQueue[ i ]) ){if ( fFunc == f )aQueue.splice( i,1 );i++ ;}this.StartNext();}}}';if (A.execScript) A.execScript(B,'JavaScript');else{if (FCKBrowserInfo.IsGecko10){eval.call(A,B);}else if (FCKBrowserInfo.IsSafari){var C=A.document;var D=C.createElement('script');D.appendChild(C.createTextNode(B));C.documentElement.appendChild(D);}else A.eval(B);};FCKeditorAPI=A.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function _AttachFormSubmitToAPI(){var A=FCK.GetParentForm();if (A){FCKTools.AddEventListener(A,'submit',FCK.UpdateLinkedField);if (!A._FCKOriginalSubmit&&(typeof(A.submit)=='function'||(!A.submit.tagName&&!A.submit.length))){A._FCKOriginalSubmit=A.submit;A.submit=FCKeditorAPI._FormSubmit;}}};function FCKeditorAPI_Cleanup(){delete FCKeditorAPI.__Instances[FCK.Name];};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup); -var FCKImagePreloader=function(){this._Images=[];};FCKImagePreloader.prototype={AddImages:function(A){if (typeof(A)=='string') A=A.split(';');this._Images=this._Images.concat(A);},Start:function(){var A=this._Images;this._PreloadCount=A.length;for (var i=0;i]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i,ToReplace:/___fcktoreplace:([\w]+)/ig,MetaHttpEquiv:/http-equiv\s*=\s*["']?([^"' ]+)/i,HasBaseTag:/]*>/i,HeadOpener:/]*>/i,HeadCloser:/<\/head\s*>/i,FCK_Class:/(\s*FCK__[A-Za-z]*\s*)/,ElementName:/(^[a-z_:][\w.\-:]*\w$)|(^[a-z_]$)/,ForceSimpleAmpersand:/___FCKAmp___/g,SpaceNoClose:/\/>/g,EmptyParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/,EmptyOutParagraph:/^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*| )(<\/\1>)?$/,TagBody:/>])/gi,StrongCloser:/<\/STRONG>/gi,EmOpener:/])/gi,EmCloser:/<\/EM>/gi,GeckoEntitiesMarker:/#\?-\:/g,ProtectUrlsImg:/]+))/gi,ProtectUrlsA:/]+))/gi,Html4DocType:/HTML 4\.0 Transitional/i,DocTypeTag:/]*>/i,TagsWithEvent:/<[^\>]+ on\w+[\s\r\n]*=[\s\r\n]*?('|")[\s\S]+?\>/g,EventAttributes:/\s(on\w+)[\s\r\n]*=[\s\r\n]*?('|")([\s\S]*?)\2/g,ProtectedEvents:/\s\w+_fckprotectedatt="([^"]+)"/g,StyleProperties:/\S+\s*:/g,InvalidSelfCloseTags:/(<(?!base|meta|link|hr|br|param|img|area|input)([a-zA-Z0-9:]+)[^>]*)\/>/gi}; -var FCKListsLib={BlockElements:{ address:1,blockquote:1,center:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,marquee:1,noscript:1,ol:1,p:1,pre:1,script:1,table:1,ul:1 },NonEmptyBlockElements:{ p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,address:1,pre:1,ol:1,ul:1,li:1,td:1,th:1 },InlineChildReqElements:{ abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 },EmptyElements:{ base:1,meta:1,link:1,hr:1,br:1,param:1,img:1,area:1,input:1 },PathBlockElements:{ address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,ol:1,ul:1,li:1,dt:1,de:1 },PathBlockLimitElements:{ body:1,td:1,th:1,caption:1,form:1 },Setup:function(){if (FCKConfig.EnterMode=='div') this.PathBlockElements.div=1;else this.PathBlockLimitElements.div=1;}}; -var FCKLanguageManager=FCK.Language={AvailableLanguages:{af:'Afrikaans',ar:'Arabic',bg:'Bulgarian',bn:'Bengali/Bangla',bs:'Bosnian',ca:'Catalan',cs:'Czech',da:'Danish',de:'German',el:'Greek',en:'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)',eo:'Esperanto',es:'Spanish',et:'Estonian',eu:'Basque',fa:'Persian',fi:'Finnish',fo:'Faroese',fr:'French',gl:'Galician',he:'Hebrew',hi:'Hindi',hr:'Croatian',hu:'Hungarian',it:'Italian',ja:'Japanese',km:'Khmer',ko:'Korean',lt:'Lithuanian',lv:'Latvian',mn:'Mongolian',ms:'Malay',nb:'Norwegian Bokmal',nl:'Dutch',no:'Norwegian',pl:'Polish',pt:'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)',ro:'Romanian',ru:'Russian',sk:'Slovak',sl:'Slovenian',sr:'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)',sv:'Swedish',th:'Thai',tr:'Turkish',uk:'Ukrainian',vi:'Vietnamese',zh:'Chinese Traditional','zh-cn':'Chinese Simplified'},GetActiveLanguage:function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;},TranslateElements:function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i0) C+='|'+FCKConfig.AdditionalNumericEntities;FCKXHtmlEntities.EntitiesRegex=new RegExp(C,'g');} -var FCKXHtml={};FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();this._NbspEntity=(FCKConfig.ProcessHTMLEntities?'nbsp':'#160');var D=FCK.IsDirty();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=[];this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var E=this._GetMainXmlString();this.XML=null;E=E.substr(7,E.length-15).Trim();if (FCKBrowserInfo.IsGecko) E=E.replace(/$/,'');E=E.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) E=E.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) E=FCKCodeFormatter.Format(E);for (var i=0;i0;if (C) A.appendChild(this.XML.createTextNode(B.replace(FCKXHtmlEntities.EntitiesRegex,FCKXHtml_GetEntity)));return C;};function FCKXHtml_GetEntity(A){var B=FCKXHtmlEntities.Entities[A]||('#'+A.charCodeAt(0));return '#?-:'+B+';';};FCKXHtml._RemoveAttribute=function(A,B,C){var D=A.attributes.getNamedItem(C);if (D&&B.test(D.nodeValue)){var E=D.nodeValue.replace(B,'');if (E.length==0) A.attributes.removeNamedItem(C);else D.nodeValue=E;}};FCKXHtml.TagProcessors={img:function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'src',C);return A;},a:function(A,B){if (B.innerHTML.Trim().length==0&&!B.name) return false;var C=B.getAttribute('_fcksavedurl');if (C!=null) FCKXHtml._AppendAttribute(A,'href',C);if (FCKBrowserInfo.IsIE){FCKXHtml._RemoveAttribute(A,FCKRegexLib.FCK_Class,'class');if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);};A=FCKXHtml._AppendChildNodes(A,B,false);return A;},script:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;},style:function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;},title:function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;},table:function(A,B){if (FCKBrowserInfo.IsIE) FCKXHtml._RemoveAttribute(A,FCKRegexLib.FCK_Class,'class');A=FCKXHtml._AppendChildNodes(A,B,false);return A;},ol:function(A,B,C){if (B.innerHTML.Trim().length==0) return false;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return false;};A=FCKXHtml._AppendChildNodes(A,B);return A;},span:function(A,B){if (B.innerHTML.length==0) return false;A=FCKXHtml._AppendChildNodes(A,B,false);return A;},iframe:function(A,B){var C=B.innerHTML;if (FCKBrowserInfo.IsGecko) C=FCKTools.HTMLDecode(C);C=C.replace(/\s_fcksavedurl="[^"]*"/g,'');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(C)));return A;}};FCKXHtml.TagProcessors.ul=FCKXHtml.TagProcessors.ol; -FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n0) FCKXHtml._AppendAttribute(A,'shape',D);};return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);var C=B.attributes['name'];if (C&&C.value.length>0) FCKXHtml._AppendAttribute(A,'name',C.value);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);A=FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);A=FCKXHtml._AppendChildNodes(A,B,true);return A;} -var FCKCodeFormatter={};FCKCodeFormatter.Init=function(){var A=this.Regex={};A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=[];var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i=0&&A==FCKUndo.SavedData[FCKUndo.CurrentIndex][0]) return;if (FCKUndo.CurrentIndex+1>=FCKConfig.MaxUndoLevels) FCKUndo.SavedData.shift();else FCKUndo.CurrentIndex++;var B;if (FCK.EditorDocument.selection.type=='Text') B=FCK.EditorDocument.selection.createRange().getBookmark();FCKUndo.SavedData[FCKUndo.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (FCKUndo.Typing||FCKUndo.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (!FCKUndo.Typing&&FCKUndo.CurrentIndex<(FCKUndo.SavedData.length-1));};FCKUndo.Undo=function(){if (FCKUndo.CheckUndoState()){if (FCKUndo.CurrentIndex==(FCKUndo.SavedData.length-1)){FCKUndo.SaveUndoStep();};FCKUndo._ApplyUndoLevel(--FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (FCKUndo.CheckRedoState()){FCKUndo._ApplyUndoLevel(++FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=FCKUndo.SavedData[A];if (!B) return;FCK.SetInnerHtml(B[0]);if (B[1]){var C=FCK.EditorDocument.selection.createRange();C.moveToBookmark(B[1]);C.select();};FCKUndo.TypesCount=0;FCKUndo.Typing=false;} -var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=0;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.childNodes.length>0) C.removeChild(C.childNodes[0]);if (this.Mode==0){var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1>');else if (!B){if (FCKBrowserInfo.IsGecko) A=A.replace(/(]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var F=A.match(FCKRegexLib.BodyContents);if (F){A=F[1]+' '+F[3];this._BodyHTML=F[2];}else this._BodyHTML=A;};this.Window=E.contentWindow;var G=this.Document=this.Window.document;G.open();G.write(A);G.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var H=this.Textarea=D.createElement('textarea');H.className='SourceField';H.dir='ltr';H.style.width=H.style.height='100%';H.style.border='none';C.appendChild(H);H.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var A=this._FCKEditingArea;A.MakeEditable();FCKTools.RunFunction(A.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE){A.body.contentEditable=true;}else{try{A.body.spellcheck=(this.FFSpellChecker!==false);if (this._BodyHTML){A.body.innerHTML=this._BodyHTML;this._BodyHTML=null;};A.designMode='on';try{A.execCommand('styleWithCSS',false,FCKConfig.GeckoUseSPAN);}catch (e){A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);};A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==0){if (FCKBrowserInfo.IsIE&&this.Document.hasFocus()) return;if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else{this.Window.focus();}}else{var A=FCKTools.GetElementDocument(this.Textarea);if ((!A.hasFocus||A.hasFocus())&&A.activeElement==this.Textarea) return;this.Textarea.focus();}}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}; -var FCKKeystrokeHandler=function(A){this.Keystrokes={};this.CancelCtrlDefaults=(A!==false);};FCKKeystrokeHandler.prototype.AttachToElement=function(A){FCKTools.AddEventListenerEx(A,'keydown',_FCKKeystrokeHandler_OnKeyDown,this);if (FCKBrowserInfo.IsGecko10||FCKBrowserInfo.IsOpera||(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsMac)) FCKTools.AddEventListenerEx(A,'keypress',_FCKKeystrokeHandler_OnKeyPress,this);};FCKKeystrokeHandler.prototype.SetKeystrokes=function(){for (var i=0;i40))){B._CancelIt=true;if (A.preventDefault) return A.preventDefault();A.returnValue=false;A.cancelBubble=true;return false;};return true;};function _FCKKeystrokeHandler_OnKeyPress(A,B){if (B._CancelIt){if (A.preventDefault) return A.preventDefault();return false;};return true;} -var FCKListHandler={OutdentListItem:function(A){var B=A.parentNode;if (B.tagName.toUpperCase().Equals('UL','OL')){var C=FCKTools.GetElementDocument(A);var D=new FCKDocumentFragment(C);var E=D.RootNode;var F=false;var G=FCKDomTools.GetFirstChild(A,['UL','OL']);if (G){F=true;var H;while ((H=G.firstChild)) E.appendChild(G.removeChild(H));FCKDomTools.RemoveNode(G);};var I;var J=false;while ((I=A.nextSibling)){if (!F&&I.nodeType==1&&I.nodeName.toUpperCase()=='LI') J=F=true;E.appendChild(I.parentNode.removeChild(I));if (!J&&I.nodeType==1&&I.nodeName.toUpperCase().Equals('UL','OL')) FCKDomTools.RemoveNode(I,true);};var K=B.parentNode.tagName.toUpperCase();var L=(K=='LI');if (L||K.Equals('UL','OL')){if (F){var G=B.cloneNode(false);D.AppendTo(G);A.appendChild(G);}else if (L) D.InsertAfterNode(B.parentNode);else D.InsertAfterNode(B);if (L) FCKDomTools.InsertAfterNode(B.parentNode,B.removeChild(A));else FCKDomTools.InsertAfterNode(B,B.removeChild(A));}else{if (F){var N=B.cloneNode(false);D.AppendTo(N);FCKDomTools.InsertAfterNode(B,N);};var O=C.createElement(FCKConfig.EnterMode=='p'?'p':'div');FCKDomTools.MoveChildren(B.removeChild(A),O);FCKDomTools.InsertAfterNode(B,O);if (FCKConfig.EnterMode=='br'){if (FCKBrowserInfo.IsGecko) O.parentNode.insertBefore(FCKTools.CreateBogusBR(C),O);else FCKDomTools.InsertAfterNode(O,FCKTools.CreateBogusBR(C));FCKDomTools.RemoveNode(O,true);}};if (this.CheckEmptyList(B)) FCKDomTools.RemoveNode(B,true);}},CheckEmptyList:function(A){return (FCKDomTools.GetFirstChild(A,'LI')==null);},CheckListHasContents:function(A){var B=A.firstChild;while (B){switch (B.nodeType){case 1:if (!B.nodeName.IEquals('UL','LI')) return true;break;case 3:if (B.nodeValue.Trim().length>0) return true;};B=B.nextSibling;};return false;}}; -var FCKElementPath=function(A){var B=null;var C=null;var D=[];var e=A;while (e){if (e.nodeType==1){if (!this.LastElement) this.LastElement=e;var E=e.nodeName.toLowerCase();if (!C){if (!B&&FCKListsLib.PathBlockElements[E]!=null) B=e;if (FCKListsLib.PathBlockLimitElements[E]!=null) C=e;};D.push(e);if (E=='body') break;};e=e.parentNode;};this.Block=B;this.BlockLimit=C;this.Elements=D;}; -var FCKDomRange=function(A){this.Window=A;};FCKDomRange.prototype={_UpdateElementInfo:function(){if (!this._Range) this.Release(true);else{var A=this._Range.startContainer;var B=this._Range.endContainer;var C=new FCKElementPath(A);this.StartContainer=C.LastElement;this.StartBlock=C.Block;this.StartBlockLimit=C.BlockLimit;if (A!=B) C=new FCKElementPath(B);this.EndContainer=C.LastElement;this.EndBlock=C.Block;this.EndBlockLimit=C.BlockLimit;}},CreateRange:function(){return new FCKW3CRange(this.Window.document);},DeleteContents:function(){if (this._Range){this._Range.deleteContents();this._UpdateElementInfo();}},ExtractContents:function(){if (this._Range){var A=this._Range.extractContents();this._UpdateElementInfo();return A;}},CheckIsCollapsed:function(){if (this._Range) return this._Range.collapsed;},Collapse:function(A){if (this._Range) this._Range.collapse(A);this._UpdateElementInfo();},Clone:function(){var A=FCKTools.CloneObject(this);if (this._Range) A._Range=this._Range.cloneRange();return A;},MoveToNodeContents:function(A){if (!this._Range) this._Range=this.CreateRange();this._Range.selectNodeContents(A);this._UpdateElementInfo();},MoveToElementStart:function(A){this.SetStart(A,1);this.SetEnd(A,1);},MoveToElementEditStart:function(A){var B;while ((B=A.firstChild)&&B.nodeType==1&&FCKListsLib.EmptyElements[B.nodeName.toLowerCase()]==null) A=B;this.MoveToElementStart(A);},InsertNode:function(A){if (this._Range) this._Range.insertNode(A);},CheckIsEmpty:function(A){if (this.CheckIsCollapsed()) return true;var B=this.Window.document.createElement('div');this._Range.cloneContents().AppendTo(B);FCKDomTools.TrimNode(B,A);return (B.innerHTML.length==0);},CheckStartOfBlock:function(){var A=this.Clone();A.Collapse(true);A.SetStart(A.StartBlock||A.StartBlockLimit,1);var B=A.CheckIsEmpty();A.Release();return B;},CheckEndOfBlock:function(A){var B=this.Clone();B.Collapse(false);B.SetEnd(B.EndBlock||B.EndBlockLimit,2);var C=B.CheckIsCollapsed();if (!C){var D=this.Window.document.createElement('div');B._Range.cloneContents().AppendTo(D);FCKDomTools.TrimNode(D,true);C=true;var E=D;while ((E=E.lastChild)){if (E.previousSibling||E.nodeType!=1||FCKListsLib.InlineChildReqElements[E.nodeName.toLowerCase()]==null){C=false;break;}}};B.Release();if (A) this.Select();return C;},CreateBookmark:function(){var A={StartId:'fck_dom_range_start_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000),EndId:'fck_dom_range_end_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000)};var B=this.Window.document;var C;var D;if (!this.CheckIsCollapsed()){C=B.createElement('span');C.id=A.EndId;C.innerHTML=' ';D=this.Clone();D.Collapse(false);D.InsertNode(C);};C=B.createElement('span');C.id=A.StartId;C.innerHTML=' ';D=this.Clone();D.Collapse(true);D.InsertNode(C);return A;},MoveToBookmark:function(A,B){var C=this.Window.document;var D=C.getElementById(A.StartId);var E=C.getElementById(A.EndId);this.SetStart(D,3);if (!B) FCKDomTools.RemoveNode(D);if (E){this.SetEnd(E,3);if (!B) FCKDomTools.RemoveNode(E);}else this.Collapse(true);},SetStart:function(A,B){var C=this._Range;if (!C) C=this._Range=this.CreateRange();switch(B){case 1:C.setStart(A,0);break;case 2:C.setStart(A,A.childNodes.length);break;case 3:C.setStartBefore(A);break;case 4:C.setStartAfter(A);};this._UpdateElementInfo();},SetEnd:function(A,B){var C=this._Range;if (!C) C=this._Range=this.CreateRange();switch(B){case 1:C.setEnd(A,0);break;case 2:C.setEnd(A,A.childNodes.length);break;case 3:C.setEndBefore(A);break;case 4:C.setEndAfter(A);};this._UpdateElementInfo();},Expand:function(A){var B,oSibling;switch (A){case 'block_contents':if (this.StartBlock) this.SetStart(this.StartBlock,1);else{B=this._Range.startContainer;if (B.nodeType==1){if (!(B=B.childNodes[this._Range.startOffset])) B=B.firstChild;};if (!B) return;while (true){oSibling=B.previousSibling;if (!oSibling){if (B.parentNode!=this.StartBlockLimit) B=B.parentNode;else break;}else if (oSibling.nodeType!=1||!(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test(oSibling.nodeName.toUpperCase())){B=oSibling;}else break;};this._Range.setStartBefore(B);};if (this.EndBlock) this.SetEnd(this.EndBlock,2);else{B=this._Range.endContainer;if (B.nodeType==1) B=B.childNodes[this._Range.endOffset]||B.lastChild;if (!B) return;while (true){oSibling=B.nextSibling;if (!oSibling){if (B.parentNode!=this.EndBlockLimit) B=B.parentNode;else break;}else if (oSibling.nodeType!=1||!(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test(oSibling.nodeName.toUpperCase())){B=oSibling;}else break;};this._Range.setEndAfter(B);};this._UpdateElementInfo();}},Release:function(A){if (!A) this.Window=null;this.StartContainer=null;this.StartBlock=null;this.StartBlockLimit=null;this.EndContainer=null;this.EndBlock=null;this.EndBlockLimit=null;this._Range=null;}}; -FCKDomRange.prototype.MoveToSelection=function(){this.Release(true);this._Range=new FCKW3CRange(this.Window.document);var A=this.Window.document.selection;if (A.type!='Control'){B=this._GetSelectionMarkerTag(true);this._Range.setStart(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);var B=this._GetSelectionMarkerTag(false);this._Range.setEnd(B.parentNode,FCKDomTools.GetIndexOf(B));B.parentNode.removeChild(B);this._UpdateElementInfo();}else{var C=A.createRange().item(0);if (C){this._Range.setStartBefore(C);this._Range.setEndAfter(C);this._UpdateElementInfo();}}};FCKDomRange.prototype.Select=function(){if (this._Range){var A=this.CheckIsCollapsed();var B=this._GetRangeMarkerTag(true);if (!A) var C=this._GetRangeMarkerTag(false);var D=this.Window.document.body.createTextRange();D.moveToElementText(B);D.moveStart('character',1);if (!A){var E=this.Window.document.body.createTextRange();E.moveToElementText(C);D.setEndPoint('EndToEnd',E);D.moveEnd('character',-1);};this._Range.setStartBefore(B);B.parentNode.removeChild(B);if (A){try{D.pasteHTML(' ');D.moveStart('character',-1);}catch (e){};D.select();D.pasteHTML('');}else{this._Range.setEndBefore(C);C.parentNode.removeChild(C);D.select();}}};FCKDomRange.prototype._GetSelectionMarkerTag=function(A){var B=this.Window.document.selection.createRange();B.collapse(A===true);var C='fck_dom_range_temp_'+(new Date()).valueOf()+'_'+Math.floor(Math.random()*1000);B.pasteHTML('');return this.Window.document.getElementById(C);};FCKDomRange.prototype._GetRangeMarkerTag=function(A){var B=this._Range;if (!A){B=B.cloneRange();B.collapse(A===true);};var C=this.Window.document.createElement('span');C.innerHTML=' ';B.insertNode(C);return C;} -var FCKDocumentFragment=function(A){this._Document=A;this.RootNode=A.createElement('div');};FCKDocumentFragment.prototype={AppendTo:function(A){FCKDomTools.MoveChildren(this.RootNode,A);},AppendHtml:function(A){var B=this._Document.createElement('div');B.innerHTML=A;FCKDomTools.MoveChildren(B,this.RootNode);},InsertAfterNode:function(A){var B=this.RootNode;var C;while((C=B.lastChild)) FCKDomTools.InsertAfterNode(A,B.removeChild(C));}}; -var FCKW3CRange=function(A){this._Document=A;this.startContainer=null;this.startOffset=null;this.endContainer=null;this.endOffset=null;this.collapsed=true;};FCKW3CRange.CreateRange=function(A){return new FCKW3CRange(A);};FCKW3CRange.CreateFromRange=function(A,B){var C=FCKW3CRange.CreateRange(A);C.setStart(B.startContainer,B.startOffset);C.setEnd(B.endContainer,B.endOffset);return C;};FCKW3CRange.prototype={_UpdateCollapsed:function(){this.collapsed=(this.startContainer==this.endContainer&&this.startOffset==this.endOffset);},setStart:function(A,B){this.startContainer=A;this.startOffset=B;if (!this.endContainer){this.endContainer=A;this.endOffset=B;};this._UpdateCollapsed();},setEnd:function(A,B){this.endContainer=A;this.endOffset=B;if (!this.startContainer){this.startContainer=A;this.startOffset=B;};this._UpdateCollapsed();},setStartAfter:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setStartBefore:function(A){this.setStart(A.parentNode,FCKDomTools.GetIndexOf(A));},setEndAfter:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A)+1);},setEndBefore:function(A){this.setEnd(A.parentNode,FCKDomTools.GetIndexOf(A));},collapse:function(A){if (A){this.endContainer=this.startContainer;this.endOffset=this.startOffset;}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset;};this.collapsed=true;},selectNodeContents:function(A){this.setStart(A,0);this.setEnd(A,A.nodeType==3?A.data.length:A.childNodes.length);},insertNode:function(A){var B=this.startContainer;var C=this.startOffset;if (B.nodeType==3){B.splitText(C);if (B==this.endContainer) this.setEnd(B.nextSibling,this.endOffset-this.startOffset);FCKDomTools.InsertAfterNode(B,A);return;}else{B.insertBefore(A,B.childNodes[C]||null);if (B==this.endContainer){this.endOffset++;this.collapsed=false;}}},deleteContents:function(){if (this.collapsed) return;this._ExecContentsAction(0);},extractContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(1,A);return A;},cloneContents:function(){var A=new FCKDocumentFragment(this._Document);if (!this.collapsed) this._ExecContentsAction(2,A);return A;},_ExecContentsAction:function(A,B){var C=this.startContainer;var D=this.endContainer;var E=this.startOffset;var F=this.endOffset;var G=false;var H=false;if (D.nodeType==3) D=D.splitText(F);else{if (D.childNodes.length>0){if (F>D.childNodes.length-1){D=FCKDomTools.InsertAfterNode(D.lastChild,this._Document.createTextNode(''));H=true;}else D=D.childNodes[F];}};if (C.nodeType==3){C.splitText(E);if (C==D) D=C.nextSibling;}else{if (C.childNodes.length>0&&E<=C.childNodes.length-1){if (E==0){C=C.insertBefore(this._Document.createTextNode(''),C.firstChild);G=true;}else C=C.childNodes[E].previousSibling;}};var I=FCKDomTools.GetParents(C);var J=FCKDomTools.GetParents(D);var i,topStart,topEnd;for (i=0;i0&&levelStartNode!=D) levelClone=K.appendChild(levelStartNode.cloneNode(levelStartNode==D));if (!I[k]||levelStartNode.parentNode!=I[k].parentNode){currentNode=levelStartNode.previousSibling;while(currentNode){if (currentNode==I[k]||currentNode==C) break;currentSibling=currentNode.previousSibling;if (A==2) K.insertBefore(currentNode.cloneNode(true),K.firstChild);else{currentNode.parentNode.removeChild(currentNode);if (A==1) K.insertBefore(currentNode,K.firstChild);};currentNode=currentSibling;}};if (K) K=levelClone;};if (A==2){var L=this.startContainer;if (L.nodeType==3){L.data+=L.nextSibling.data;L.parentNode.removeChild(L.nextSibling);};var M=this.endContainer;if (M.nodeType==3&&M.nextSibling){M.data+=M.nextSibling.data;M.parentNode.removeChild(M.nextSibling);}}else{if (topStart&&topEnd&&(C.parentNode!=topStart.parentNode||D.parentNode!=topEnd.parentNode)) this.setStart(topEnd.parentNode,FCKDomTools.GetIndexOf(topEnd));this.collapse(true);};if(G) C.parentNode.removeChild(C);if(H&&D.parentNode) D.parentNode.removeChild(D);},cloneRange:function(){return FCKW3CRange.CreateFromRange(this._Document,this);},toString:function(){var A=this.cloneContents();var B=this._Document.createElement('div');A.AppendTo(B);return B.textContent||B.innerText;}}; -var FCKEnterKey=function(A,B,C){this.Window=A;this.EnterMode=B||'p';this.ShiftEnterMode=C||'br';var D=new FCKKeystrokeHandler(false);D._EnterKey=this;D.OnKeystroke=FCKEnterKey_OnKeystroke;D.SetKeystrokes([[13,'Enter'],[SHIFT+13,'ShiftEnter'],[8,'Backspace'],[46,'Delete']]);D.AttachToElement(A.document);};function FCKEnterKey_OnKeystroke(A,B){var C=this._EnterKey;try{switch (B){case 'Enter':return C.DoEnter();break;case 'ShiftEnter':return C.DoShiftEnter();break;case 'Backspace':return C.DoBackspace();break;case 'Delete':return C.DoDelete();}}catch (e){};return false;};FCKEnterKey.prototype.DoEnter=function(A,B){this._HasShift=(B===true);var C=A||this.EnterMode;if (C=='br') return this._ExecuteEnterBr();else return this._ExecuteEnterBlock(C);};FCKEnterKey.prototype.DoShiftEnter=function(){return this.DoEnter(this.ShiftEnterMode,true);};FCKEnterKey.prototype.DoBackspace=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (!B.CheckIsCollapsed()) return false;var C=B.StartBlock;var D=B.EndBlock;if (B.StartBlockLimit==B.EndBlockLimit&&C&&D){if (!B.CheckIsCollapsed()){var E=B.CheckEndOfBlock();B.DeleteContents();if (C!=D){B.SetStart(D,1);B.SetEnd(D,1);};B.Select();A=(C==D);};if (B.CheckStartOfBlock()){var F=B.StartBlock;var G=FCKDomTools.GetPreviousSourceElement(F,true,['BODY',B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,G,F);}else if (FCKBrowserInfo.IsGecko){B.Select();}};B.Release();return A;};FCKEnterKey.prototype._ExecuteBackspace=function(A,B,C){var D=false;if (!B&&C&&C.nodeName.IEquals('LI')&&C.parentNode.parentNode.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};if (B&&B.nodeName.IEquals('LI')){var E=FCKDomTools.GetLastChild(B,['UL','OL']);while (E){B=FCKDomTools.GetLastChild(E,'LI');E=FCKDomTools.GetLastChild(B,['UL','OL']);}};if (B&&C){if (C.nodeName.IEquals('LI')&&!B.nodeName.IEquals('LI')){this._OutdentWithSelection(C,A);return true;};var F=C.parentNode;var G=B.nodeName.toLowerCase();if (FCKListsLib.EmptyElements[G]!=null||G=='table'){FCKDomTools.RemoveNode(B);D=true;}else{FCKDomTools.RemoveNode(C);while (F.innerHTML.Trim().length==0){var H=F.parentNode;H.removeChild(F);F=H;};FCKDomTools.TrimNode(C);FCKDomTools.TrimNode(B);A.SetStart(B,2);A.Collapse(true);var I=A.CreateBookmark();FCKDomTools.MoveChildren(C,B);A.MoveToBookmark(I);A.Select();D=true;}};return D;};FCKEnterKey.prototype.DoDelete=function(){var A=false;var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.CheckIsCollapsed()&&B.CheckEndOfBlock(FCKBrowserInfo.IsGeckoLike)){var C=B.StartBlock;var D=FCKDomTools.GetNextSourceElement(C,true,[B.StartBlockLimit.nodeName],['UL','OL']);A=this._ExecuteBackspace(B,C,D);};B.Release();return A;};FCKEnterKey.prototype._ExecuteEnterBlock=function(A,B){var C=B||new FCKDomRange(this.Window);if (!B) C.MoveToSelection();if (C.StartBlockLimit==C.EndBlockLimit){if (!C.StartBlock) this._FixBlock(C,true,A);if (!C.EndBlock) this._FixBlock(C,false,A);var D=C.StartBlock;var E=C.EndBlock;if (!C.CheckIsEmpty()) C.DeleteContents();if (D==E){var F;var G=C.CheckStartOfBlock();var H=C.CheckEndOfBlock();if (G&&!H){F=D.cloneNode(false);if (FCKBrowserInfo.IsGeckoLike) F.innerHTML=GECKO_BOGUS;D.parentNode.insertBefore(F,D);if (FCKBrowserInfo.IsIE){C.MoveToNodeContents(F);C.Select();};C.MoveToElementEditStart(D);}else{if (H){var I=D.tagName.toUpperCase();if (G&&I=='LI'){this._OutdentWithSelection(D,C);C.Release();return true;}else{if ((/^H[1-6]$/).test(I)||this._HasShift) F=this.Window.document.createElement(A);else{F=D.cloneNode(false);this._RecreateEndingTree(D,F);};if (FCKBrowserInfo.IsGeckoLike){F.innerHTML=GECKO_BOGUS;if (G) D.innerHTML=GECKO_BOGUS;}}}else{C.SetEnd(D,2);var J=C.ExtractContents();F=D.cloneNode(false);FCKDomTools.TrimNode(J.RootNode);if (J.RootNode.firstChild.nodeType==1&&J.RootNode.firstChild.tagName.toUpperCase().Equals('UL','OL')) F.innerHTML=GECKO_BOGUS;J.AppendTo(F);if (FCKBrowserInfo.IsGecko){this._AppendBogusBr(D);this._AppendBogusBr(F);}};if (F){FCKDomTools.InsertAfterNode(D,F);C.MoveToElementEditStart(F);if (FCKBrowserInfo.IsGeckoLike) F.scrollIntoView(false);}}}else{C.MoveToElementEditStart(E);};C.Select();};C.Release();return true;};FCKEnterKey.prototype._ExecuteEnterBr=function(A){var B=new FCKDomRange(this.Window);B.MoveToSelection();if (B.StartBlockLimit==B.EndBlockLimit){B.DeleteContents();B.MoveToSelection();var C=B.CheckStartOfBlock();var D=B.CheckEndOfBlock();var E=B.StartBlock?B.StartBlock.tagName.toUpperCase():'';var F=this._HasShift;if (!F&&E=='LI') return this._ExecuteEnterBlock(null,B);if (!F&&D&&(/^H[1-6]$/).test(E)){FCKDebug.Output('BR - Header');FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createElement('br'));if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(B.StartBlock,this.Window.document.createTextNode(''));B.SetStart(B.StartBlock.nextSibling,FCKBrowserInfo.IsIE?3:1);}else{FCKDebug.Output('BR - No Header');var G=this.Window.document.createElement('br');B.InsertNode(G);if (FCKBrowserInfo.IsGecko) FCKDomTools.InsertAfterNode(G,this.Window.document.createTextNode(''));if (D&&FCKBrowserInfo.IsGeckoLike) this._AppendBogusBr(G.parentNode);if (FCKBrowserInfo.IsIE) B.SetStart(G,4);else B.SetStart(G.nextSibling,1);};B.Collapse(true);B.Select();};B.Release();return true;};FCKEnterKey.prototype._FixBlock=function(A,B,C){var D=A.CreateBookmark();A.Collapse(B);A.Expand('block_contents');var E=this.Window.document.createElement(C);A.ExtractContents().AppendTo(E);FCKDomTools.TrimNode(E);A.InsertNode(E);A.MoveToBookmark(D);};FCKEnterKey.prototype._AppendBogusBr=function(A){if (!A) return;var B=FCKTools.GetLastItem(A.getElementsByTagName('br'));if (!B||B.getAttribute('type',2)!='_moz') A.appendChild(FCKTools.CreateBogusBR(this.Window.document));};FCKEnterKey.prototype._RecreateEndingTree=function(A,B){while ((A=A.lastChild)&&A.nodeType==1&&FCKListsLib.InlineChildReqElements[A.nodeName.toLowerCase()]!=null) B=B.insertBefore(A.cloneNode(false),B.firstChild);};FCKEnterKey.prototype._OutdentWithSelection=function(A,B){var C=B.CreateBookmark();FCKListHandler.OutdentListItem(A);B.MoveToBookmark(C);B.Select();} -var FCKDocumentProcessor={};FCKDocumentProcessor._Items=[];FCKDocumentProcessor.AppendNew=function(){var A={};this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};if (FCKBrowserInfo.IsIE||FCKBrowserInfo.IsOpera){var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0){if (C.innerHTML!==''){if (FCKBrowserInfo.IsIE) C.className+=' FCK__AnchorC';}else{var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=C.attributes['type'];if ((C.src&&C.src.EndsWith('.swf',true))||(D&&D.nodeValue=='application/x-shockwave-flash')){var E=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var F=['scale','play','loop','menu','wmode','quality'];for (var G=0;G0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('width'));if (B.getAttribute('height')>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.getAttribute('height'));};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};if (FCKBrowserInfo.IsIE){FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('HR');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){var D=A.createElement('hr');D.mergeAttributes(C,true);FCKDomTools.InsertAfterNode(C,D);C.parentNode.removeChild(C);}}};FCKDocumentProcessor.AppendNew().ProcessDocument=function(A){var B=A.getElementsByTagName('INPUT');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.type=='hidden'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__InputHidden',C.cloneNode(true));D.setAttribute('_fckinputhidden','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}} -var FCKSelection=FCK.Selection={}; -FCKSelection.GetType=function(){return FCK.EditorDocument.selection.type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorDocument.selection.createRange();if (A&&A.item) return FCK.EditorDocument.selection.createRange().item(0);};return null;};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':return FCKSelection.GetSelectedElement().parentElement;case 'None':return null;default:return FCK.EditorDocument.selection.createRange().parentElement();}};FCKSelection.SelectNode=function(A){FCK.Focus();FCK.EditorDocument.selection.empty();var B;try{B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){B=FCK.EditorDocument.body.createTextRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=FCK.EditorDocument.selection.createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){B=this.GetSelectedElement();}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B,oRange;if (!FCK.EditorDocument) return null;if (FCK.EditorDocument.selection.type=="Control"){oRange=FCK.EditorDocument.selection.createRange();for (i=0;i=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode('TD');if (!B) return null;var C=FCK.EditorDocument.createElement('TD');if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length=0&&B.compareEndPoints('StartToEnd',D)<=0)||(B.compareEndPoints('EndToStart',D)>=0&&B.compareEndPoints('EndToEnd',D)<=0)){A[A.length]=C.cells[i];}}}};return A;}; -var FCKXml=function(){this.Error=false;};FCKXml.prototype.LoadUrl=function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.DOMDocument=null;};if (this.DOMDocument==null||this.DOMDocument.firstChild==null){this.Error=true;if (window.confirm('Error loading "'+A+'"\r\nDo you want to see more info?')) alert('URL requested: "'+A+'"\r\nServer response:\r\nStatus: '+B.status+'\r\nResponse text:\r\n'+B.responseText);}};FCKXml.prototype.SelectNodes=function(A,B){if (this.Error) return [];if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);};FCKXml.prototype.SelectSingleNode=function(A,B){if (this.Error) return null;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);} -var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes={};};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());} -FCKStyleDef.prototype.ApplyToSelection=function(){var A=FCK.ToolbarSet.CurrentInstance.EditorDocument.selection;if (A.type=='Text'){var B=A.createRange();var e=document.createElement(this.Element);e.innerHTML=B.htmlText;this._AddAttributes(e);this._RemoveDuplicates(e);B.pasteHTML(e.outerHTML);}else if (A.type=='Control'){var C=FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);}};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':A.style.cssText=this.Attributes[a];break;case 'class':A.setAttribute('className',this.Attributes[a],0);break;case 'src':A.setAttribute('_fcksavedurl',this.Attributes[a],0);default:A.setAttribute(a,this.Attributes[a],0);}}};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return 0;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.GetParentForm();if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};if (typeof(A.submit)=='function') A.submit();else A.submit.click();};FCKSaveCommand.prototype.GetState=function(){return 0;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return 0;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==0?0:1);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?0:-1);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?0:-1);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML=' ';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCKTools.RemoveOuterTags(A);return;};FCK.ExecuteNamedCommand(this.Name);};FCKUnlinkCommand.prototype.GetState=function(){var A=FCK.GetNamedCommandState(this.Name);if (A==0&&FCK.EditMode==0){var B=FCKSelection.MoveToAncestorNode('A');var C=(B&&B.name.length>0&&B.href.length==0);if (C) A=-1;};return A;};var FCKSelectAllCommand=function(){this.Name='SelectAll';};FCKSelectAllCommand.prototype.Execute=function(){if (FCK.EditMode==0){FCK.ExecuteNamedCommand('SelectAll');}else{var A=FCK.EditingArea.Textarea;if (FCKBrowserInfo.IsIE){A.createTextRange().execCommand('SelectAll');}else{A.selectionStart=0;A.selectionEnd=A.value.length;};A.focus();}};FCKSelectAllCommand.prototype.GetState=function(){return 0;};var FCKPasteCommand=function(){this.Name='Paste';};FCKPasteCommand.prototype={Execute:function(){if (FCKBrowserInfo.IsIE) FCK.Paste();else FCK.ExecuteNamedCommand('Paste');},GetState:function(){return FCK.GetNamedCommandState('Paste');}}; -var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?0:-1;} -var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return 0;};function FCKTextColorCommand_OnMouseOver() { this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut() { this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='\n \n \n \n \n
    '+FCKLang.ColorAutomatic+'
    ';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H
    ';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='
    '+FCKLang.ColorMoreColors+'
    ';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;} -var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');}; -var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return -1;else return FCK.GetNamedCommandState('Paste');}; -var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return 0;} -var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return -1;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?0:-1;};return 0;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=[];if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i';B.open();B.write(''+E+'<\/head><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){var D;if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';D=this.MainNode.offsetWidth;if (!B) this._IFrame.width=1;if (!C) this._IFrame.height=1;D=this.MainNode.offsetWidth;var E=FCKTools.GetElementPosition(A.nodeType==9?(FCKTools.IsStrictMode(A)?A.documentElement:A.body):A,this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=E.X;y+=E.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var F=FCKTools.GetViewPaneSize(this._Window);var G=FCKTools.GetScrollPosition(this._Window);var H=F.Height+G.Y;var I=F.Width+G.X;if ((x+D)>I) x-=x+D-I;if ((y+this.MainNode.offsetHeight)>H) y-=y+this.MainNode.offsetHeight-H;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var J=D;var K=this.MainNode.offsetHeight;this._IFrame.width=J;this._IFrame.height=K;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;if (typeof(FCKFocusManager)!='undefined') FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetDocumentWindow(this.Document):this._Window;var B=new FCKPanel(A);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};function FCKPanel_Window_OnFocus(e,A){A.HasFocus=true;};function FCKPanel_Window_OnBlur(e,A){A.HasFocus=false;if (A._LockCounter==0) FCKTools.RunFunction(A.Hide,A);};function CheckPopupOnHide(A){if (A||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;} -var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B,eIconImage;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path;eIconImage.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');eIconImage=B.appendChild(A.createElement('IMG'));eIconImage.src=this.Path?this.Path:FCK_SPACER_PATH;}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;}};B.className='TB_Button_Image';return B;} -var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||0;this.State=F||0;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==0&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==0||this.Style==2) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==1||this.Style==2){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=0){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A,10)){case 0:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case 1:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case -1:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);}; -var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(-1);} -var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label=' ';this.Caption=A;this.Tooltip=A;this.Style=2;this.Enabled=true;this.Items={};this._Panel=new FCKPanel(E||window);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='
    ';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?' ':A;if (this._LabelEl){this._LabelEl.innerHTML=this.Label;FCKTools.DisableSelection(this._LabelEl);}};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case 0:D='TB_ButtonType_Icon';E=false;break;case 1:D='TB_ButtonType_Text';E=false;break;case 2:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='
     
    ';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='
    '+this.Caption+'
    ';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var A in this.Items) this.Items[A]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case 0:this.className='TB_Button_On_Over';break;case 1:this.className='TB_Button_On_Over';break;case 2:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case 0:this.className='TB_Button_Off';break;case 1:this.className='TB_Button_Off';break;case 2:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var A=this.SpecialCombo;if (A.Enabled){var B=A._Panel;var C=A._PanelBox;var D=A._ItemsHolderEl;var E=A.PanelMaxHeight;if (A.OnBeforeClick) A.OnBeforeClick(A);if (FCKBrowserInfo.IsIE) B.Preload(0,this.offsetHeight,this);if (D.offsetHeight>E) C.style.height=E+'px';else C.style.height='';B.Show(0,this.offsetHeight,this);}}; -var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;this._LastValue=null;};function FCKToolbarSpecialCombo_OnSelect(A,B){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(A,B);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(A,B){A.DeselectAll();A.SelectItem(B);A.SetLabelById(B);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=-1){A=1;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=-1;if (A==this.State) return;if (A==-1){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=-1);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=-1;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}; -var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i'+B[i]+'');} -var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i'+C[1]+'',C[1]);}} -var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);if (FCKConfig.BodyId&&FCKConfig.BodyId.length>0) B.body.id=FCKConfig.BodyId;if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) B.body.className+=' '+FCKConfig.BodyClass;var C=FCKLang['FontFormats'].split(';');var D={p:C[0],pre:C[1],address:C[2],h1:C[3],h2:C[4],h3:C[5],h4:C[6],h5:C[7],h6:C[8],div:C[9]};var E=FCKConfig.FontFormats.split(';');for (var i=0;i<'+F+'>'+G+'',G);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!=' ') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}} -var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:2;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;FCKTools.AppendStyleSheet(B,FCKConfig.ToolbarComboPreviewCSS);B.body.className+=' ForceBaseFont';if (FCKConfig.BodyId&&FCKConfig.BodyId.length>0) B.body.id=FCKConfig.BodyId;if (FCKConfig.BodyClass&&FCKConfig.BodyClass.length>0) B.body.className+=' '+FCKConfig.BodyClass;if (!(FCKBrowserInfo.IsGecko&&FCKBrowserInfo.IsGecko10)) A.OnBeforeClick=this.RefreshVisibleItems;var C=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in C){var D=C[s];var E;if (D.IsObjectElement) E=A.AddItem(s,s);else E=A.AddItem(s,D.GetOpenerTag()+s+D.GetCloserTag());E.Style=D;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i'+document.getElementById('xToolbarSpace').innerHTML+'');G.close();G.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(G,FCKConfig.SkinPath+'fck_editor.css');B=D.__FCKToolbarSet=new FCKToolbarSet(G);B._IFrame=F;if (FCK.IECleanup) FCK.IECleanup.AddItem(D,FCKToolbarSet_Target_Cleanup);};B.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(B.RefreshItemsState);return B;};function FCK_OnBlur(A){var B=A.ToolbarSet;if (B.CurrentInstance==A) B.Disable();};function FCK_OnFocus(A){var B=A.ToolbarSet;var C=A||FCK;B.CurrentInstance.FocusManager.RemoveWindow(B._IFrame.contentWindow);B.CurrentInstance=C;C.FocusManager.AddWindow(B._IFrame.contentWindow,true);B.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=[];this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=[];this.ItemsWysiwygOnly=[];this.ItemsContextSensitive=[];this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=[];for (var x=0;x0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i0&&F.href.length==0);if (G) return;menu.AddSeparator();if (E) menu.AddItem('Link',FCKLang.EditLink,34);menu.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&!tag.getAttribute('_fckfakelement')){menu.AddSeparator();menu.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(menu,tag,tagName){var F=FCKSelection.MoveToAncestorNode('A');var G=(F&&F.name.length>0);if (G||(tagName=='IMG'&&tag.getAttribute('_fckanchor'))){menu.AddSeparator();menu.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckflash')){menu.AddSeparator();menu.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('FORM')){menu.AddSeparator();menu.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='checkbox'){menu.AddSeparator();menu.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='radio'){menu.AddSeparator();menu.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='text'||tag.type=='password')){menu.AddSeparator();menu.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(menu,tag,tagName){if (tagName=='IMG'&&tag.getAttribute('_fckinputhidden')){menu.AddSeparator();menu.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&tag.type=='image'){menu.AddSeparator();menu.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(menu,tag,tagName){if (tagName=='INPUT'&&(tag.type=='button'||tag.type=='submit'||tag.type=='reset')){menu.AddSeparator();menu.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(menu,tag,tagName){if (tagName=='SELECT'){menu.AddSeparator();menu.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(menu,tag,tagName){if (tagName=='TEXTAREA'){menu.AddSeparator();menu.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('UL')){menu.AddSeparator();menu.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(menu,tag,tagName){if (FCKSelection.HasAncestorNode('OL')){menu.AddSeparator();menu.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};};return null;};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent('OnSelectionChange');var A,sTagName;if ((A=FCKSelection.GetSelectedElement())) sTagName=A.tagName;var B=FCK.ContextMenu._InnerContextMenu;B.RemoveAllItems();var C=FCK.ContextMenu.Listeners;for (var i=0;i0){var A;if (this.AvailableLangs.IndexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');} -var FCKPlugins=FCK.Plugins={};FCKPlugins.ItemsCount=0;FCKPlugins.Items={};FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i - - - - - - - - - - - -
    -

    FontFormats Localization

    -

    - IE has some limits when handling the "Font Format". It actually uses localized - strings to retrieve the current format value. This makes it very difficult to - make a system that works on every single computer in the world. -

    -

    - With FCKeditor, this problem impacts in the "Format" toolbar command that - doesn't reflects the format of the current cursor position. -

    -

    - There is only one way to make it work. We must localize FCKeditor using the - strings used by IE. In this way, we will have the expected behavior at least - when using FCKeditor in the same language as the browser. So, when localizing - FCKeditor, go to a computer with IE in the target language, open this page and - use the following string to the "FontFormats" value: -

    -
    - FontFormats : "", -
    -
    -
    -

     

    -
     
    -
     
    -

     

    -

     

    -

     

    -

     

    -
     
    -
     
    -
    - - diff --git a/static/fckeditor/editor/lang/_translationstatus.txt b/static/fckeditor/editor/lang/_translationstatus.txt deleted file mode 100644 index a53ea8f..0000000 --- a/static/fckeditor/editor/lang/_translationstatus.txt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Translations Status. - */ - -af.js Found: 401 Missing: 1 -ar.js Found: 401 Missing: 1 -bg.js Found: 378 Missing: 24 -bn.js Found: 386 Missing: 16 -bs.js Found: 230 Missing: 172 -ca.js Found: 402 Missing: 0 -cs.js Found: 400 Missing: 2 -da.js Found: 386 Missing: 16 -de.js Found: 401 Missing: 1 -el.js Found: 401 Missing: 1 -en-au.js Found: 402 Missing: 0 -en-ca.js Found: 402 Missing: 0 -en-uk.js Found: 402 Missing: 0 -eo.js Found: 350 Missing: 52 -es.js Found: 386 Missing: 16 -et.js Found: 402 Missing: 0 -eu.js Found: 386 Missing: 16 -fa.js Found: 402 Missing: 0 -fi.js Found: 402 Missing: 0 -fo.js Found: 401 Missing: 1 -fr.js Found: 401 Missing: 1 -gl.js Found: 386 Missing: 16 -he.js Found: 402 Missing: 0 -hi.js Found: 401 Missing: 1 -hr.js Found: 401 Missing: 1 -hu.js Found: 401 Missing: 1 -it.js Found: 401 Missing: 1 -ja.js Found: 401 Missing: 1 -km.js Found: 376 Missing: 26 -ko.js Found: 373 Missing: 29 -lt.js Found: 381 Missing: 21 -lv.js Found: 386 Missing: 16 -mn.js Found: 230 Missing: 172 -ms.js Found: 356 Missing: 46 -nb.js Found: 400 Missing: 2 -nl.js Found: 401 Missing: 1 -no.js Found: 400 Missing: 2 -pl.js Found: 386 Missing: 16 -pt-br.js Found: 401 Missing: 1 -pt.js Found: 386 Missing: 16 -ro.js Found: 400 Missing: 2 -ru.js Found: 401 Missing: 1 -sk.js Found: 401 Missing: 1 -sl.js Found: 378 Missing: 24 -sr-latn.js Found: 373 Missing: 29 -sr.js Found: 373 Missing: 29 -sv.js Found: 401 Missing: 1 -th.js Found: 398 Missing: 4 -tr.js Found: 401 Missing: 1 -uk.js Found: 402 Missing: 0 -vi.js Found: 401 Missing: 1 -zh-cn.js Found: 401 Missing: 1 -zh.js Found: 401 Missing: 1 diff --git a/static/fckeditor/editor/skins/default/fck_dialog.css b/static/fckeditor/editor/skins/default/fck_dialog.css deleted file mode 100644 index 9725f6c..0000000 --- a/static/fckeditor/editor/skins/default/fck_dialog.css +++ /dev/null @@ -1,137 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Styles used by the dialog boxes. - */ - -body -{ - margin: 0px; - padding: 10px; -} - -body, td, input, select, textarea -{ - font-size: 11px; - font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; -} - -body, .BackColor -{ - background-color: #f1f1e3; -} - -.PopupBody -{ - margin: 0px; - padding: 0px; -} - -.PopupTitle -{ - font-weight: bold; - font-size: 14pt; - color: #737357; - background-color: #e3e3c7; - padding: 3px 10px 3px 10px; -} - -.PopupButtons -{ - border-top: #d5d59d 1px solid; - background-color: #e3e3c7; - padding: 7px 10px 7px 10px; -} - -.Button -{ - border: #737357 1px solid; - color: #3b3b1f; - background-color: #c7c78f; -} - -#btnOk -{ - width: 100px; -} - -.DarkBackground -{ - background-color: #d7d79f; -} - -.LightBackground -{ - background-color: #ffffbe; -} - -.PopupTitleBorder -{ - border-bottom: #d5d59d 1px solid; -} - -.PopupTabArea -{ - color: #737357; - background-color: #e3e3c7; -} - -.PopupTabEmptyArea -{ - padding-left: 10px ; - border-bottom: #d5d59d 1px solid; -} - -.PopupTab, .PopupTabSelected -{ - border-right: #d5d59d 1px solid; - border-top: #d5d59d 1px solid; - border-left: #d5d59d 1px solid; - padding-right: 5px; - padding-left: 5px; - padding-bottom: 3px; - padding-top: 3px; - color: #737357; -} - -.PopupTab -{ - margin-top: 1px; - border-bottom: #d5d59d 1px solid; - cursor: pointer; - cursor: hand; -} - -.PopupTabSelected -{ - font-weight:bold; - cursor: default; - padding-top: 4px; - border-bottom: #f1f1e3 1px solid; - background-color: #f1f1e3; -} - -.PopupSelectionBox -{ - border: #ff9933 1px solid !important; - background-color: #fffacd !important; - cursor: pointer; - cursor: hand; -} \ No newline at end of file diff --git a/static/fckeditor/editor/skins/default/fck_strip.gif b/static/fckeditor/editor/skins/default/fck_strip.gif deleted file mode 100644 index d5ba74e..0000000 Binary files a/static/fckeditor/editor/skins/default/fck_strip.gif and /dev/null differ diff --git a/static/fckeditor/editor/skins/office2003/fck_dialog.css b/static/fckeditor/editor/skins/office2003/fck_dialog.css deleted file mode 100644 index 54a958b..0000000 --- a/static/fckeditor/editor/skins/office2003/fck_dialog.css +++ /dev/null @@ -1,138 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Styles used by the dialog boxes. - */ - -body -{ - margin: 0px; - padding: 10px; - background-color: #f7f8fd; -} - -body, td, input, select, textarea -{ - font-size: 11px; - font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; -} - -body, .BackColor -{ - background-color: #f7f8fd; -} - -.PopupBody -{ - margin: 0px; - padding: 0px; -} - -.PopupTitle -{ - font-weight: bold; - font-size: 14pt; - color: #0e3460; - background-color: #8cb2fd; - padding: 3px 10px 3px 10px; -} - -.PopupButtons -{ - border-top: #466ca6 1px solid; - background-color: #8cb2fd; - padding: 7px 10px 7px 10px; -} - -.Button -{ - border: #1c3460 1px solid; - color: #000a28; - background-color: #7096d3; -} - -#btnOk -{ - width: 100px; -} - -.DarkBackground -{ - background-color: #d7d79f; -} - -.LightBackground -{ - background-color: #ffffbe; -} - -.PopupTitleBorder -{ - border-bottom: #d5d59d 1px solid; -} - -.PopupTabArea -{ - color: #0e3460; - background-color: #8cb2fd; -} - -.PopupTabEmptyArea -{ - padding-left: 10px ; - border-bottom: #466ca6 1px solid; -} - -.PopupTab, .PopupTabSelected -{ - border-right: #466ca6 1px solid; - border-top: #466ca6 1px solid; - border-left: #466ca6 1px solid; - padding-right: 5px; - padding-left: 5px; - padding-bottom: 3px; - padding-top: 3px; - color: #0e3460; -} - -.PopupTab -{ - margin-top: 1px; - border-bottom: #466ca6 1px solid; - cursor: pointer; - cursor: hand; -} - -.PopupTabSelected -{ - font-weight:bold; - cursor: default; - padding-top: 4px; - border-bottom: #f7f8fd 1px solid; - background-color: #f7f8fd; -} - -.PopupSelectionBox -{ - border: #1e90ff 1px solid !important; - background-color: #add8e6 !important; - cursor: pointer; - cursor: hand; -} \ No newline at end of file diff --git a/static/fckeditor/editor/skins/office2003/fck_strip.gif b/static/fckeditor/editor/skins/office2003/fck_strip.gif deleted file mode 100644 index a7282f2..0000000 Binary files a/static/fckeditor/editor/skins/office2003/fck_strip.gif and /dev/null differ diff --git a/static/fckeditor/editor/skins/silver/fck_dialog.css b/static/fckeditor/editor/skins/silver/fck_dialog.css deleted file mode 100644 index e05c173..0000000 --- a/static/fckeditor/editor/skins/silver/fck_dialog.css +++ /dev/null @@ -1,141 +0,0 @@ -/* - * FCKeditor - The text editor for Internet - http://www.fckeditor.net - * Copyright (C) 2003-2007 Frederico Caldeira Knabben - * - * == BEGIN LICENSE == - * - * Licensed under the terms of any of the following licenses at your - * choice: - * - * - GNU General Public License Version 2 or later (the "GPL") - * http://www.gnu.org/licenses/gpl.html - * - * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") - * http://www.gnu.org/licenses/lgpl.html - * - * - Mozilla Public License Version 1.1 or later (the "MPL") - * http://www.mozilla.org/MPL/MPL-1.1.html - * - * == END LICENSE == - * - * Styles used by the dialog boxes. - */ - -body -{ - margin: 0px; - padding: 10px; - background-color: #f7f7f7; -} - -body, td, input, select, textarea -{ - font-size: 11px; - font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; -} - -body, .BackColor -{ - background-color: #f7f7f7; -} - -.PopupBody -{ - margin: 0px; - padding: 0px; -} - -.PopupTitle -{ - padding-right: 10px; - padding-left: 10px; - font-weight: bold; - font-size: 14pt; - padding-bottom: 3px; - color: #504845; - padding-top: 3px; - background-color: #dedede; -} - -.PopupButtons -{ - border-top: #cec6b5 1px solid; - background-color: #DEDEDE; - padding: 7px 10px 7px 10px; -} - -.Button -{ - border: #7a7261 1px solid; - color: #504845; - background-color: #cec6b5; -} - -#btnOk -{ - width: 100px; -} - -.DarkBackground -{ - background-color: #d7d79f; -} - -.LightBackground -{ - background-color: #ffffbe; -} - -.PopupTitleBorder -{ - border-bottom: #cec6b5 1px solid; -} - -.PopupTabArea -{ - color: #504845; - background-color: #DEDEDE; -} - -.PopupTabEmptyArea -{ - padding-left: 10px ; - border-bottom: #cec6b5 1px solid; -} - -.PopupTab, .PopupTabSelected -{ - border-right: #cec6b5 1px solid; - border-top: #cec6b5 1px solid; - border-left: #cec6b5 1px solid; - padding-right: 5px; - padding-left: 5px; - padding-bottom: 3px; - padding-top: 3px; - color: #504845; -} - -.PopupTab -{ - margin-top: 1px; - border-bottom: #cec6b5 1px solid; - cursor: pointer; - cursor: hand; -} - -.PopupTabSelected -{ - font-weight:bold; - cursor: default; - padding-top: 4px; - border-bottom: #f1f1e3 1px solid; - background-color: #f7f7f7; -} - -.PopupSelectionBox -{ - border: #a9a9a9 1px solid !important; - background-color: #dcdcdc !important; - cursor: pointer; - cursor: hand; -} \ No newline at end of file diff --git a/static/fckeditor/editor/skins/silver/fck_strip.gif b/static/fckeditor/editor/skins/silver/fck_strip.gif deleted file mode 100644 index d5ba74e..0000000 Binary files a/static/fckeditor/editor/skins/silver/fck_strip.gif and /dev/null differ diff --git a/static/fckeditor/fckstyles.xml b/static/fckeditor/fckstyles.xml deleted file mode 100644 index bfd80e7..0000000 --- a/static/fckeditor/fckstyles.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/static/fckeditor/htaccess.txt b/static/fckeditor/htaccess.txt deleted file mode 100644 index 7638d4f..0000000 --- a/static/fckeditor/htaccess.txt +++ /dev/null @@ -1,44 +0,0 @@ -# -# FCKeditor - The text editor for Internet - http://www.fckeditor.net -# Copyright (C) 2003-2007 Frederico Caldeira Knabben -# -# == BEGIN LICENSE == -# -# Licensed under the terms of any of the following licenses at your -# choice: -# -# - GNU General Public License Version 2 or later (the "GPL") -# http://www.gnu.org/licenses/gpl.html -# -# - GNU Lesser General Public License Version 2.1 or later (the "LGPL") -# http://www.gnu.org/licenses/lgpl.html -# -# - Mozilla Public License Version 1.1 or later (the "MPL") -# http://www.mozilla.org/MPL/MPL-1.1.html -# -# == END LICENSE == -# -# ----------------------------------------------------------------------------- -# -# On some specific Linux installations you could face problems with Firefox. -# It could give you errors when loading the editor saying that some illegal -# characters were found (three strange chars in the beginning of the file). -# This could happen if you map the .js or .css files to PHP, for example. -# -# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. -# All FCKeditor files are Unicode encoded. -# -# Just rename this file to ".htaccess" and leave it in the editor directory. -# There are no security issues on doing it. It just sets the ".js" and ".css" -# files to their correct content types. -# - -AddType application/x-javascript .js -AddType text/css .css - -# -# If PHP is mapped to handle XML files, you could have some issues. The -# following will disable it. -# - -AddType text/xml .xml diff --git a/templates/home.tpl b/templates/home.tpl new file mode 100644 index 0000000..3107707 --- /dev/null +++ b/templates/home.tpl @@ -0,0 +1 @@ +Seems like PHP with PICKLES is all set up but you haven't set up your site level files correctly.