From 58c7b6cfe0f5e761726ff6dbbca81104b1953bd8 Mon Sep 17 00:00:00 2001 From: Genbu Hase Date: Fri, 1 Dec 2017 22:03:15 +0900 Subject: [PATCH 1/2] =?UTF-8?q?v3=5FRC1=E3=82=92=E5=88=9D=E6=9C=9F?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 674 ------------------------------------------------------ README.md | 20 -- 2 files changed, 694 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 9cecc1d..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - 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. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - 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: - - {project} Copyright (C) {year} {fullname} - 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/README.md b/README.md deleted file mode 100644 index 32ee446..0000000 --- a/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Simple Thread - -## 1. Simple Thread とは? -> "Be Simple, Be Free" をモットーに掲げる、SNSサービス及びフレームワークの総称です。 -> -> 詳しい動作につきましては[こちら](https://genbuproject.github.io/SimpleThread/)をご覧下さい。 - -## 2. Simple Thread の歴史 -> | Date | Detail | -> | ---------- | ---------- | -> | 2017/01/01 | `v1`の構想を開始 | -> | 2017/08/24 | `v2`の構想を開始 | -> | 2017/08/30 | `v2`リリース | -> | 2017/09/05 | `v3`の構想を開始 | -> | 2017/12/01 | `v3_RC1`リリース | - -## 3. 詳細情報 -> * 最新バージョン -> * Stable ... `v2` -> * Latest ... `v3_RC1` \ No newline at end of file From 03b4427f12d7e3c8fda0100fcb1665dc1a14f209 Mon Sep 17 00:00:00 2001 From: Genbu Hase Date: Fri, 1 Dec 2017 22:05:09 +0900 Subject: [PATCH 2/2] =?UTF-8?q?v3=5FRC1=E3=82=92=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 30 ++ Dialog.css | 71 +++ Dialog.js | 276 +++++++++++ Error/401/index.html | 31 ++ Error/403.10/index.html | 30 ++ Error/406/index.html | 31 ++ Error/Back.jpg | Bin 0 -> 4173 bytes Error/Main.css | 26 + Error/Main.js | 3 + Error/favicon.ico | Bin 0 -> 20316 bytes Main.css | 7 + Main.js | 109 ++++ Profile/Profile.css | 39 ++ Profile/Profile.js | 104 ++++ Profile/index.html | 67 +++ ServerInfo/ServerInfo.css | 9 + ServerInfo/ServerInfo.js | 17 + ServerInfo/index.html | 80 +++ Terminal.js | 28 ++ Thread/Thread.css | 21 + Thread/Thread.js | 56 +++ Thread/Viewer/Auth/Auth.css | 0 Thread/Viewer/Auth/Auth.js | 15 + Thread/Viewer/Auth/index.html | 34 ++ Thread/Viewer/Viewer.css | 76 +++ Thread/Viewer/Viewer.js | 96 ++++ Thread/Viewer/index.html | 70 +++ Thread/index.html | 79 +++ Top/Top.css | 5 + Top/Top.js | 0 Top/index.html | 51 ++ assets/classes/DBLoader.js | 35 ++ assets/classes/Encrypter.js | 17 + assets/classes/FileLoader.js | 28 ++ assets/classes/JSONLoader.js | 16 + assets/classes/LangLoader.js | 53 ++ assets/firebase.json | 8 + assets/images/Back.jpg | Bin 0 -> 4173 bytes assets/images/Logo.png | Bin 0 -> 48296 bytes assets/images/favicon0001.png | Bin 0 -> 146955 bytes assets/images/favicon0002.png | Bin 0 -> 6150 bytes assets/includes/Component.html | 70 +++ assets/includes/Component.js | 139 ++++++ assets/includes/Core.css | 39 ++ assets/includes/Core.js | 46 ++ assets/includes/dialog-polyfill.css | 37 ++ assets/includes/dialog-polyfill.js | 738 ++++++++++++++++++++++++++++ assets/locales/en_US.json | 60 +++ assets/locales/ja_JP.json | 60 +++ favicon.ico | Bin 0 -> 46959 bytes index.html | 271 ++++++++++ 51 files changed, 3078 insertions(+) create mode 100644 404.html create mode 100644 Dialog.css create mode 100644 Dialog.js create mode 100644 Error/401/index.html create mode 100644 Error/403.10/index.html create mode 100644 Error/406/index.html create mode 100644 Error/Back.jpg create mode 100644 Error/Main.css create mode 100644 Error/Main.js create mode 100644 Error/favicon.ico create mode 100644 Main.css create mode 100644 Main.js create mode 100644 Profile/Profile.css create mode 100644 Profile/Profile.js create mode 100644 Profile/index.html create mode 100644 ServerInfo/ServerInfo.css create mode 100644 ServerInfo/ServerInfo.js create mode 100644 ServerInfo/index.html create mode 100644 Terminal.js create mode 100644 Thread/Thread.css create mode 100644 Thread/Thread.js create mode 100644 Thread/Viewer/Auth/Auth.css create mode 100644 Thread/Viewer/Auth/Auth.js create mode 100644 Thread/Viewer/Auth/index.html create mode 100644 Thread/Viewer/Viewer.css create mode 100644 Thread/Viewer/Viewer.js create mode 100644 Thread/Viewer/index.html create mode 100644 Thread/index.html create mode 100644 Top/Top.css create mode 100644 Top/Top.js create mode 100644 Top/index.html create mode 100644 assets/classes/DBLoader.js create mode 100644 assets/classes/Encrypter.js create mode 100644 assets/classes/FileLoader.js create mode 100644 assets/classes/JSONLoader.js create mode 100644 assets/classes/LangLoader.js create mode 100644 assets/firebase.json create mode 100644 assets/images/Back.jpg create mode 100644 assets/images/Logo.png create mode 100644 assets/images/favicon0001.png create mode 100644 assets/images/favicon0002.png create mode 100644 assets/includes/Component.html create mode 100644 assets/includes/Component.js create mode 100644 assets/includes/Core.css create mode 100644 assets/includes/Core.js create mode 100644 assets/includes/dialog-polyfill.css create mode 100644 assets/includes/dialog-polyfill.js create mode 100644 assets/locales/en_US.json create mode 100644 assets/locales/ja_JP.json create mode 100644 favicon.ico create mode 100644 index.html diff --git a/404.html b/404.html new file mode 100644 index 0000000..7f85db5 --- /dev/null +++ b/404.html @@ -0,0 +1,30 @@ + + + + + + + + + 404 Not Found + + + + + + + + +
+ 404 Not Found +
+ +
+

+ お探しのページが見つかりませんでした。 +

+ + 5秒後にメインページへ移動します… +
+ + \ No newline at end of file diff --git a/Dialog.css b/Dialog.css new file mode 100644 index 0000000..34cd854 --- /dev/null +++ b/Dialog.css @@ -0,0 +1,71 @@ +Dialog[ID^="Dialogs"] { + Width: 65%; +} + +Dialog[ID^="Dialogs"] Div.mdl-textfield { + Width: 100%; +} + +*.mdl-switch__child-hide { + Display: None; +} + + + +#Dialogs_Profile_InfoViewer_Content { + Display: Flex; + Flex-Direction: Row; + Align-Items: Flex-Start; + + Font-Size: Medium; +} + +#Dialogs_Profile_InfoViewer_Content_Photo { + Width: 20%; + + Margin-Right: 5%; + Border-Radius: 100%; +} + +#Dialogs_Profile_InfoViewer_Content_Photo::Before { + Content: ""; + + Display: Block; + Padding-Top: 100%; +} + +#Dialogs_Profile_InfoViewer_Content_Info { + Flex: 1; +} + +#Dialogs_Profile_InfoViewer_Content_Info_Detail { + Padding: 1em 0 4em 0; + + White-Space: Pre-Wrap; +} + +#Dialogs_Profile_InfoViewer_Content_Info_Links { + Padding: 1em 0 0; +} + +Img[Data-Component="Dialogs_Profile_InfoViewer_Content_Info_Links_Link_Icon"] { + Width: 1em; +} + + + +#Dialogs_Thread_InfoViewer_Content_Overview { + Padding: 1em 0 4em 0; +} + +#Dialogs_Thread_InfoViewer_Content_Detail { + Padding: 1em 0 0; + + White-Space: Pre-Wrap; +} + + + +#Dialogs_Thread_Poster_Content_Text-Input { + Resize: None; +} \ No newline at end of file diff --git a/Dialog.js b/Dialog.js new file mode 100644 index 0000000..b36215c --- /dev/null +++ b/Dialog.js @@ -0,0 +1,276 @@ +window.addEventListener("DOMContentLoaded", () => { + let watchers = {}; + + new DOM('@Dialog').forEach((dialog) => { + dialogPolyfill.registerDialog(dialog); + + if (dialog.querySelector('Button[Data-Action="Dialog_Submit"]')) { + dialog.addEventListener("keydown", (event) => { + if (event.ctrlKey && event.keyCode == 13) dialog.querySelector('Button[Data-Action="Dialog_Submit"]').click(); + }); + } + + dialog.querySelectorAll('Dialog *[Required]').forEach((input) => { + input.addEventListener("input", () => { + let result = true; + + dialog.querySelectorAll('Dialog *[Required]').forEach(requiredField => { + if (requiredField.value.replace(/\s/g, "").length == 0) { + result = false; + return; + } + }); + + if (result) { + dialog.querySelector('Button[Data-Action="Dialog_Submit"]').classList.remove("mdl-button--disabled"); + } else { + dialog.querySelector('Button[Data-Action="Dialog_Submit"]').classList.add("mdl-button--disabled"); + } + }); + }); + + dialog.querySelectorAll('Dialog Button[Data-Action="Dialog_Close"]').forEach((btn) => { + btn.addEventListener("click", () => { + btn.offsetParent.close(); + }); + }); + }); + + + + new DOM("#Dialogs_Profile_DeleteConfirmer_Content_Email-Input").addEventListener("input", () => { + if (new DOM("#Dialogs_Profile_DeleteConfirmer_Content_Email-Input").value == base.user.email) { + new DOM("#Dialogs_Profile_DeleteConfirmer_Btns_Yes").classList.remove("mdl-button--disabled"); + } else { + new DOM("#Dialogs_Profile_DeleteConfirmer_Btns_Yes").classList.add("mdl-button--disabled"); + } + }); + + new DOM("#Dialogs_Profile_DeleteConfirmer_Btns_Yes").addEventListener("click", (event) => { + if (!event.currentTarget.classList.contains("mdl-button--disabled")) { + if (new DOM("#Dialogs_Profile_DeleteConfirmer_Content_Email-Input").value == base.user.email) { + base.delete(); + } else { + new DOM("#Dialogs_Profile_DeleteConfirmer_Content_Email").classList.add("is-invalid"); + } + } + }); + + + + watchers["Dialogs_Profile_InfoViewer_UID"] = { + valueObj: { value: "" }, + watcher: null + }; watchers["Dialogs_Profile_InfoViewer_UID"].watcher = new DOM.Watcher({ + target: watchers["Dialogs_Profile_InfoViewer_UID"].valueObj, + onGet: () => { watchers["Dialogs_Profile_InfoViewer_UID"].valueObj.value = new DOM("#Dialogs_Profile_InfoViewer_UID").value }, + + onChange: (watcher) => { + base.Database.get(base.Database.ONCE, `users/${watcher.newValue}`, (res) => { + new DOM("#Dialogs_Profile_InfoViewer_Content_Photo").dataset.uid = watcher.newValue, + new DOM("#Dialogs_Profile_InfoViewer_Content_Info_Name").textContent = res.userName, + new DOM("#Dialogs_Profile_InfoViewer_Content_Info_Detail").textContent = res.detail; + + while (new DOM("#Dialogs_Profile_InfoViewer_Content_Info_Links").childNodes.length > 0) new DOM("#Dialogs_Profile_InfoViewer_Content_Info_Links").childNodes[0].remove(); + + if (res.links) { + for (let i = 0; i < res.links.length; i++) { + let link = new Component.Dialogs.Profile.InfoViewer.Links.Link(res.links[i].name, res.links[i].url); + + new DOM("#Dialogs_Profile_InfoViewer_Content_Info_Links").appendChild(link); + } + } + }); + } + }); + + + + new DOM("@#Dialogs_Thread_InfoInputer *[Required]").forEach((input) => { + input.addEventListener("input", () => { + let result = true; + + let list = [ + new DOM("#Dialogs_Thread_InfoInputer_Content_Name-Input"), + new DOM("#Dialogs_Thread_InfoInputer_Content_Overview-Input") + ]; + + if (new DOM("#Dialogs_Thread_InfoInputer_Content_Secured-Input").checked) list.push(new DOM("#Dialogs_Thread_InfoInputer_Content_Password-Input")); + + list.forEach(requiredField => { + if (requiredField.value.replace(/\s/g, "").length == 0) { + result = false; + return; + } + }); + + if (result) { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.remove("mdl-button--disabled"); + } else { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.add("mdl-button--disabled"); + } + }); + }); + + new DOM("#Dialogs_Thread_InfoInputer_Content_Secured-Input").addEventListener("change", (event) => { + let result = true; + + switch (event.target.checked) { + case true: + new DOM("#Dialogs_Thread_InfoInputer_Content_Password").classList.remove("mdl-switch__child-hide"); + + [new DOM("#Dialogs_Thread_InfoInputer_Content_Name-Input"), new DOM("#Dialogs_Thread_InfoInputer_Content_Overview-Input"), new DOM("#Dialogs_Thread_InfoInputer_Content_Password-Input")].forEach(requiredField => { + if (requiredField.value.replace(/\s/g, "").length == 0) { + result = false; + return; + } + }); + + if (result) { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.remove("mdl-button--disabled"); + } else { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.add("mdl-button--disabled"); + } + + break; + + case false: + new DOM("#Dialogs_Thread_InfoInputer_Content_Password").classList.add("mdl-switch__child-hide"); + + [new DOM("#Dialogs_Thread_InfoInputer_Content_Name-Input"), new DOM("#Dialogs_Thread_InfoInputer_Content_Overview-Input")].forEach(requiredField => { + if (requiredField.value.replace(/\s/g, "").length == 0) { + result = false; + return; + } + }); + + if (result) { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.remove("mdl-button--disabled"); + } else { + new DOM("#Dialogs_Thread_InfoInputer").querySelector('Button[Data-Action="Dialog_Submit"]').classList.add("mdl-button--disabled"); + } + + break; + } + }); + + new DOM("#Dialogs_Thread_InfoInputer_Btns_OK").addEventListener("click", (event) => { + if (!event.currentTarget.classList.contains("mdl-button--disabled")) { + base.Database.transaction("threads", (res) => { + let now = new Date().getTime(); + + base.Database.set("threads/" + res.length, { + title: new DOM("#Dialogs_Thread_InfoInputer_Content_Name-Input").value, + overview: new DOM("#Dialogs_Thread_InfoInputer_Content_Overview-Input").value, + detail: new DOM("#Dialogs_Thread_InfoInputer_Content_Detail-Input").value, + + jobs: { + Owner: (() => { + let owner = {}; owner[base.user.uid] = ""; + return owner; + })(), + + Admin: { + + } + }, + + createdAt: now, + + data: [ + { + uid: "!SYSTEM", + content: new DOM("#Dialogs_Thread_InfoInputer_Content_Name-Input").value, + createdAt: now + } + ], + + password: new DOM("#Dialogs_Thread_InfoInputer_Content_Secured-Input").checked ? Encrypter.encrypt(new DOM("#Dialogs_Thread_InfoInputer_Content_Password-Input").value) : "" + }); + + new DOM("#Dialogs_Thread_InfoInputer").close(); + parent.document.querySelector("IFrame.mdl-layout__content").src = "Thread/Viewer/?tid=" + res.length; + }); + } + }); + + + + new DOM("#Dialogs_Thread_PasswordConfirmer_Btns_OK").addEventListener("click", (event) => { + if (!event.currentTarget.classList.contains("mdl-button--disabled")) { + if (Encrypter.encrypt(new DOM("#Dialogs_Thread_PasswordConfirmer_Content_Password-Input").value) == new DOM("#Dialogs_Thread_PasswordConfirmer_Password").value) { + sessionStorage.setItem("com.GenbuProject.SimpleThread.currentPassword", new DOM("#Dialogs_Thread_PasswordConfirmer_Content_Password-Input").value); + new DOM("$IFrame.mdl-layout__content").src = new DOM("#Dialogs_Thread_PasswordConfirmer_Link").value; + + new DOM("#Dialogs_Thread_PasswordConfirmer_Link").value = "", + new DOM("#Dialogs_Thread_PasswordConfirmer_Password").value = ""; + } else { + new DOM("#Dialogs_Thread_PasswordConfirmer_Content_Password").classList.add("is-invalid"); + } + } + }); + + new DOM("#Dialogs_Thread_PasswordConfirmer_Btns_Cancel").addEventListener("click", (event) => { + new DOM("$IFrame.mdl-layout__content").src = "/SimpleThread/Thread/"; + }); + + + + watchers["Dialogs_Thread_InfoViewer_TID"] = { + valueObj: { value: "0" }, + watcher: null + }; watchers["Dialogs_Thread_InfoViewer_TID"].watcher = new DOM.Watcher({ + target: watchers["Dialogs_Thread_InfoViewer_TID"].valueObj, + onGet: () => { watchers["Dialogs_Thread_InfoViewer_TID"].valueObj.value = new DOM("#Dialogs_Thread_InfoViewer_TID").value }, + + onChange: (watcher) => { + base.Database.get(base.Database.ONCE, `threads/${watcher.newValue}`, (res) => { + new DOM("#Dialogs_Thread_InfoViewer_Content_Name").textContent = res.title, + new DOM("#Dialogs_Thread_InfoViewer_Content_Overview").textContent = res.overview, + new DOM("#Dialogs_Thread_InfoViewer_Content_Detail").textContent = res.detail; + + URL.filter(new DOM("#Dialogs_Thread_InfoViewer_Content_Overview").textContent).forEach((urlString) => { + new DOM("#Dialogs_Thread_InfoViewer_Content_Overview").innerHTML = new DOM("#Dialogs_Thread_InfoViewer_Content_Overview").innerHTML.replace(urlString, `${urlString}`); + }); + + URL.filter(new DOM("#Dialogs_Thread_InfoViewer_Content_Detail").textContent).forEach((urlString) => { + new DOM("#Dialogs_Thread_InfoViewer_Content_Detail").innerHTML = new DOM("#Dialogs_Thread_InfoViewer_Content_Detail").innerHTML.replace(urlString, `${urlString}`); + }); + }); + } + }); + + + + new DOM("#Dialogs_Thread_Poster_Btns_OK").addEventListener("click", (event) => { + if (!event.currentTarget.classList.contains("mdl-button--disabled")) { + base.Database.transaction("threads/" + new DOM("#Dialogs_Thread_Poster_TID").value + "/data", (res) => { + base.Database.set("threads/" + new DOM("#Dialogs_Thread_Poster_TID").value + "/data/" + res.length, { + uid: base.user.uid, + content: new DOM("#Dialogs_Thread_Poster_Content_Text-Input").value, + createdAt: new Date().getTime() + }); + + new DOM("#Dialogs_Thread_Poster_Btns_OK").classList.add("mdl-button--disabled"), + new DOM("#Dialogs_Thread_Poster_Content_Text").classList.remove("is-dirty"), + new DOM("#Dialogs_Thread_Poster_Content_Text-Input").value = ""; + + new DOM("#Page").contentDocument.querySelector("#FlowPanel_Btns_CreatePost").removeAttribute("Disabled"); + + new DOM("#Dialogs_Thread_Poster").close(); + }); + } + }); + + new DOM("#Dialogs_Thread_Poster_Btns_Cancel").addEventListener("click", () => { + new DOM("#Dialogs_Thread_Poster_Btns_OK").classList.add("mdl-button--disabled"), + new DOM("#Dialogs_Thread_Poster_Content_Text").classList.remove("is-dirty"), + new DOM("#Dialogs_Thread_Poster_Content_Text-Input").value = ""; + + new DOM("#Page").contentDocument.querySelector("#FlowPanel_Btns_CreatePost").removeAttribute("Disabled"); + }); + + + + for (let watcherName in watchers) DOM.Watcher.addWatcher(watchers[watcherName].watcher); +}); \ No newline at end of file diff --git a/Error/401/index.html b/Error/401/index.html new file mode 100644 index 0000000..4e3e0d2 --- /dev/null +++ b/Error/401/index.html @@ -0,0 +1,31 @@ + + + + + + + + + 401 Required Authorization + + + + + + + + +
+ 401 Required Authorization +
+ +
+

+ お探しのページの閲覧にはログインが必要です。
+ ログインしてからご利用ください。 +

+ + 5秒後にメインページへ移動します… +
+ + \ No newline at end of file diff --git a/Error/403.10/index.html b/Error/403.10/index.html new file mode 100644 index 0000000..2320886 --- /dev/null +++ b/Error/403.10/index.html @@ -0,0 +1,30 @@ + + + + + + + + + 403 Not Allowed + + + + + + + + +
+ 403 Not Allowed +
+ +
+

+ 正規ルートでのアクセスが確認できませんでした。 +

+ + 5秒後にメインページへ移動します… +
+ + \ No newline at end of file diff --git a/Error/406/index.html b/Error/406/index.html new file mode 100644 index 0000000..2a5141a --- /dev/null +++ b/Error/406/index.html @@ -0,0 +1,31 @@ + + + + + + + + + 406 Not Acceptable + + + + + + + + +
+ 406 Not Acceptable +
+ +
+

+ リクエストを正常に認識できませんでした。
+ 不正なリクエストが送信された可能性があります。 +

+ + 5秒後にメインページへ移動します… +
+ + \ No newline at end of file diff --git a/Error/Back.jpg b/Error/Back.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea41024b689cf201730b8496acb0ab103c5155c0 GIT binary patch literal 4173 zcmbW3cTiK?zQ=bGNNCbTB@&7d0TBy9fzVY5#6mqFC?ZH#S^%XYohzZg$L9hXy zLs2QBhk!^DKvB?3FPenVJ3Y_x^tNS~GiX_H2#-(x)+4 z3;+Uw0FSK;*!&J$u#5`u1%Pws04)FjL;zt32oT;C5uEhQl?Cb2!)e#k$!f`uUvVKEpK_S^Cwl}$PzBLXA?mJpCC0G0tkWI&tE zfbv#S;otFo}buBUH+HaulviLtWAo_74h z$@#pC>jf`wA74NJfUDsV*Kb5dMaLxGPP&tvayONd@gOrRJ0~}S`{oZV3?{3!v+L`(e|7it_I>}s=5R-OW8)L^3yVw3KUY@yYuj8P0P+vk zR^6uBO8$SjWVX1#+iL*Z<^q8uw+%8v!uxcfvM20ep17T=D1wOGN%Eu0Mo~3ghq+x> z!oG;@MjrdVe|{V7H`)IW?ACup_P=2N=IR3^wl*eM1|kEP0jui9jPOdUL9)0Wu13pB ze!W3LLLx6oA*f`q-Y+|Itlc#Dam4s!BV#3obx^G|Il0*Kbz~^kjl=PL7YjD@kaQWc zs~I}l#^Lf2C4tL4h)VeQttfiA9eaPYCuJn}=Ep}*1_l;eLQy&eF>Br<9uCrXEL4L0 z2ceSS7IU6STzH4^;-Zr5WVACWxcykt#mLrTqEhVQ7>?mQq8XZvRq^3pKs~9DpHIip zY|DeONEOvanHP`h{A+^-s--j(<1mKly=YY{BPFK?Ep;f->Z5#2=TRL#uEztHaqckZ zupPH}6Ua)%n_o)ADS z;iG$x4{E1i7g(lV2#h{8EGC|0Oc7S@Uf#f~=*?g8J!F)*!S>Wo>hChHxy&1&*a}-k z8(a4VWSI@=i3jr=_A$Di)uE5s)x9~={?M?B?rq2PQ9-8-(v)?t%Xc)CKehEd3BT}_ zgoIj0hSvsdjM{d?XNTc!GRY@jDBk$+s<`QV9+?U%al6a`(Qfr!4)snW}oQ+{58$E@>HhGst-&4~;Vc-=}t!x0&UE|(^ z@b1d-fIrir4Ph764fs(U<;AW-_58iNoLp4~Aeh!?h^>`^6iAtyPZfHD5`1^$4t$i- z>@h(slGm0xs?vQjFMbLdGVVFV11sXvo8lYjRS**fi)S1w->DrtTFZZ1EnK}&j5ipQghne8AQ1J3 zfk@Xsu$4K-@SgoO{wnjt<)3S8VxDJ|h1NpF{vy6pv~nyOO>gA&q(|B5nj1`u{`570 zx1SlryT5?h6R(dfez8PfvX89I$R@&d+iuoPL@Pa8G;7lIITfjP#wch|b*9fO3P%xT zn~}cGCpf@`A{D+qZ1FLeRf4%EE2l6`qFVszXflS;?kISD*u*rvyNen<+pTRbS?80+ zN!J@k=AS24V~oNKsSl-W^O46?uEhyL(}gkle%2~>`>mdoq`s;aouHYYrA4a zqYZ;eVkpWV>;rnt3K@c?Fr7?!t#PoM>_rGM!%a13ufC9`dE3G=ucYO~hS4S<<$8;y zfc&rrzuJ18kLmh4XClDSzE2E}c?>b9-$*0f>nk>NGsZhctw8>u8W8dHxwqjuxBE>#w07oE63YjN$!CxLY(Bq}x z8u0amO&}rN^KcbL)tPuCdl6N6Wmq4;N6+?9^-{@|3eh{ujt(o0>#`KWPIU0rsPq&u zI^${?(ri*+hR{&nO>^TZGU;}##>0(2`c+W62fPR^F$L`MZYsw5eUYypahLcTYnyK~ zJ<23^gANTv>^@(>Eht^@?5ku66t^^i8Nqmuuy?k$W0GjT6_OEX>Y1dl zf|i~Z46v!Vw6diwGy*wXy9%qS8yGD_{IY;|Qwk^Dq?Jq^NLb|_x|ifT(22Qlf>_ZK z%PV(VWFRAU0Thed>Z58?f?U^C%i#hZ{F80nEQ>BnFCSIYOxHUE=jSBZ7;$)f@-Q;> zY6rLJ`4^8D%Gd2i9Hf|xF88M_;2kR|_yXm4 z_f^iqZt05Ce**n`U-@07<>t#XftYy)8YyWLupf&|H8&Tsy5pm=OJSbSu`pQxhGGj9 zQyxVt`HDT^c)qR?W+U*mjg346IAEgaM?@do$MMok3ua`GR;eXp3#;R}|OFPE^z zZ6nEkVN*}t+Fq09h}T(61kFauxcVqHT>G3RJ0i+=Fd;FT!%+^dQz=+h5z0DR#h=2v zu>|jEx(Hl>UpEPF$hiZS+UKSnd#6{e@6UA$3BUA2^f=W9g+*c%^LD47JQI!92mxm3 z3}fmr0a91CyRwXyn>}ka8U%M@8jMq|Y=#EFAM)**i~f)eu4(yZtQ1a(AJL$l=#5Fx zZj+c4JRdlc*YAW|SXx2geql794rbm6xU|nFU^tM1`IGukpIvS8DOLiokDqn9ysyzG z=uy8y-|;~P!V3{OVaTpvtKYU$yCStCB-0(uXRRR!)8t=FPP)s0mTH;SE0+#I?IbDG zWD^*i=zj3{kQVDzj$R!Tls-ks=qAwKn;g{yG0)aWv^eqeLXOuc=ghZ+)5lpqkr8qn zQ@8$0tu?vQ+{#y8Jp`Y#xaf;%T$TJ_*Y{~P74 zzjQuF?s>+7=8cAcn$f z5OJ_@yB$xD`=9ajdaw8S2A4_a^&?_Na1YwqLSfV0R!gamf_AGKg;hv*BCXjw;f$=mLUaBzvtwyuxgwv2 zL?GPp;o-vNVGW25k~|;T($mK#jJ0dL0Q#@7* zuTRr#>QvIrPy?ClmDmdw5Rv-I7OBb>(?nt(kTkzHL~nLqfC5RoT8A{_MQXJP!Y;Jp;#wik)q%cw(T1zzceQf-rT7Bc1T2?f1) zZqB0oVW2GnM)>NbHXx~gToZe?&dM>1_)<@gKn#*!H!+;UQJmc3h!&-Imq?WniICY} zRwK0^foDd&3c<6elY8LeE#Y0yxc7}DOC^q&QEtcob+0|}NV`p3yaXbadh`G`t+!3@ zl<|u$Z_als#4p9zuqgV|YA)HqvOk%){=)pM=HyzuE{kqfKDoAT9^6zauNy2=u`y&d zzcLfEY|MSx4VXm)}URbLiPq9kNgluT8*}>M{dEEVE%I zs~U-^KpytyU{9KBmY>A1hP$L`$Q-PIT9kV0%r*VN{Y~m!2Za?97{(h@oVDeZ$prh^ zh?)`GH?}+Z6fKiC+{Y&>6VwRZ^CNiq5l|M(kXfeR2fxY0+nDlE@gyFRnjo8+FQ_>< z?GkY<`@4Pr#|H3CU=`*HZ^UcW5+>NQGgAcU`{POy;*% zzO}qjK@1M6RXfy0@-S2mada?#PW+JTjH!K~?Gx!!Sz|_1v}#a1t#!UB_fnvtT1ZVh zarb$OHWRJQFdJG~UYl>~Jg9Tq;(d4=Ev#y84^Ja~ Div { + Padding: 10px; +} + +.Title { + Text-Align: Center; + Font-Size: XX-Large; + + BackGround: RGBA(173, 216, 230, 0.25); + Border-Bottom: Thin Solid LightBlue; +} + +.Title > Img { + Vertical-Align: Middle; +} + +.Message > P { + Margin-Top: 0; +} \ No newline at end of file diff --git a/Error/Main.js b/Error/Main.js new file mode 100644 index 0000000..6ecc08a --- /dev/null +++ b/Error/Main.js @@ -0,0 +1,3 @@ +setTimeout(() => { + window.open("/SimpleThread/", "_parent"); +}, 5000); \ No newline at end of file diff --git a/Error/favicon.ico b/Error/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3dd954140b3b7c159372869e8c2284f8fd5ad98d GIT binary patch literal 20316 zcmXtg1z1$y7ww&4=?>|M#AbGT-N&x##Y)&yKa$7J^{l_r)(5!~@;ch9DO3K3+#lotlE30=%WZfA7xY zi+{cNLq-CAn0OZ1LEz&1ca-(~->$a?WN?fGY@L_qmmaK)+kaq7@^!qDN|$p_sB_Fp zjKsy-ibZu^$%Ww0i#*PBx2}jk9lI}*eE(!_G3L^_#(cI%6(^&0?U)6d%WE~29P0b; zefC#YLdsiLrxXLVN^g-lHkSsze*I5QTk&3zHrfZ>I=h>7@M%e&iWfmcL$k|RKf^jV zH>ab>0dsfH=#_@g&7o2}5ZDe&E&>@QvP-Uq9wLnmNW2Vzi;?OO2gh%*WJp^2o3(!_ zDT=BqdCffoM%DG-@m47e0r|tqgb#wFQi-4|&~1pw_M_l|9u0G+$J_kv+xiFU@pLr^hb~v^h zs)rgmqPflzNp#(;GsAVLAb)bKFH~vqRhK`1rrolBo(wBA&zabE35$jlFcHIkM1@ju z<91i<>0(e6R@+RNrNT2aoBGp%z21UfQ;A6 zhzy}z^<#z}e;E^R^zPSu66HFP?WhuX;JSX9U~ z@ZMBmEH^dDvY>5Z$l6PdOpYt%!Y`FxTzR;$_C=y=2^rHAOZSIa+-UjL?EC)##|Chcpbbo^j+YQv9@ zjZ~?_z8=a#a)>z^r$evm(ZY63yu@EvC{J z0_D{{`WvE_KBEbHQcRLQzSu9WehmI)=O$w@kZM(OMTWUKABkLY@+n+Jfip zh24O@8Y)eE4nKt+I$8+Vx9FK_d&C)b9apn`6bxSOEz@)eSOgDt(X)fFgWWn{Rdj8* zB$Dp@GvQ9L6c(kyjtz-QRfl~O*c#kAFm`e?ggl$Td9A~+pXpW3QqPe>6*q33+zp$H zO4X&hojrIt9mfk^@3by+rCer+=K-(h_jq1@QF`$~H#GfAP_E=&)}D!q9aEVZa>9dy zv~u)WLBX|;_4RqRwTv4Z8xBvOs_E)7!o!swF~P&3UfXYMrLSaBzkjmGw+Va-__Iw< zPcN^nb>*o&)1pVT&(bQ>v3o9~glQLoqEbbnRCYr|W@e^PU4sy`;yv;B*hwieSZ*-V zGJ_ck)gm*rN0Lx=IUv!6t|8Z6Doe0;kBuQoNJ%}`$Hb^;X!z1`$_Mqz>n15v5tO{X z6_LN!$_{L^nUxbdxTj++4yh#yX>v7(o<$6ej>c|ox_bNg;?v-Yjs3^q44l8(`0uK@~(y;DOFsBjO(dz>7wdx zZlcXCEtj;Y9()Ryz)W89xi>U5<#OR3_pZH6o0uf_IeM6QE(ol0DF$Xby0-ZT{Cvbj zAAiSv{xkXdY&*AG>mJLs>(_ISWS*PVFptkXv=@?bim) z-Z!3<8%1Azn3e;4wZkGc(9NfHz)>}#l0k(F!Tu0oWMuR|gU5fK+z&3gEioizdjf+L zuSS`u2Au}7g*mz@%E%;KJZ8Vt>}M<%^46yOj+-$?{rlPE_IE2v(F-p8i_;);D!lE9 zXqu>b@+(1otKmE~2S>-^7JZZ^BI|P06oO}zpKoYl!s+4(<9Z2c6UNcaCtz!B#}%M< zzNj+1PwUw3C_8&cN-se=^hDZsVFCyw{7;kmBTSB6mHWI} z*_U2M5+ie-<6w++uqP)h48sj~_(wP|Za`zCUD>8e3bZFC2z0>8@~HB~zO1 zFVCi;9dlK(qb5t_OdwK`7m<+1!}9E%)gi@_dT_tyJ>eFTYi>_Reg;QLG5^(Y?alnW zRsE@jtyI6V=g%T;czm3^a@3fWm!BR+j!ojfLOUWXGBiAF`9JgB;REpl&bg(XpEpB1 z*V0_!m02(%@!j0%kcfzAtlFB?EbP>$Xp`m2 %-%HoT6%|M4;$pJ;a0Z+~^f;N5 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 { + if (user) { + new DOM("#Header_SignInOut").dataset.locales = "main.signOut"; + + base.Database.getInfo(base.Database.ONCE, "users/" + user.uid, (res) => { + new DOM('@A[UUID="ProfilePhoto-Btn"]').forEach((btn) => { + btn.dataset.uid = base.user.uid; + }); + + if (!res.exists()) { + base.Database.set("users/" + user.uid, { + gplusName: user.providerData[0].displayName, + gplusPhoto: user.photoURL, + userName: user.providerData[0].displayName, + detail: "", + links: [] + }); + + new DOM("#Dialogs_Account_CreateNotify").showModal(); + } else { + base.Database.update("users/" + user.uid, { + gplusName: user.providerData[0].displayName, + gplusPhoto: user.photoURL + }); + } + }); + } else { + window.addEventListener("DOMContentLoaded", () => { + new DOM('@*[UUID="ProfilePhoto-Btn"]').forEach((btn) => { + btn.setAttribute("Disabled", ""); + }); + }); + } + + locales.applyToElement(new DOM("#Header_SignInOut")); + + base.Database.get(base.Database.ONCE, "users", (res) => { + for (let uid in res) { + let photoStyle = new Component.Styles.ProfilePhotoManager(uid, res[uid].gplusPhoto); + + document.head.appendChild(photoStyle); + } + }); + + + + let querys = location.querySort(); + + if (querys.TID) { + new DOM("$IFrame.mdl-layout__content").src = "Thread/Viewer/?tid=" + querys.TID; + } +}); + +window.terminal = (() => { + let terminal = new Worker("Terminal.js"); + terminal.addEventListener("message", (event) => { + let message = event.data || {}; + message.code = message.code || "", + message.data = !(message.data != false && !message.data) ? message.data : ""; + + switch (message.code) { + case "Code-SendHasLogined_1": + terminal.postMessage({ + code: "Code-SendHasLogined_2", + data: base.user ? true : false + }); + + break; + } + }); + + return terminal; +})(); + +window.locales = (() => { + let locales = new LangLoader(); + locales.load(localStorage.getItem("com.GenbuProject.SimpleThread.currentLang")); + + return locales; +})(); + + + +window.addEventListener("DOMContentLoaded", () => { + new DOM("$IFrame#Page").addEventListener("load", () => { + try { + !new DOM("#Drawer") || new DOM("#Drawer").classList.remove("is-visible"), + !new DOM("$Div.mdl-layout__obfuscator") || new DOM("$Div.mdl-layout__obfuscator").classList.remove("is-visible"); + } catch (error) {} + + if (new DOM("$IFrame#Page").contentWindow.location.pathname != "/SimpleThread/Thread/Viewer/") locales.applyToElement(new DOM("#Header_Title")); + }); + + new DOM("#Header_SignInOut").addEventListener("click", () => { + switch (new DOM("#Header_SignInOut").dataset.locales) { + case "main.signIn": + base.signInWithRedirect(base.SIGNINTYPE.GOOGLE, ["https://www.googleapis.com/auth/plus.login"]); + break; + + case "main.signOut": + base.signOut(); + break; + + default: + alert("Got to Default."); + break; + } + }); +}); \ No newline at end of file diff --git a/Profile/Profile.css b/Profile/Profile.css new file mode 100644 index 0000000..5ebc9a8 --- /dev/null +++ b/Profile/Profile.css @@ -0,0 +1,39 @@ +* { + Font-Family: "Meiryo UI"; +} + + + +#Profile { + Display: Flex; + Flex-Direction: Row; + Align-Items: Flex-Start; +} + +#Profile_Photo { + Width: 20%; + + Margin-Right: 5%; + + Border-Radius: 100%; +} + +#Profile_Photo::Before { + Content: ""; + + Display: Block; + Padding-Top: 100%; +} + +#Profile_Info { + Display: Flex; + Flex-Direction: Column; + + Flex: 1; + + Padding: 2vmin 0; +} + +#Profile_Info > * { + Width: 100%; +} \ No newline at end of file diff --git a/Profile/Profile.js b/Profile/Profile.js new file mode 100644 index 0000000..d5d101c --- /dev/null +++ b/Profile/Profile.js @@ -0,0 +1,104 @@ +terminal.addEventListener("message", (event) => { + let message = event.data || {}; + message.code = message.code || "", + message.data = !(message.data != false && !message.data) ? message.data : ""; + + switch (message.code) { + case "Code-SendHasLogined": + if (!message.data) location.href = "/SimpleThread/Error/401/"; + break; + } +}); + +window.addEventListener("DOMContentLoaded", () => { + new DOM("#Profile_Photo").dataset.uid = base.user.uid; + + new DOM("#Profile_Info_URL").childNodes[0].querySelector('Span.mdl-list__item-primary-content').dataset.locales = "profile.url"; + locales.applyToElement(new DOM("#Profile_Info_URL").childNodes[0].querySelector('Span.mdl-list__item-primary-content')); + + new DOM("#Profile_Info_URL_Add").addEventListener("click", () => { + new DOM("#Profile_Info_URL").childNodes[new DOM("#Profile_Info_URL").childNodes.length - 1].querySelector('Span.mdl-list__item-primary-content > *:nth-Child(1) > Label').dataset.locales = "profile.url.title", + new DOM("#Profile_Info_URL").childNodes[new DOM("#Profile_Info_URL").childNodes.length - 1].querySelector('Span.mdl-list__item-primary-content > *:nth-Child(2) > Label').dataset.locales = "profile.url.value"; + locales.applyToElement(new DOM("#Profile_Info_URL").childNodes[new DOM("#Profile_Info_URL").childNodes.length - 1].querySelector('Span.mdl-list__item-primary-content > *:nth-Child(1) > Label')), + locales.applyToElement(new DOM("#Profile_Info_URL").childNodes[new DOM("#Profile_Info_URL").childNodes.length - 1].querySelector('Span.mdl-list__item-primary-content > *:nth-Child(2) > Label')); + }); + + + + base.Database.get(base.Database.ONCE, "users", (res) => { + for (let uid in res) { + let photoStyle = new Component.Styles.ProfilePhotoManager(uid, res[uid].gplusPhoto); + + document.head.appendChild(photoStyle); + } + }); + + base.Database.get(base.Database.INTERVAL, "users/" + base.user.uid, (res) => { + res.links = res.links || []; + + new DOM("#Profile_Info_Name").classList.add("is-dirty"), + new DOM("#Profile_Info_Name-Input").value = res.userName; + new DOM("#Profile_Info_Detail").classList.add("is-dirty"), + new DOM("#Profile_Info_Detail-Input").value = res.detail; + + (() => { + let clientListLength = new DOM("#Profile_Info_URL").dataset.listlength; + + if (res.links.length - clientListLength > 0) { + for (let i = 0; i < res.links.length - clientListLength; i++) { + new DOM("#Profile_Info_URL_Add").click(); + } + } else { + for (let i = 0; i < clientListLength - res.links.length; i++) { + new DOM("#Profile_Info_URL").children[0].querySelector('Button[ID*="Remove"]').click(); + } + } + + for (let i = 0; i < res.links.length; i++) { + let currentList = new DOM("#Profile_Info_URL").querySelector('Li[Data-ItemID="' + i + '"]'); + currentList.querySelectorAll("Div").forEach((container) => { + container.classList.add("is-dirty"); + }); + + currentList.querySelector('Input[Data-FieldID="0"]').value = res.links[i].name, + currentList.querySelector('Input[Data-FieldID="1"]').value = res.links[i].url; + } + })(); + }); + + + + new DOM("#Profile_Info_Btns_Save").addEventListener("click", () => { + base.Database.update("users/" + base.user.uid, { + userName: new DOM("#Profile_Info_Name-Input").value, + detail: new DOM("#Profile_Info_Detail-Input").value, + + links: (() => { + let links = []; + + for (let i = 0; i < new DOM("#Profile_Info_URL").dataset.listlength; i++) { + let currentList = new DOM("#Profile_Info_URL").querySelector('Li[Data-ItemID="' + i + '"]'); + + links.push({ + name: currentList.querySelector('Input[Data-FieldID="0"]').value, + url: currentList.querySelector('Input[Data-FieldID="1"]').value + }); + } + + return links; + })() + }); + }); + + + + let doc = parent.document; + + new DOM("#Profile_Info_Btns_Save").addEventListener("click", () => { + doc.querySelector("#Dialogs_Profile_ChangeNotify").showModal(); + }); + + new DOM("#Profile_Info_Btns_Delete").addEventListener("click", () => { + doc.querySelector("#Dialogs_Profile_DeleteConfirmer").showModal(); + }); +}); \ No newline at end of file diff --git a/Profile/index.html b/Profile/index.html new file mode 100644 index 0000000..f62cea8 --- /dev/null +++ b/Profile/index.html @@ -0,0 +1,67 @@ + + + + + + Simple Thread == プロフィール + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + +
+ +
+ + +
+ +
    + +
    + + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/ServerInfo/ServerInfo.css b/ServerInfo/ServerInfo.css new file mode 100644 index 0000000..6ad9c52 --- /dev/null +++ b/ServerInfo/ServerInfo.css @@ -0,0 +1,9 @@ +#Top_Logo { + Width: 100%; + + Margin-Bottom: 5vmax; +} + +#ServerInfo { + Width: 100%; +} \ No newline at end of file diff --git a/ServerInfo/ServerInfo.js b/ServerInfo/ServerInfo.js new file mode 100644 index 0000000..e2a10fd --- /dev/null +++ b/ServerInfo/ServerInfo.js @@ -0,0 +1,17 @@ +window.addEventListener("DOMContentLoaded", () => { + base.Database.get(base.Database.INTERVAL, "users", (res) => { + let length = 0; + + for (let key in res) length++; + + new DOM("#ServerInfo_Users").textContent = length - 1; + }); + + base.Database.get(base.Database.INTERVAL, "threads", (res) => { + res = res.filter((thread) => { + if (thread !== "!SYSTEM") return true; + }); + + new DOM("#ServerInfo_Threads").textContent = res.length; + }); +}); \ No newline at end of file diff --git a/ServerInfo/index.html b/ServerInfo/index.html new file mode 100644 index 0000000..852d721 --- /dev/null +++ b/ServerInfo/index.html @@ -0,0 +1,80 @@ + + + + + + + Simple Thread == サーバー情報 + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +

    Server Info

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    項目
    サービス名称Simple Thread
    ユーザー数0
    スレッド数0
    最終更新日2017/11/29
    +
    +
    + + \ No newline at end of file diff --git a/Terminal.js b/Terminal.js new file mode 100644 index 0000000..d872fd2 --- /dev/null +++ b/Terminal.js @@ -0,0 +1,28 @@ +self.addEventListener("message", (event) => { + let message = event.data || {}; + message.code = message.code || "", + message.data = !(message.data != false && !message.data) ? message.data : ""; + + switch (message.code) { + case "Code-Connected": + break; + + case "Code-RequestHasLogined": + self.postMessage({ code: "Code-SendHasLogined_1" }); + break; + + case "Code-SendHasLogined_1": + break; + + case "Code-SendHasLogined_2": + self.postMessage({ + code: "Code-SendHasLogined", + data: message.data + }); + + break; + + case "Code-SendHasLogined": + break; + } +}); \ No newline at end of file diff --git a/Thread/Thread.css b/Thread/Thread.css new file mode 100644 index 0000000..5672457 --- /dev/null +++ b/Thread/Thread.css @@ -0,0 +1,21 @@ +#Threadlist_Tab_Reload { + Display: Inline-Flex; + Align-Items: Center; +} + +#Threadlist_Search_Searcher_Container { + Width: 100%; +} + +#Threadlist > Div[Disabled] { + Display: None; +} + +#Threadlist A { + Text-Decoration: None; + Cursor: Pointer; +} + +#Threadlist A[Disabled] { + Display: None; +} \ No newline at end of file diff --git a/Thread/Thread.js b/Thread/Thread.js new file mode 100644 index 0000000..72f2b1e --- /dev/null +++ b/Thread/Thread.js @@ -0,0 +1,56 @@ +class Util { + static refreshThreadList () { + base.Database.get(base.Database.ONCE, "threads", (res) => { + res = res.filter((thread, index, parent) => { + if (thread !== "!SYSTEM") { + thread.tid = index; + return true; + } + }); + + for (let i = 0; i < res.length; i++) { + let thread = new Component.Threadlist.Thread(res[i].tid, res[i].title, res[i].password); + + new DOM("#Threadlist_Search").appendChild(thread); + if (base.user) if (res[i].jobs.Owner.hasOwnProperty(base.user.uid)) new DOM("#Threadlist_Admin").appendChild(thread); + } + }); + } +} + +window.addEventListener("DOMContentLoaded", () => { + if (!base.user) { + new DOM("$#Threadlist_Tab_Admin").setAttribute("Disabled", ""), + new DOM("$#Threadlist_Admin").setAttribute("Disabled", ""); + } + + Util.refreshThreadList(); + + + + new DOM("#Threadlist_Search_Searcher_Container-Input").addEventListener("input", (event) => { + let list = Array.from(new DOM("#Threadlist_Search").children).splice(1); + list.forEach((thread) => { + if (thread.querySelector("Span:Not(.mdl-list__item-primary-content)").textContent.toLowerCase().indexOf(event.target.value.toLowerCase()) == -1) { + thread.setAttribute("Disabled", ""); + } else { + thread.removeAttribute("Disabled"); + } + }); + }); + + new DOM("#Threadlist_Tab_Reload").addEventListener("click", (event) => { + while (new DOM("#Threadlist_Search").children.length > 1) new DOM("#Threadlist_Search").children[1].remove(); + while (new DOM("#Threadlist_Admin").children.length > 1) new DOM("#Threadlist_Admin").children[1].remove(); + + Util.refreshThreadList(); + }); + + + + let doc = parent.document; + + new DOM("#Threadlist_Admin_Create").addEventListener("click", () => { + doc.querySelector("#Dialogs_Thread_InfoInputer").showModal(); + }); +}); \ No newline at end of file diff --git a/Thread/Viewer/Auth/Auth.css b/Thread/Viewer/Auth/Auth.css new file mode 100644 index 0000000..e69de29 diff --git a/Thread/Viewer/Auth/Auth.js b/Thread/Viewer/Auth/Auth.js new file mode 100644 index 0000000..a680c09 --- /dev/null +++ b/Thread/Viewer/Auth/Auth.js @@ -0,0 +1,15 @@ +window.addEventListener("DOMContentLoaded", () => { + let doc = parent.document; + + if (doc.querySelector("#Dialogs_Thread_PasswordConfirmer_Link").value) { + doc.querySelector("#Dialogs_Thread_PasswordConfirmer").showModal(); + } else { + doc.querySelector("IFrame.mdl-layout__content").src = "Thread/"; + } + + let querys = location.querySort(); + + base.Database.get(base.Database.ONCE, "threads/" + querys.TID, (res) => { + doc.querySelector("#Dialogs_Thread_PasswordConfirmer_Password").value = res.password; + }); +}); \ No newline at end of file diff --git a/Thread/Viewer/Auth/index.html b/Thread/Viewer/Auth/index.html new file mode 100644 index 0000000..1e1550f --- /dev/null +++ b/Thread/Viewer/Auth/index.html @@ -0,0 +1,34 @@ + + + + + + Simple Thread == Authorization + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Thread/Viewer/Viewer.css b/Thread/Viewer/Viewer.css new file mode 100644 index 0000000..76beef8 --- /dev/null +++ b/Thread/Viewer/Viewer.css @@ -0,0 +1,76 @@ +Div[Data-Component="Thread_Post"], Div[Data-Component="Thread_Post-Mine"] { + Width: 100%; + Min-Height: Auto; + + Margin: 5vh 0; +} + +Div[Data-Component="Thread_Post_Header"] > * { + Display: Flex; + Flex-Direction: Row; + Align-Items: Center; + + Font-Size: Medium; +} + +A[Data-Component="Thread_Post_Header_ActorPhoto"] { + Background: Transparent Center / Cover; +} + +A[Data-Component="Thread_Post_Header_ActorPhoto"][Disabled] { + Display: None; +} + +Span[Data-Component="Thread_Post_Header_Actor"] { + Align-Self: Auto; + + Margin-Left: 0.5em; +} + +Span[Data-Component="Thread_Post_Header_CreatedAt"] { + Color: #BDBDBD; + Font-Size: 80%; +} + +Div[Data-Component="Thread_Post_Content"] { + White-Space: Pre-Wrap; +} + + + +#FlowPanel_Btns { + Position: Fixed; + Right: 0; + Bottom: 0; + + Display: Flex; + Flex-Direction: Row-Reverse; + + Padding: 5vh 4vw; + Z-Index: 100; +} + +#FlowPanel_Btns *[Disabled] { + Display: None; +} + +#FlowPanel_Btns > Div { + Margin-Left: 2.5vw; +} + +#FlowPanel_Btns > Div:Last-Child { + Margin-Left: 0; +} + +.FlowPanel_Btns_Row { + Display: Flex; + Flex-Direction: Column; +} + +.FlowPanel_Btns_Row > * { + Margin-Bottom: 2.5vw; +} + +.FlowPanel_Btns_Row > *:Last-Child { + Margin-Bottom: 0; +} \ No newline at end of file diff --git a/Thread/Viewer/Viewer.js b/Thread/Viewer/Viewer.js new file mode 100644 index 0000000..a83ceda --- /dev/null +++ b/Thread/Viewer/Viewer.js @@ -0,0 +1,96 @@ +window.addEventListener("DOMContentLoaded", () => { + let querys = location.querySort(); + + if (!querys.TID) { + location.href = "/SimpleThread/Error/406/"; + } + + if (!base.user) { + new DOM("#FlowPanel_Btns_CreatePost").setAttribute("Disabled", ""); + } + + + + let doc = parent.document; + doc.querySelector("#Dialogs_Thread_InfoViewer_TID").value = querys.TID; + doc.querySelector("#Dialogs_Thread_Poster_TID").value = querys.TID; + + base.Database.get(base.Database.ONCE, "threads/" + querys.TID, (res) => { + doc.querySelector("#Header_Title").textContent = `${res.title}`; + + if (res.password && res.password != Encrypter.encrypt(sessionStorage.getItem("com.GenbuProject.SimpleThread.currentPassword") || "")) { + doc.querySelector("#Dialogs_Thread_PasswordConfirmer_Link").value = location.href; + + doc.querySelector("IFrame.mdl-layout__content").src = `Thread/Viewer/Auth/?tid=${querys.TID}`; + } + }); + + base.Database.get(base.Database.ONCE, "users", (res) => { + for (let uid in res) document.head.appendChild(new Component.Styles.ProfilePhotoManager(uid, res[uid].gplusPhoto)); + }); + + base.Database.get(base.Database.INTERVAL, "threads/" + querys.TID + "/data", (res) => { + resForIncrease = res, resForDecrease = res; + + resForIncrease = resForIncrease.filter((post, index, parent) => { + if (post) { + post.pid = index; + return true; + } + }); + + resForDecrease.forEach((post, index, parent) => { + post.pid = index; + }); + + if (new DOM("#Thread").children.length < resForIncrease.length) { + for (let i = new DOM("#Thread").children.length; i < resForIncrease.length; i++) { + let post = new Component.Thread.Post(resForIncrease[i].pid, resForIncrease[i].uid, "", resForIncrease[i].content, new Date(resForIncrease[i].createdAt).toLocaleString(), base.user.uid == resForIncrease[i].uid && i !== 0); + post.querySelector('A[Data-Component="Thread_Post_Header_ActorPhoto"]').addEventListener("click", () => { + doc.querySelector("#Dialogs_Profile_InfoViewer_UID").value = post.uid; + doc.querySelector("#Dialogs_Profile_InfoViewer").showModal(); + }); + + if (post.querySelector(`UL[Data-Component="${Component.Thread.Post.UUIDS.MENU.ROOT}"]`)) { + setTimeout(() => { + componentHandler.upgradeElement(post.querySelector(`UL[Data-Component="${Component.Thread.Post.UUIDS.MENU.ROOT}"]`)); + }, 100); + + post.querySelector(`Li[Data-Component="${Component.Thread.Post.UUIDS.MENU.DELETE}"]`).addEventListener("click", () => { + base.Database.delete(`threads/${querys.TID}/data/${post.pid}/`); + }); + } + + base.Database.get(base.Database.ONCE, "users/" + post.uid, (userRes) => { + post.querySelector('Span[Data-Component="Thread_Post_Header_Actor"]').textContent = userRes.userName; + }); + + URL.filter(post.querySelector('Div[Data-Component="Thread_Post_Content"]').textContent).forEach((urlString) => { + post.querySelector('Div[Data-Component="Thread_Post_Content"]').innerHTML = post.querySelector('Div[Data-Component="Thread_Post_Content"]').innerHTML.replace(urlString, `${urlString}`); + }); + + new DOM("#Thread").appendChild(post); + } + } else { + new DOM('@Div[Data-Component="Thread_Post"]').forEach((post) => { + if (!resForDecrease[post.dataset.pid]) post.remove(); + }); + + new DOM('@Div[Data-Component="Thread_Post-Mine"]').forEach((post) => { + if (!resForDecrease[post.dataset.pid]) post.remove(); + }); + } + }); + + + + new DOM("#FlowPanel_Btns_CreatePost").addEventListener("click", () => { + doc.querySelector("#Dialogs_Thread_Poster").showModal(); + + new DOM("#FlowPanel_Btns_CreatePost").setAttribute("Disabled", ""); + }); + + new DOM("#FlowPanel_Btns_ShowThreadInfo").addEventListener("click", () => { + doc.querySelector("#Dialogs_Thread_InfoViewer").showModal(); + }); +}); \ No newline at end of file diff --git a/Thread/Viewer/index.html b/Thread/Viewer/index.html new file mode 100644 index 0000000..762cd66 --- /dev/null +++ b/Thread/Viewer/index.html @@ -0,0 +1,70 @@ + + + + + + Simple Thread == スレッドビューア + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + +
    +
    + + + +
    + +
    + +
    +
    + + \ No newline at end of file diff --git a/Thread/index.html b/Thread/index.html new file mode 100644 index 0000000..f7db75b --- /dev/null +++ b/Thread/index.html @@ -0,0 +1,79 @@ + + + + + + Simple Thread == スレッド一覧 + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + \ No newline at end of file diff --git a/Top/Top.css b/Top/Top.css new file mode 100644 index 0000000..8ac72b1 --- /dev/null +++ b/Top/Top.css @@ -0,0 +1,5 @@ +#Top_Logo { + Width: 100%; + + Margin-Bottom: 5vmax; +} \ No newline at end of file diff --git a/Top/Top.js b/Top/Top.js new file mode 100644 index 0000000..e69de29 diff --git a/Top/index.html b/Top/index.html new file mode 100644 index 0000000..959f567 --- /dev/null +++ b/Top/index.html @@ -0,0 +1,51 @@ + + + + + + Simple Thread == トップページ + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +

    + Simple Threadへようこそ! + 当サービスでは "Be Simple, Be Free" をモットーに、他サービスと比べ自由に話せるスレ板を提供しますΣd(´・ω・`) +

    +
    +
    + + \ No newline at end of file diff --git a/assets/classes/DBLoader.js b/assets/classes/DBLoader.js new file mode 100644 index 0000000..c590abb --- /dev/null +++ b/assets/classes/DBLoader.js @@ -0,0 +1,35 @@ +class DBLoader extends FirebasePlus { + constructor (configUrl = "assets/firebase.json", onload = () => {}) { + let cfgLoader = new JSONLoader(); + + super(cfgLoader.load(configUrl), onload); + } + + + + delete () { + this.reauth([""]).then(() => { + this.Database.get(this.Database.ONCE, "threads/", res => { + res.forEach((thread, threadIndex) => { + if (thread.data) { + for (let uid in thread.jobs.Owner) { + if (uid === this.user.uid) { + this.Database.delete(`threads/${threadIndex}/`); + return; + } + } + + thread.data.forEach((post, postIndex) => { + if (post.uid == this.user.uid) this.Database.delete(`threads/${threadIndex}/data/${postIndex}/`); + }); + } + }); + }); + + this.Database.delete("users/" + this.user.uid); + this.user.delete(); + + location.reload(); + }); + } +} \ No newline at end of file diff --git a/assets/classes/Encrypter.js b/assets/classes/Encrypter.js new file mode 100644 index 0000000..7037adb --- /dev/null +++ b/assets/classes/Encrypter.js @@ -0,0 +1,17 @@ +class Encrypter { + /** + * 文字列をHash(SHA-512)で暗号化する + * @memberof Encrypter + * @static + * + * @param {String} [text=""] + * @param {String} [type="HEX"] + * @returns {String} + */ + static encrypt (text = "", type = "HEX") { + let encrypter = new jsSHA("SHA-512", "TEXT"); + encrypter.update(text); + + return encrypter.getHash(type); + } +} \ No newline at end of file diff --git a/assets/classes/FileLoader.js b/assets/classes/FileLoader.js new file mode 100644 index 0000000..c0c73bd --- /dev/null +++ b/assets/classes/FileLoader.js @@ -0,0 +1,28 @@ +class FileLoader { + constructor () {} + + + + /** + * 指定されたurlからファイルを読み込む + * @memberof FileLoader + * + * @param {String} url + */ + load (url) { + try { + let reader = new XMLHttpRequest(); + reader.open("GET", url || location.href, false); + reader.send(null); + + this.currentData = reader.response; + } catch (error) { + this.currentData = null; + console.error(error); + } + + return this.currentData; + } +}; Object.defineProperties(FileLoader.prototype, { + currentData: { value: null, configurable: true, writable: true, enumerable: true } +}); \ No newline at end of file diff --git a/assets/classes/JSONLoader.js b/assets/classes/JSONLoader.js new file mode 100644 index 0000000..8ae5aeb --- /dev/null +++ b/assets/classes/JSONLoader.js @@ -0,0 +1,16 @@ +class JSONLoader extends FileLoader { + constructor () { super() } + + + + /** + * 指定されたurlからJSONデータを読み込む + * @memberof JSONLoader + * + * @param {String} url + */ + load (url) { + this.currentData = JSON.parse(super.load(url)); + return this.currentData; + } +} \ No newline at end of file diff --git a/assets/classes/LangLoader.js b/assets/classes/LangLoader.js new file mode 100644 index 0000000..7611ba5 --- /dev/null +++ b/assets/classes/LangLoader.js @@ -0,0 +1,53 @@ +class LangLoader extends JSONLoader { + constructor () { + super(); + + localStorage.getItem("com.GenbuProject.SimpleThread.currentLang") || localStorage.setItem("com.GenbuProject.SimpleThread.currentLang", "ja_JP"); + } + + /** + * 指定されたurlからローカライズデータを読み込む + * @memberof LangLoader + * + * @param {String} lang + */ + load (lang) { + return super.load(`/SimpleThread/assets/locales/${lang}.json`); + } + + /** + * ローカライズ処理を実行 + * @memberof LangLoader + * + * @param {Window} windowObj + */ + apply (windowObj) { + let localizedElems = windowObj.document.querySelectorAll('*[Data-Locales]'); + + localizedElems.forEach((elem) => { + if (this.currentData[elem.dataset.locales]) { + if (Array.isArray(this.currentData[elem.dataset.locales])) { + elem.textContent = this.currentData[elem.dataset.locales].join("\n"); + } else { + elem.textContent = this.currentData[elem.dataset.locales]; + } + } + }); + } + + /** + * 指定の要素に対しローカライズ処理を実行 + * @memberof LangLoader + * + * @param {HTMLElement} elem + */ + applyToElement (elem) { + if (this.currentData[elem.dataset.locales]) { + if (Array.isArray(this.currentData[elem.dataset.locales])) { + elem.textContent = this.currentData[elem.dataset.locales].join("\n"); + } else { + elem.textContent = this.currentData[elem.dataset.locales]; + } + } + } +} \ No newline at end of file diff --git a/assets/firebase.json b/assets/firebase.json new file mode 100644 index 0000000..aed32ae --- /dev/null +++ b/assets/firebase.json @@ -0,0 +1,8 @@ +{ + "apiKey": "AIzaSyA62uPkN6WNV41oWWzOdiITMbBF9RDYOhM", + "authDomain": "simple-thread.firebaseapp.com", + "databaseURL": "https://simple-thread.firebaseio.com", + "projectId": "simple-thread", + "storageBucket": "simple-thread.appspot.com", + "messagingSenderId": 646527306803 +} \ No newline at end of file diff --git a/assets/images/Back.jpg b/assets/images/Back.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea41024b689cf201730b8496acb0ab103c5155c0 GIT binary patch literal 4173 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 e<8%B#fI^7z%(!KH_cjPF=B}@=8;jlDcA7Us_ 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%0A64Vyu2lkzck7xTYr|HCPg* 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⋘}4?SwFuBrG>gfe#1nNj~J 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%0D=TIcPK))p5X&YC8KIfYI21OI;DYI+HUBYL8& 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 Hu0mjf{o58S literal 0 HcmV?d00001 diff --git a/assets/images/favicon0002.png b/assets/images/favicon0002.png new file mode 100644 index 0000000000000000000000000000000000000000..ef976777b6368ed2ef2c2febffe41cb7cf61bece GIT binary patch literal 6150 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 literal 0 HcmV?d00001 diff --git a/assets/includes/Component.html b/assets/includes/Component.html new file mode 100644 index 0000000..7179e09 --- /dev/null +++ b/assets/includes/Component.html @@ -0,0 +1,70 @@ +
    + +
    + +
    + +
    + + + person + ${1} + + + + + + person + ${1} + + + + lock + + +
    + +
    +
    +
    + + ${2} +
    + + ${4} +
    + +
    ${3}
    +
    +
    + +
    +
    + + ${2} +
    + + ${4} + + + +
      +
    • 投稿を削除
    • +
    +
    + +
    ${3}
    +
    +
    +
    \ No newline at end of file diff --git a/assets/includes/Component.js b/assets/includes/Component.js new file mode 100644 index 0000000..0f31456 --- /dev/null +++ b/assets/includes/Component.js @@ -0,0 +1,139 @@ +class Component { + /** + * コンポーネントへの参照 + * @returns {HTMLBodyElement} + */ + static get doc () { + let doc = new DOM("Body"); + + try { + doc.innerHTML = DOM.xhr({ + type: "GET", + url: "/SimpleThread/assets/includes/Component.html", + doesSync: false + }).response; + } catch (error) {} + + return doc; + } + + + + constructor (componentName = "") { + try { + let component = document.importNode(Component.doc.querySelector(`*[Data-Component="${componentName}"]`), true); + + let componentWrapper = new DOM("ComponentWrapper"); + componentWrapper.appendChild(component); + + componentWrapper.firstElementChild.outerHTML = (() => { + let content = componentWrapper.firstElementChild.outerHTML; + + for (let i = 0; i < arguments.length + 1; i++) { + content = content.replace(new RegExp("\\$\\{" + i + "\\}", "g"), arguments[i + 1]); + } + + return content; + })(); + + return componentWrapper.firstElementChild; + } catch (error) { + console.error(error); + } + } + + + + static get Styles () { + return { + ProfilePhotoManager: class ProfilePhotoManager { + static get UUIDS () { + return { + ROOT: 'Styles_ProfilePhoto--Manager' + } + } + + + + constructor (uid = "", photoUrl = "") { + return new Component(ProfilePhotoManager.UUIDS.ROOT, uid, photoUrl); + } + } + } + } + + static get Dialogs () { + return { + Profile: { + InfoViewer: { + Links: { + Link: class Link { + static get UUIDS () { + return { + ROOT: 'Dialogs_Profile_InfoViewer_Content_Info_Links_Link', + ICON: 'Dialogs_Profile_InfoViewer_Content_Info_Links_Link_Icon', + } + } + + + + constructor (urlTitle = "", url = "") { + let self = new Component(Link.UUIDS.ROOT, urlTitle, url); + self.querySelector(`Img[Data-Component="${Link.UUIDS.ICON}"]`).src = `${new URL(url).origin}/favicon.ico` || `${locaion.origin}/favicon.ico`; + + return self; + } + } + } + } + } + } + } + + static get Threadlist () { + return { + Thread: class Thread { + static get UUIDS () { + return { + ROOT: 'Threadlist_Thread', + SECURED: 'Threadlist_Thread-Secured' + } + } + + + + constructor (tid = "", title = "", isSecured = false) { + return new Component(!isSecured ? Thread.UUIDS.ROOT : Thread.UUIDS.SECURED, tid, title); + } + } + } + } + + static get Thread () { + return { + Post: class Post { + static get UUIDS () { + return { + ROOT: 'Thread_Post', + MINE: 'Thread_Post-Mine', + + MENU: { + ROOT: 'Thread_Post_Header_Menu', + DELETE: 'Thread_Post_Header_Menu_MenuItem-Delete' + } + } + } + + + + constructor (pid = "", uid = "", userName = "", content = "", createdAt = new Date().toLocaleString(), isMine = false) { + let self = new Component(!isMine ? Post.UUIDS.ROOT : Post.UUIDS.MINE, pid, uid, userName, content, createdAt, new DOM.Randomizer().generate(16)); + self.pid = pid, + self.uid = uid; + + return self; + } + } + } + } +} \ No newline at end of file diff --git a/assets/includes/Core.css b/assets/includes/Core.css new file mode 100644 index 0000000..2aa3279 --- /dev/null +++ b/assets/includes/Core.css @@ -0,0 +1,39 @@ +Body { + Background: URL("/SimpleThread/assets/images/Back.jpg"); +} + +Main { + Padding: 4vmin; +} + +A:Not([Href]) { + Cursor: Pointer; +} + +*[Data-Locales] { + White-Space: Pre-Line; +} + + + +*[UUID="ProfilePhoto"] { + Width: Auto; + + Background: Transparent Center / Cover; + Border-Radius: 100%; +} + +*[UUID="ProfilePhoto"]::Before { + Content: ""; + + Display: Block; + Padding-Top: 100%; +} + +*[UUID="ProfilePhoto-Btn"] { + Background: Transparent Center / Cover; +} + +*[UUID="ProfilePhoto-Btn"][Disabled] { + Display: None; +} \ No newline at end of file diff --git a/assets/includes/Core.js b/assets/includes/Core.js new file mode 100644 index 0000000..357515a --- /dev/null +++ b/assets/includes/Core.js @@ -0,0 +1,46 @@ +window.base = parent.base || {}; +window.terminal = parent.terminal || {}; +window.locales = parent.locales; + + + +try { + terminal.postMessage({ code: "Code-Connected" }); + terminal.postMessage({ code: "Code-RequestHasLogined" }); +} catch (error) { + location.href = "/SimpleThread/Error/403.10/"; +} + +window.addEventListener("DOMContentLoaded", () => { + locales.apply(this); + + new DOM("@Main").forEach(elem => { + let classes = navigator.isMobile() ? + ["mdl-cell", "mdl-cell--12-col", "mdl-shadow--4dp", "mdl-color--white", "mdl-color-text--grey-800"] : + ["mdl-cell", "mdl-cell--2-offset", "mdl-cell--8-col", "mdl-shadow--4dp", "mdl-color--white", "mdl-color-text--grey-800"]; + + classes.forEach(className => { + elem.classList.add(className); + }); + }); + + new DOM('@A[Href]:Not([Target]):Not([Href^="javascript:"])').forEach((elem) => { + elem.addEventListener("click", (event) => { + event.preventDefault(); + + parent.document.querySelector("IFrame.mdl-layout__content").src = elem.href; + }); + }); + + parent.document.querySelector("IFrame#Page").contentWindow.addEventListener("beforeunload", () => { + parent.document.querySelectorAll("Dialog[Open]").forEach((dialog) => { + dialog.close(); + }); + }); +}); + +window.addEventListener("DOMNodeInserted", (event) => { + if (event.target.nodeName != "#text" && event.relatedNode.dataset && event.relatedNode.dataset.locales) { + locales.applyToElement(event.relatedNode); + } +}); \ No newline at end of file diff --git a/assets/includes/dialog-polyfill.css b/assets/includes/dialog-polyfill.css new file mode 100644 index 0000000..6b38bf0 --- /dev/null +++ b/assets/includes/dialog-polyfill.css @@ -0,0 +1,37 @@ +dialog { + position: absolute; + left: 0; right: 0; + width: -moz-fit-content; + width: -webkit-fit-content; + width: fit-content; + height: -moz-fit-content; + height: -webkit-fit-content; + height: fit-content; + margin: auto; + border: solid; + padding: 1em; + background: white; + color: black; + display: block; +} + +dialog:not([open]) { + display: none; +} + +dialog + .backdrop { + position: fixed; + top: 0; right: 0; bottom: 0; left: 0; + background: rgba(0,0,0,0.1); +} + +._dialog_overlay { + position: fixed; + top: 0; right: 0; bottom: 0; left: 0; +} + +dialog.fixed { + position: fixed; + top: 50%; + transform: translate(0, -50%); +} \ No newline at end of file diff --git a/assets/includes/dialog-polyfill.js b/assets/includes/dialog-polyfill.js new file mode 100644 index 0000000..312647a --- /dev/null +++ b/assets/includes/dialog-polyfill.js @@ -0,0 +1,738 @@ +(function() { + + // nb. This is for IE10 and lower _only_. + var supportCustomEvent = window.CustomEvent; + if (!supportCustomEvent || typeof supportCustomEvent === 'object') { + supportCustomEvent = function CustomEvent(event, x) { + x = x || {}; + var ev = document.createEvent('CustomEvent'); + ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null); + return ev; + }; + supportCustomEvent.prototype = window.Event.prototype; + } + + /** + * @param {Element} el to check for stacking context + * @return {boolean} whether this el or its parents creates a stacking context + */ + function createsStackingContext(el) { + while (el && el !== document.body) { + var s = window.getComputedStyle(el); + var invalid = function(k, ok) { + return !(s[k] === undefined || s[k] === ok); + } + if (s.opacity < 1 || + invalid('zIndex', 'auto') || + invalid('transform', 'none') || + invalid('mixBlendMode', 'normal') || + invalid('filter', 'none') || + invalid('perspective', 'none') || + s['isolation'] === 'isolate' || + s.position === 'fixed' || + s.webkitOverflowScrolling === 'touch') { + return true; + } + el = el.parentElement; + } + return false; + } + + /** + * Finds the nearest from the passed element. + * + * @param {Element} el to search from + * @return {HTMLDialogElement} dialog found + */ + function findNearestDialog(el) { + while (el) { + if (el.localName === 'dialog') { + return /** @type {HTMLDialogElement} */ (el); + } + el = el.parentElement; + } + return null; + } + + /** + * Blur the specified element, as long as it's not the HTML body element. + * This works around an IE9/10 bug - blurring the body causes Windows to + * blur the whole application. + * + * @param {Element} el to blur + */ + function safeBlur(el) { + if (el && el.blur && el !== document.body) { + el.blur(); + } + } + + /** + * @param {!NodeList} nodeList to search + * @param {Node} node to find + * @return {boolean} whether node is inside nodeList + */ + function inNodeList(nodeList, node) { + for (var i = 0; i < nodeList.length; ++i) { + if (nodeList[i] === node) { + return true; + } + } + return false; + } + + /** + * @param {HTMLFormElement} el to check + * @return {boolean} whether this form has method="dialog" + */ + function isFormMethodDialog(el) { + if (!el || !el.hasAttribute('method')) { + return false; + } + return el.getAttribute('method').toLowerCase() === 'dialog'; + } + + /** + * @param {!HTMLDialogElement} dialog to upgrade + * @constructor + */ + function dialogPolyfillInfo(dialog) { + this.dialog_ = dialog; + this.replacedStyleTop_ = false; + this.openAsModal_ = false; + + // Set a11y role. Browsers that support dialog implicitly know this already. + if (!dialog.hasAttribute('role')) { + dialog.setAttribute('role', 'dialog'); + } + + dialog.show = this.show.bind(this); + dialog.showModal = this.showModal.bind(this); + dialog.close = this.close.bind(this); + + if (!('returnValue' in dialog)) { + dialog.returnValue = ''; + } + + if ('MutationObserver' in window) { + var mo = new MutationObserver(this.maybeHideModal.bind(this)); + mo.observe(dialog, {attributes: true, attributeFilter: ['open']}); + } else { + // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also + // seem to fire even if the element was removed as part of a parent removal. Use the removed + // events to force downgrade (useful if removed/immediately added). + var removed = false; + var cb = function() { + removed ? this.downgradeModal() : this.maybeHideModal(); + removed = false; + }.bind(this); + var timeout; + var delayModel = function(ev) { + if (ev.target !== dialog) { return; } // not for a child element + var cand = 'DOMNodeRemoved'; + removed |= (ev.type.substr(0, cand.length) === cand); + window.clearTimeout(timeout); + timeout = window.setTimeout(cb, 0); + }; + ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) { + dialog.addEventListener(name, delayModel); + }); + } + // Note that the DOM is observed inside DialogManager while any dialog + // is being displayed as a modal, to catch modal removal from the DOM. + + Object.defineProperty(dialog, 'open', { + set: this.setOpen.bind(this), + get: dialog.hasAttribute.bind(dialog, 'open') + }); + + this.backdrop_ = document.createElement('div'); + this.backdrop_.className = 'backdrop'; + this.backdrop_.addEventListener('click', this.backdropClick_.bind(this)); + } + + dialogPolyfillInfo.prototype = { + + get dialog() { + return this.dialog_; + }, + + /** + * Maybe remove this dialog from the modal top layer. This is called when + * a modal dialog may no longer be tenable, e.g., when the dialog is no + * longer open or is no longer part of the DOM. + */ + maybeHideModal: function() { + if (this.dialog_.hasAttribute('open') && document.body.contains(this.dialog_)) { return; } + this.downgradeModal(); + }, + + /** + * Remove this dialog from the modal top layer, leaving it as a non-modal. + */ + downgradeModal: function() { + if (!this.openAsModal_) { return; } + this.openAsModal_ = false; + this.dialog_.style.zIndex = ''; + + // This won't match the native exactly because if the user set top on a centered + // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's + // possible to polyfill this perfectly. + if (this.replacedStyleTop_) { + this.dialog_.style.top = ''; + this.replacedStyleTop_ = false; + } + + // Clear the backdrop and remove from the manager. + this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_); + dialogPolyfill.dm.removeDialog(this); + }, + + /** + * @param {boolean} value whether to open or close this dialog + */ + setOpen: function(value) { + if (value) { + this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', ''); + } else { + this.dialog_.removeAttribute('open'); + this.maybeHideModal(); // nb. redundant with MutationObserver + } + }, + + /** + * Handles clicks on the fake .backdrop element, redirecting them as if + * they were on the dialog itself. + * + * @param {!Event} e to redirect + */ + backdropClick_: function(e) { + if (!this.dialog_.hasAttribute('tabindex')) { + // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be + // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this + // would not be needed - clicks would move the implicit cursor there. + var fake = document.createElement('div'); + this.dialog_.insertBefore(fake, this.dialog_.firstChild); + fake.tabIndex = -1; + fake.focus(); + this.dialog_.removeChild(fake); + } else { + this.dialog_.focus(); + } + + var redirectedEvent = document.createEvent('MouseEvents'); + redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window, + e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, + e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget); + this.dialog_.dispatchEvent(redirectedEvent); + e.stopPropagation(); + }, + + /** + * Focuses on the first focusable element within the dialog. This will always blur the current + * focus, even if nothing within the dialog is found. + */ + focus_: function() { + // Find element with `autofocus` attribute, or fall back to the first form/tabindex control. + var target = this.dialog_.querySelector('[autofocus]:not([disabled])'); + if (!target && this.dialog_.tabIndex >= 0) { + target = this.dialog_; + } + if (!target) { + // Note that this is 'any focusable area'. This list is probably not exhaustive, but the + // alternative involves stepping through and trying to focus everything. + var opts = ['button', 'input', 'keygen', 'select', 'textarea']; + var query = opts.map(function(el) { + return el + ':not([disabled])'; + }); + // TODO(samthor): tabindex values that are not numeric are not focusable. + query.push('[tabindex]:not([disabled]):not([tabindex=""])'); // tabindex != "", not disabled + target = this.dialog_.querySelector(query.join(', ')); + } + safeBlur(document.activeElement); + target && target.focus(); + }, + + /** + * Sets the zIndex for the backdrop and dialog. + * + * @param {number} dialogZ + * @param {number} backdropZ + */ + updateZIndex: function(dialogZ, backdropZ) { + if (dialogZ < backdropZ) { + throw new Error('dialogZ should never be < backdropZ'); + } + this.dialog_.style.zIndex = dialogZ; + this.backdrop_.style.zIndex = backdropZ; + }, + + /** + * Shows the dialog. If the dialog is already open, this does nothing. + */ + show: function() { + if (!this.dialog_.open) { + this.setOpen(true); + this.focus_(); + } + }, + + /** + * Show this dialog modally. + */ + showModal: function() { + if (this.dialog_.hasAttribute('open')) { + throw new Error('Failed to execute \'showModal\' on dialog: The element is already open, and therefore cannot be opened modally.'); + } + if (!document.body.contains(this.dialog_)) { + throw new Error('Failed to execute \'showModal\' on dialog: The element is not in a Document.'); + } + if (!dialogPolyfill.dm.pushDialog(this)) { + throw new Error('Failed to execute \'showModal\' on dialog: There are too many open modal dialogs.'); + } + + if (createsStackingContext(this.dialog_.parentElement)) { + console.warn('A dialog is being shown inside a stacking context. ' + + 'This may cause it to be unusable. For more information, see this link: ' + + 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context'); + } + + this.setOpen(true); + this.openAsModal_ = true; + + // Optionally center vertically, relative to the current viewport. + if (dialogPolyfill.needsCentering(this.dialog_)) { + dialogPolyfill.reposition(this.dialog_); + this.replacedStyleTop_ = true; + } else { + this.replacedStyleTop_ = false; + } + + // Insert backdrop. + this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling); + + // Focus on whatever inside the dialog. + this.focus_(); + }, + + /** + * Closes this HTMLDialogElement. This is optional vs clearing the open + * attribute, however this fires a 'close' event. + * + * @param {string=} opt_returnValue to use as the returnValue + */ + close: function(opt_returnValue) { + if (!this.dialog_.hasAttribute('open')) { + throw new Error('Failed to execute \'close\' on dialog: The element does not have an \'open\' attribute, and therefore cannot be closed.'); + } + this.setOpen(false); + + // Leave returnValue untouched in case it was set directly on the element + if (opt_returnValue !== undefined) { + this.dialog_.returnValue = opt_returnValue; + } + + // Triggering "close" event for any attached listeners on the . + var closeEvent = new supportCustomEvent('close', { + bubbles: false, + cancelable: false + }); + this.dialog_.dispatchEvent(closeEvent); + } + + }; + + var dialogPolyfill = {}; + + dialogPolyfill.reposition = function(element) { + var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; + var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2; + element.style.top = Math.max(scrollTop, topValue) + 'px'; + }; + + dialogPolyfill.isInlinePositionSetByStylesheet = function(element) { + for (var i = 0; i < document.styleSheets.length; ++i) { + var styleSheet = document.styleSheets[i]; + var cssRules = null; + // Some browsers throw on cssRules. + try { + cssRules = styleSheet.cssRules; + } catch (e) {} + if (!cssRules) { continue; } + for (var j = 0; j < cssRules.length; ++j) { + var rule = cssRules[j]; + var selectedNodes = null; + // Ignore errors on invalid selector texts. + try { + selectedNodes = document.querySelectorAll(rule.selectorText); + } catch(e) {} + if (!selectedNodes || !inNodeList(selectedNodes, element)) { + continue; + } + var cssTop = rule.style.getPropertyValue('top'); + var cssBottom = rule.style.getPropertyValue('bottom'); + if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) { + return true; + } + } + } + return false; + }; + + dialogPolyfill.needsCentering = function(dialog) { + var computedStyle = window.getComputedStyle(dialog); + if (computedStyle.position !== 'absolute') { + return false; + } + + // We must determine whether the top/bottom specified value is non-auto. In + // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but + // Firefox returns the used value. So we do this crazy thing instead: check + // the inline style and then go through CSS rules. + if ((dialog.style.top !== 'auto' && dialog.style.top !== '') || + (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) { + return false; + } + return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog); + }; + + /** + * @param {!Element} element to force upgrade + */ + dialogPolyfill.forceRegisterDialog = function(element) { + if (window.HTMLDialogElement || element.showModal) { + console.warn('This browser already supports , the polyfill ' + + 'may not work correctly', element); + } + if (element.localName !== 'dialog') { + throw new Error('Failed to register dialog: The element is not a dialog.'); + } + new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element)); + }; + + /** + * @param {!Element} element to upgrade, if necessary + */ + dialogPolyfill.registerDialog = function(element) { + if (!element.showModal) { + dialogPolyfill.forceRegisterDialog(element); + } + }; + + /** + * @constructor + */ + dialogPolyfill.DialogManager = function() { + /** @type {!Array} */ + this.pendingDialogStack = []; + + var checkDOM = this.checkDOM_.bind(this); + + // The overlay is used to simulate how a modal dialog blocks the document. + // The blocking dialog is positioned on top of the overlay, and the rest of + // the dialogs on the pending dialog stack are positioned below it. In the + // actual implementation, the modal dialog stacking is controlled by the + // top layer, where z-index has no effect. + this.overlay = document.createElement('div'); + this.overlay.className = '_dialog_overlay'; + this.overlay.addEventListener('click', function(e) { + this.forwardTab_ = undefined; + e.stopPropagation(); + checkDOM([]); // sanity-check DOM + }.bind(this)); + + this.handleKey_ = this.handleKey_.bind(this); + this.handleFocus_ = this.handleFocus_.bind(this); + + this.zIndexLow_ = 100000; + this.zIndexHigh_ = 100000 + 150; + + this.forwardTab_ = undefined; + + if ('MutationObserver' in window) { + this.mo_ = new MutationObserver(function(records) { + var removed = []; + records.forEach(function(rec) { + for (var i = 0, c; c = rec.removedNodes[i]; ++i) { + if (!(c instanceof Element)) { + continue; + } else if (c.localName === 'dialog') { + removed.push(c); + } + removed = removed.concat(c.querySelectorAll('dialog')); + } + }); + removed.length && checkDOM(removed); + }); + } + }; + + /** + * Called on the first modal dialog being shown. Adds the overlay and related + * handlers. + */ + dialogPolyfill.DialogManager.prototype.blockDocument = function() { + document.documentElement.addEventListener('focus', this.handleFocus_, true); + document.addEventListener('keydown', this.handleKey_); + this.mo_ && this.mo_.observe(document, {childList: true, subtree: true}); + }; + + /** + * Called on the first modal dialog being removed, i.e., when no more modal + * dialogs are visible. + */ + dialogPolyfill.DialogManager.prototype.unblockDocument = function() { + document.documentElement.removeEventListener('focus', this.handleFocus_, true); + document.removeEventListener('keydown', this.handleKey_); + this.mo_ && this.mo_.disconnect(); + }; + + /** + * Updates the stacking of all known dialogs. + */ + dialogPolyfill.DialogManager.prototype.updateStacking = function() { + var zIndex = this.zIndexHigh_; + + for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { + dpi.updateZIndex(--zIndex, --zIndex); + if (i === 0) { + this.overlay.style.zIndex = --zIndex; + } + } + + // Make the overlay a sibling of the dialog itself. + var last = this.pendingDialogStack[0]; + if (last) { + var p = last.dialog.parentNode || document.body; + p.appendChild(this.overlay); + } else if (this.overlay.parentNode) { + this.overlay.parentNode.removeChild(this.overlay); + } + }; + + /** + * @param {Element} candidate to check if contained or is the top-most modal dialog + * @return {boolean} whether candidate is contained in top dialog + */ + dialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) { + while (candidate = findNearestDialog(candidate)) { + for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { + if (dpi.dialog === candidate) { + return i === 0; // only valid if top-most + } + } + candidate = candidate.parentElement; + } + return false; + }; + + dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) { + if (this.containedByTopDialog_(event.target)) { return; } + + event.preventDefault(); + event.stopPropagation(); + safeBlur(/** @type {Element} */ (event.target)); + + if (this.forwardTab_ === undefined) { return; } // move focus only from a tab key + + var dpi = this.pendingDialogStack[0]; + var dialog = dpi.dialog; + var position = dialog.compareDocumentPosition(event.target); + if (position & Node.DOCUMENT_POSITION_PRECEDING) { + if (this.forwardTab_) { // forward + dpi.focus_(); + } else { // backwards + document.documentElement.focus(); + } + } else { + // TODO: Focus after the dialog, is ignored. + } + + return false; + }; + + dialogPolyfill.DialogManager.prototype.handleKey_ = function(event) { + this.forwardTab_ = undefined; + if (event.keyCode === 27) { + event.preventDefault(); + event.stopPropagation(); + var cancelEvent = new supportCustomEvent('cancel', { + bubbles: false, + cancelable: true + }); + var dpi = this.pendingDialogStack[0]; + if (dpi && dpi.dialog.dispatchEvent(cancelEvent)) { + dpi.dialog.close(); + } + } else if (event.keyCode === 9) { + this.forwardTab_ = !event.shiftKey; + } + }; + + /** + * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are + * removed and immediately readded don't stay modal, they become normal. + * + * @param {!Array} removed that have definitely been removed + */ + dialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) { + // This operates on a clone because it may cause it to change. Each change also calls + // updateStacking, which only actually needs to happen once. But who removes many modal dialogs + // at a time?! + var clone = this.pendingDialogStack.slice(); + clone.forEach(function(dpi) { + if (removed.indexOf(dpi.dialog) !== -1) { + dpi.downgradeModal(); + } else { + dpi.maybeHideModal(); + } + }); + }; + + /** + * @param {!dialogPolyfillInfo} dpi + * @return {boolean} whether the dialog was allowed + */ + dialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) { + var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1; + if (this.pendingDialogStack.length >= allowed) { + return false; + } + if (this.pendingDialogStack.unshift(dpi) === 1) { + this.blockDocument(); + } + this.updateStacking(); + return true; + }; + + /** + * @param {!dialogPolyfillInfo} dpi + */ + dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) { + var index = this.pendingDialogStack.indexOf(dpi); + if (index === -1) { return; } + + this.pendingDialogStack.splice(index, 1); + if (this.pendingDialogStack.length === 0) { + this.unblockDocument(); + } + this.updateStacking(); + }; + + dialogPolyfill.dm = new dialogPolyfill.DialogManager(); + dialogPolyfill.formSubmitter = null; + dialogPolyfill.useValue = null; + + /** + * Installs global handlers, such as click listers and native method overrides. These are needed + * even if a no dialog is registered, as they deal with
    . + */ + if (window.HTMLDialogElement === undefined) { + + /** + * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with + * one that returns the correct value. + */ + var testForm = document.createElement('form'); + testForm.setAttribute('method', 'dialog'); + if (testForm.method !== 'dialog') { + var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method'); + if (methodDescriptor) { + // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything + // and don't bother to update the element. + var realGet = methodDescriptor.get; + methodDescriptor.get = function() { + if (isFormMethodDialog(this)) { + return 'dialog'; + } + return realGet.call(this); + }; + var realSet = methodDescriptor.set; + methodDescriptor.set = function(v) { + if (typeof v === 'string' && v.toLowerCase() === 'dialog') { + return this.setAttribute('method', v); + } + return realSet.call(this, v); + }; + Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor); + } + } + + /** + * Global 'click' handler, to capture the or + +
    + + +
    + アカウントを削除しました。 +
    + +
    + +
    +
    + + +
    + +
    + プロフィールが変更されました。 +
    + +
    + +
    +
    + + + + +
    +
    + 本当にアカウントを削除しますか? + 処理を続行するにはメールアドレスを入力してください。 +
    + +
    + + + + 無効なメールアドレスです +
    +
    + +
    + + +
    +
    + + +
    +
    + +
    + +
    + + リンク + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + + + + + +
    + + +
    +
    + +
    + + +
    +
    + + +
    +
    + このスレッドはパスワードで保護されています。 + 閲覧にはパスワードが必要です。 +
    + +
    + + + + パスワードが間違っています +
    +
    + +
    + + +
    + + + +
    + + +
    + +
    + + 詳細... +
    +
    + +
    + +
    + + +
    + + +
    +
    + + +
    +
    + +
    + + +
    + + +
    +
    + + + \ No newline at end of file
    + +