Compare commits
No commits in common. "main" and "cpm-typo1" have entirely different histories.
6
.gitignore
vendored
|
@ -1,4 +1,2 @@
|
|||
/.directory
|
||||
/css/*
|
||||
!/css/.gitkeep
|
||||
/composer.lock
|
||||
.directory
|
||||
temp/*
|
||||
|
|
40
CHANGELOG.md
|
@ -2,45 +2,7 @@
|
|||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Added
|
||||
|
||||
* German localization (PR [#25](https://code.antopie.org/miraty/libreqr/pulls/25))
|
||||
|
||||
## 2.0.1 - 2023-07-08
|
||||
|
||||
### Added
|
||||
|
||||
* Indonesian localization
|
||||
* Basque localization
|
||||
|
||||
### Changed
|
||||
|
||||
* Update dependencies
|
||||
|
||||
## 2.0.0 - 2022-06-07
|
||||
|
||||
### Added
|
||||
|
||||
* Occitan l10n (PR [#10](https://code.antopie.org/miraty/libreqr/pulls/10))
|
||||
* Composer
|
||||
|
||||
### Changed
|
||||
|
||||
* Replace GET by POST for QR codes generation request (privacy enhancement)
|
||||
* Output generated QR code with `data:` URI
|
||||
* Change the QR code generation library
|
||||
* Use less.php instead of lesserphp
|
||||
* Use the prefers-color-scheme CSS feature to let the client choose its preferred theme (dark/light)
|
||||
|
||||
### Removed
|
||||
|
||||
* Ubuntu font (use system font instead)
|
||||
* OpenSearch plugin (because LibreQR is not a search engine)
|
||||
* WebManifest (because LibreQR is not a progressive web app)
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
## 1.3.0 - 2020-11-03
|
||||
|
||||
|
|
1428
LICENSE.html
660
LICENSE.md
Executable file
|
@ -0,0 +1,660 @@
|
|||
### GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
<https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
### Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains
|
||||
free software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing
|
||||
under this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
### TERMS AND CONDITIONS
|
||||
|
||||
#### 0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds
|
||||
of works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of
|
||||
an exact copy. The resulting work is called a "modified version" of
|
||||
the earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user
|
||||
through a computer network, with no transfer of a copy, is not
|
||||
conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to
|
||||
the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
#### 1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for
|
||||
making modifications to it. "Object code" means any non-source form of
|
||||
a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can
|
||||
regenerate automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same
|
||||
work.
|
||||
|
||||
#### 2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey,
|
||||
without conditions so long as your license otherwise remains in force.
|
||||
You may convey covered works to others for the sole purpose of having
|
||||
them make modifications exclusively for you, or provide you with
|
||||
facilities for running those works, provided that you comply with the
|
||||
terms of this License in conveying all material for which you do not
|
||||
control copyright. Those thus making or running the covered works for
|
||||
you must do so exclusively on your behalf, under your direction and
|
||||
control, on terms that prohibit them from making any copies of your
|
||||
copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the
|
||||
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||
it unnecessary.
|
||||
|
||||
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such
|
||||
circumvention is effected by exercising rights under this License with
|
||||
respect to the covered work, and you disclaim any intention to limit
|
||||
operation or modification of the work as a means of enforcing, against
|
||||
the work's users, your or third parties' legal rights to forbid
|
||||
circumvention of technological measures.
|
||||
|
||||
#### 4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
#### 5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these
|
||||
conditions:
|
||||
|
||||
- a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
- b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under
|
||||
section 7. This requirement modifies the requirement in section 4
|
||||
to "keep intact all notices".
|
||||
- c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
- d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
#### 6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of
|
||||
sections 4 and 5, provided that you also convey the machine-readable
|
||||
Corresponding Source under the terms of this License, in one of these
|
||||
ways:
|
||||
|
||||
- a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
- b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the Corresponding
|
||||
Source from a network server at no charge.
|
||||
- c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
- d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
- e) Convey the object code using peer-to-peer transmission,
|
||||
provided you inform other peers where the object code and
|
||||
Corresponding Source of the work are being offered to the general
|
||||
public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal,
|
||||
family, or household purposes, or (2) anything designed or sold for
|
||||
incorporation into a dwelling. In determining whether a product is a
|
||||
consumer product, doubtful cases shall be resolved in favor of
|
||||
coverage. For a particular product received by a particular user,
|
||||
"normally used" refers to a typical or common use of that class of
|
||||
product, regardless of the status of the particular user or of the way
|
||||
in which the particular user actually uses, or expects or is expected
|
||||
to use, the product. A product is a consumer product regardless of
|
||||
whether the product has substantial commercial, industrial or
|
||||
non-consumer uses, unless such uses represent the only significant
|
||||
mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to
|
||||
install and execute modified versions of a covered work in that User
|
||||
Product from a modified version of its Corresponding Source. The
|
||||
information must suffice to ensure that the continued functioning of
|
||||
the modified object code is in no case prevented or interfered with
|
||||
solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or
|
||||
updates for a work that has been modified or installed by the
|
||||
recipient, or for the User Product in which it has been modified or
|
||||
installed. Access to a network may be denied when the modification
|
||||
itself materially and adversely affects the operation of the network
|
||||
or violates the rules and protocols for communication across the
|
||||
network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
#### 7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders
|
||||
of that material) supplement the terms of this License with terms:
|
||||
|
||||
- a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
- b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
- c) Prohibiting misrepresentation of the origin of that material,
|
||||
or requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
- d) Limiting the use for publicity purposes of names of licensors
|
||||
or authors of the material; or
|
||||
- e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
- f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions
|
||||
of it) with contractual assumptions of liability to the recipient,
|
||||
for any liability that these contractual assumptions directly
|
||||
impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions; the
|
||||
above requirements apply either way.
|
||||
|
||||
#### 8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license
|
||||
from a particular copyright holder is reinstated (a) provisionally,
|
||||
unless and until the copyright holder explicitly and finally
|
||||
terminates your license, and (b) permanently, if the copyright holder
|
||||
fails to notify you of the violation by some reasonable means prior to
|
||||
60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
#### 9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run
|
||||
a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
#### 10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
#### 11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned
|
||||
or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the
|
||||
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||
the non-exercise of one or more of the rights that are specifically
|
||||
granted under this License. You may not convey a covered work if you
|
||||
are a party to an arrangement with a third party that is in the
|
||||
business of distributing software, under which you make payment to the
|
||||
third party based on the extent of your activity of conveying the
|
||||
work, and under which the third party grants, to any of the parties
|
||||
who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by
|
||||
you (or copies made from those copies), or (b) primarily for and in
|
||||
connection with specific products or compilations that contain the
|
||||
covered work, unless you entered into that arrangement, or that patent
|
||||
license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
#### 12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under
|
||||
this License and any other pertinent obligations, then as a
|
||||
consequence you may not convey it at all. For example, if you agree to
|
||||
terms that obligate you to collect a royalty for further conveying
|
||||
from those to whom you convey the Program, the only way you could
|
||||
satisfy both those terms and this License would be to refrain entirely
|
||||
from conveying the Program.
|
||||
|
||||
#### 13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your
|
||||
version supports such interaction) an opportunity to receive the
|
||||
Corresponding Source of your version by providing access to the
|
||||
Corresponding Source from a network server at no charge, through some
|
||||
standard or customary means of facilitating copying of software. This
|
||||
Corresponding Source shall include the Corresponding Source for any
|
||||
work covered by version 3 of the GNU General Public License that is
|
||||
incorporated pursuant to the following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
#### 14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Affero General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever
|
||||
published by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions
|
||||
of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
#### 15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
#### 16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
#### 17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
### 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 Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper
|
||||
mail.
|
||||
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for
|
||||
the specific requirements.
|
||||
|
||||
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 AGPL, see <https://www.gnu.org/licenses/>.
|
76
README.md
|
@ -1,4 +1,6 @@
|
|||
# LibreQR
|
||||
#  LibreQR
|
||||
|
||||
[Lire ceci en français](README_fr.md)
|
||||
|
||||
A PHP Web interface for generating QR codes.
|
||||
|
||||
|
@ -6,58 +8,90 @@ A PHP Web interface for generating QR codes.
|
|||
|
||||
A LibreQR instance is available at <https://qr.antopie.org>.
|
||||
|
||||
## How it works
|
||||
|
||||
LibreQR includes an [OpenSearch](https://developer.mozilla.org/docs/Web/OpenSearch) plugin, which allows to add it as a search engine in Firefox and to save settings.
|
||||
You can thus generate a QR code directly from your search bar with the LibreQR's settings used at the time of adding as search engine.
|
||||
|
||||
A [WebManifest](https://developer.mozilla.org/docs/Web/Manifest) is also included, which allows better system integration using Fennec (Firefox Android) ou Chromium.
|
||||
|
||||
QR codes generated are located in the temp/ directory, named with the number of random characters set in config.inc.php (32 by default), and then deleted after the time set in config.inc.php (7 days by default).
|
||||
|
||||
See `config.inc.php` for more settings.
|
||||
|
||||
## Installation
|
||||
|
||||
### Generic
|
||||
|
||||
Just place this source code in a Web server with PHP8.0+, extensions `gd`, `mbstring` and `iconv`, and writing rights on the `css/` directory.
|
||||
Just place this source code in a Web server with PHP.
|
||||
|
||||
#### Security hardening
|
||||
`wget https://code.antopie.org/miraty/libreqr/archive/1.2.0.zip`
|
||||
|
||||
##### HTTP headers
|
||||
GD extension is required.
|
||||
|
||||
`apt install php7.3-gd`
|
||||
|
||||
LibreQR need writing rights on the `temp/` directory.
|
||||
|
||||
Your HTTP server can reply the following headers:
|
||||
```
|
||||
Content-Security-Policy: default-src 'none'; img-src 'self' data:; style-src 'self'; frame-ancestors 'none'; form-action 'self';
|
||||
Referrer-Policy: no-referrer
|
||||
chown -R www-data:www-data /var/www/libreqr/temp
|
||||
chmod -R 600 /var/www/libreqr/temp
|
||||
```
|
||||
|
||||
##### PHP-FPM chroot
|
||||
|
||||
LibreQR can be chrooted using PHP-FPM.
|
||||
|
||||
### YunoHost
|
||||
|
||||
There is [a package](https://code.antopie.org/miraty/qr_ynh/) for [YunoHost](https://yunohost.org/).
|
||||
|
||||
For historical reasons, LibreQR is technically named `qr` in YunoHost.
|
||||
|
||||
You can install it from the WebAdmin or with this command:
|
||||
You can install it from the WebAdmin or with this command :
|
||||
|
||||
```
|
||||
sudo yunohost app install qr
|
||||
```
|
||||
|
||||
## Themes
|
||||
|
||||
Themes are located in `themes/*`, the default theme is in `themes/libreqr/`.
|
||||
### Change theme
|
||||
|
||||
You can customize your LibreQR instance look by changing the colors in `theme.php`, the logo in `logo.less` or the icons in `icons/<size>.png` (then list the sizes in `theme.php`).
|
||||
In config.inc.php, set $theme to the wanted theme.
|
||||
|
||||
By default, 3 themes are offered:
|
||||
|
||||
* dark, the default dark theme. Used here: <https://qr.antopie.org>
|
||||
* light, the light theme.
|
||||
* parinux, a blue theme, made for [Bastet](https://bastet.parinux.org), the [Parinux](https://parinux.org)'s CHATON. Used here: <https://codeqr.parinux.org>
|
||||
|
||||
### Make a theme
|
||||
|
||||
* Copy themes/dark to themes/[new theme's name]
|
||||
* Fill theme.php according to CSS colors you want
|
||||
* Change the source.png image according to your theme
|
||||
* To automatically generate favicons with the rights sizes, use `php themes/resize.php [theme's name]`
|
||||
|
||||
This last step will need [ImageMagick](https://imagemagick.org) and [pngquant](https://pngquant.org) to be installed.
|
||||
|
||||
```apt install imagemagick pngquant```
|
||||
|
||||
## Contribute
|
||||
|
||||
The public forge is <https://code.antopie.org/miraty/libreqr>. You can open issues and pull requests there.
|
||||
|
||||
### Translations
|
||||
|
||||
You can add your translations in `locales/<language-code>.php`.
|
||||
If you want to report a bug, you can open an issue at <https://code.antopie.org/miraty/libreqr/issues> after creating an account (prefered method) or contact me in another way.
|
||||
|
||||
## Contact
|
||||
|
||||
You can get my contact details on <https://miraty.antopie.org/>, feel free to use them if you want more informations about using or contributing to LibreQR.
|
||||
If you want to contact me, for instance to report a bug or ask me a question about installing or using LibreQR, you can get my contact details on <https://miraty.antopie.org>.
|
||||
|
||||
## Libraries
|
||||
|
||||
This source code includes:
|
||||
|
||||
* [phpqrcode](https://github.com/t0k4rt/phpqrcode) to generate QR codes
|
||||
* [Ubuntu font for the Web](https://github.com/earaujoassis/ubuntu-fontface)
|
||||
* [lesserphp](https://github.com/MarcusSchwarz/lesserphp) to compile [Less](http://lesscss.org)
|
||||
|
||||
## License
|
||||
|
||||
LibreQR is published under [AGPLv3+](https://code.antopie.org/miraty/libreqr/src/branch/main/LICENSE). Librairies located in the `vendor` subdirectory use their own licenses.
|
||||
[AGPLv3+](https://code.antopie.org/miraty/libreqr/src/branch/master/LICENSE)
|
||||
|
||||
LibreQR is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
|
100
README_fr.md
Normal file
|
@ -0,0 +1,100 @@
|
|||
#  LibreQR
|
||||
|
||||
[Read this in english](README.md)
|
||||
|
||||
Une interface Web en PHP pour générer des codes QR.
|
||||
|
||||
## Démo
|
||||
|
||||
Une instance de LibreQR est disponible sur <https://qr.antopie.org>.
|
||||
|
||||
## Fonctionnement
|
||||
|
||||
LibreQR inclus un plugin [OpenSearch](https://developer.mozilla.org/docs/Web/OpenSearch), ce qui permet de l'ajouter comme moteur de recherche dans Firefox et de sauvegarder vos paramètres.
|
||||
Vous pouvez ainsi générer un code QR directement depuis la barre de recherche avec les réglages de LibreQR utilisés lors de l'ajout comme moteur de recherche.
|
||||
|
||||
Un [WebManifest](https://developer.mozilla.org/docs/Web/Manifest) est également inclus, ce qui permet de mieux l'intégrer au système via Fennec (Firefox Android) ou Chromium.
|
||||
|
||||
Les codes QR générés sont placés dans le dossier temp/, nommés avec le nombre de caractères aléatoires indiqué dans config.inc.php (32 par défaut), puis supprimés après le temps indiqué dans config.inc.php (7 jours par défaut).
|
||||
|
||||
Voir `config.inc.php` pour plus de paramètres.
|
||||
|
||||
## Installation
|
||||
|
||||
### Générique
|
||||
|
||||
Placez simplement ce code source dans un serveur Web avec PHP.
|
||||
|
||||
`wget https://code.antopie.org/miraty/libreqr/archive/1.2.0.zip`
|
||||
|
||||
L'extension GD est requise.
|
||||
|
||||
`apt install php7.3-gd`
|
||||
|
||||
LibreQR a besoin des permissions d'écriture dans le dossier `temp/`.
|
||||
|
||||
```
|
||||
chown -R www-data:www-data /var/www/libreqr/temp
|
||||
chmod -R 600 /var/www/libreqr/temp
|
||||
```
|
||||
|
||||
### YunoHost
|
||||
|
||||
Il y a [un paquet](https://code.antopie.org/miraty/qr_ynh/) pour [YunoHost](https://yunohost.org/).
|
||||
|
||||
Pour des raisons historiques, LibreQR est techniquement nommée `qr` dans YunoHost.
|
||||
|
||||
Vous pouvez l'installer depuis l'interface Web d'administration ou avec cette commande :
|
||||
|
||||
```
|
||||
sudo yunohost app install qr
|
||||
```
|
||||
|
||||
## Thèmes
|
||||
|
||||
### Changer de thème
|
||||
|
||||
Dans config.inc.php, donnez à $theme le nom du thème voulu.
|
||||
|
||||
Par défaut, trois thèmes sont proposés :
|
||||
|
||||
* dark, le thème par défaut, sombre. Il est utilisé ici : <https://qr.antopie.org>
|
||||
* light, thème clair
|
||||
* parinux, un thème bleu, créé pour [Bastet](https://bastet.parinux.org), le CHATON de [Parinux](https://parinux.org). Il est utilisé ici : <https://codeqr.parinux.org>
|
||||
|
||||
### Créer un thème
|
||||
|
||||
* Copiez themes/dark vers themes/[nom de votre thème]
|
||||
* Complétez theme.php en fonction des couleurs CSS voulues dans l'interface
|
||||
* Modifiez l'image source.png en fonction de votre thème
|
||||
* Pour générer automatiquement les icônes aux tailles correctes, utilisez `php themes/resize.php [nom du thème]`
|
||||
|
||||
Cette dernière étape nécessite d'avoir installé [ImageMagick](https://imagemagick.org) et [pngquant](https://pngquant.org).
|
||||
|
||||
```apt install imagemagick pngquant```
|
||||
|
||||
## Contribuer
|
||||
|
||||
Si vous souhaitez rapporter un bug, vous pouvez ouvrir un ticket sur <https://code.antopie.org/miraty/libreqr/issues> après vous être créé un compte (méthode préférée) ou me contacter d'une autre manière.
|
||||
|
||||
## Contact
|
||||
|
||||
Si vous voulez me contacter, par exemple pour signaler un bug ou me poser une question sur l'installation ou l'utilisation de LibreQR, vous trouverez des moyens de me contacter sur <https://miraty.antopie.org>.
|
||||
|
||||
## Bibliothèques tierces
|
||||
|
||||
Ce code source inclus :
|
||||
|
||||
* [phpqrcode](https://github.com/t0k4rt/phpqrcode) pour générer les codes QR
|
||||
* [La police Ubuntu pour le Web](https://github.com/earaujoassis/ubuntu-fontface)
|
||||
* [lesserphp](https://github.com/MarcusSchwarz/lesserphp) pour compiler le [Less](http://lesscss.org)
|
||||
|
||||
## Licence
|
||||
|
||||
[AGPLv3+](https://code.antopie.org/miraty/libreqr/src/branch/master/LICENSE)
|
||||
|
||||
LibreQR est un logiciel libre ; vous pouvez le diffuser et le modifier suivant les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de cette licence, soit (à votre convenance) une version ultérieure.
|
||||
|
||||
LibreQR est diffusé dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIALISATION ou d’ADÉQUATION À UN USAGE PARTICULIER. Voyez la GNU Affero General Public License pour plus de détails.
|
||||
|
||||
Vous devriez avoir reçu une copie de la GNU Affero General Public License avec ce code. Sinon, consultez <https://www.gnu.org/licenses/>
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"require": {
|
||||
"endroid/qr-code": "^4.4",
|
||||
"wikimedia/less.php": "^3.1"
|
||||
}
|
||||
}
|
|
@ -1,20 +1,31 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
<?php
|
||||
|
||||
// LIBREQR SETTINGS
|
||||
// ----- Settings -----
|
||||
// ----- Paramètres -----
|
||||
|
||||
// Theme's directory name
|
||||
define("THEME", "libreqr");
|
||||
// EN: Time in seconds after which the QR code will be deleted when a page loads.
|
||||
// Default: 60 * 60 * 24 * 7 (one week)
|
||||
// FR : Temps en secondes après lequel le code QR sera supprimé lors du chargement d'une page.
|
||||
// Par défaut : 60 * 60 * 24 * 7 (une semaine)
|
||||
$timeBeforeDeletion = 60 * 60 * 24 * 7;
|
||||
|
||||
// Language used if those requested by the user are not available
|
||||
define("DEFAULT_LOCALE", "en");
|
||||
// EN: Theme's name (must be in the themes directory)
|
||||
// FR : Nom du thème (doit être dans le dossier themes)
|
||||
$theme = "dark";
|
||||
|
||||
// Will be printed at the bottom of the interface
|
||||
define("CUSTOM_TEXT_ENABLED", false);
|
||||
define("CUSTOM_TEXT", "This LibreQR instance is hosted by <a href='https://foo.example/'>foo</a>.");
|
||||
// EN: Language used if those requested by the user are not available
|
||||
// FR : Langue utilisée si celles demandées par l'utilisateurice ne sont pas disponibles
|
||||
$locale = "en";
|
||||
|
||||
// Default values
|
||||
define("DEFAULT_REDUNDANCY", "high");
|
||||
define("DEFAULT_MARGIN", 20);
|
||||
define("DEFAULT_SIZE", 300);
|
||||
define("DEFAULT_BGCOLOR", "FFFFFF");
|
||||
define("DEFAULT_FGCOLOR", "000000");
|
||||
// EN: Should the locales requested by the user be ignored?
|
||||
// FR : Faut-il ignorer les langues demandées par l'utilisateurice ?
|
||||
$forceLocale = false;
|
||||
|
||||
// EN: Lenght of the QR code filename
|
||||
// FR : Longueur du nom du fichier du code QR
|
||||
$fileNameLenght = 32;
|
||||
|
||||
// EN: Will be printed at the bottom of the interface
|
||||
// FR : Sera affiché en bas de l'interface
|
||||
$customTextEnabled = false;
|
||||
$customText = "This LibreQR instance is hosted by <a href='https://foo.bar'>foo</a>.";
|
||||
|
|
11
config.yaml.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
require "inc.php";
|
||||
// EN: This file is used to inform users of the settings of your LibreQR instance. If you want to edit these settings, edit config.inc.php.
|
||||
// FR : Ce fichier est utilisé pour informer les utilisateurices des paramètres de votre instance LibreQR. Si vous voulez modifier ces paramètres, modifiez config.inc.php.
|
||||
?>
|
||||
libreqrVersion: "<?= $libreqrVersion ?>"
|
||||
timeBeforeDeletion: <?= $timeBeforeDeletion . "\n" ?>
|
||||
theme: "<?= $theme ?>"
|
||||
locale: "<?= $locale ?>"
|
||||
forceLocale: "<?= $forceLocale ? 'true' : 'false' ?>"
|
||||
fileNameLenght: <?= $fileNameLenght . "\n" ?>
|
11
help.svg.php
Executable file
|
@ -0,0 +1,11 @@
|
|||
<?php header('Content-type: image/svg+xml'); ?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(-400.000000, -247.000000)">
|
||||
<g id="69" transform="translate(400.000000, 247.000000)">
|
||||
<circle id="Oval-7" stroke="<?= htmlspecialchars($_GET['clr']) ?>" stroke-width="2" cx="12" cy="12" r="10"></circle>
|
||||
<path d="M12.016,14.544 C12.384,14.544 12.64,14.256 12.704,13.904 L12.768,13.168 C14.544,12.864 16,11.952 16,9.936 L16,9.904 C16,7.904 14.48,6.656 12.24,6.656 C10.768,6.656 9.696,7.184 8.848,7.984 C8.624,8.176 8.528,8.432 8.528,8.672 C8.528,9.152 8.928,9.552 9.424,9.552 C9.648,9.552 9.856,9.456 10.016,9.328 C10.656,8.752 11.344,8.448 12.192,8.448 C13.344,8.448 14.032,9.072 14.032,9.968 L14.032,10 C14.032,11.008 13.2,11.584 11.696,11.728 C11.264,11.776 11.008,12.096 11.072,12.528 L11.232,13.904 C11.28,14.272 11.552,14.544 11.92,14.544 L12.016,14.544 Z M10.784,16.816 L10.784,16.976 C10.784,17.6 11.264,18.08 11.92,18.08 C12.576,18.08 13.056,17.6 13.056,16.976 L13.056,16.816 C13.056,16.192 12.576,15.712 11.92,15.712 C11.264,15.712 10.784,16.192 10.784,16.816 Z" id="?" fill="<?= $_GET['clr'] ?>"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
51
inc.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php // ----- This file is included everywhere -----
|
||||
|
||||
require "config.inc.php";
|
||||
|
||||
$libreqrVersion = "1.3.0";
|
||||
|
||||
// Defines the locale to be used
|
||||
if ($forceLocale == false) {
|
||||
$clientLocales = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
||||
$clientLocales = preg_replace("#[A-Z0-9]|q=|;|-|\.#", "", $clientLocales);
|
||||
$clientLocales = explode(',', $clientLocales);
|
||||
$availableLocales = array('fr', 'en', 'template');
|
||||
foreach ($clientLocales as $clientLocale) {
|
||||
if (in_array($clientLocale, $availableLocales)) {
|
||||
$locale = $clientLocale;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
require "locales/" . $locale . ".php";
|
||||
|
||||
// Defines the root URL
|
||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
|
||||
$protocol = "https";
|
||||
else
|
||||
$protocol = "http";
|
||||
$rootPath = $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
$rootPath = preg_replace('#\?.*$#', '', $rootPath);
|
||||
$rootPath = preg_replace('#(manifest|opensearch|index).php$#i', '', $rootPath);
|
||||
|
||||
require "themes/" . $theme . "/theme.php"; // Load theme
|
||||
|
||||
// Used to generate the filename of the QR code
|
||||
function generateRandomString($length) {
|
||||
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
$charactersLength = strlen($characters);
|
||||
$randomString = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$randomString .= $characters[rand(0, $charactersLength - 1)];
|
||||
}
|
||||
return $randomString;
|
||||
}
|
||||
|
||||
// Deletes images in temp/ older than the specified time in seconds
|
||||
$files = array_diff(scandir("temp"), array('..', '.', '.gitkeep'));
|
||||
foreach($files as $file) {
|
||||
// If the current time (in Posix time) minus the date of last modification of the file is higher than specified time
|
||||
if ((time() - filemtime("temp/" . $file)) > $timeBeforeDeletion) {
|
||||
unlink("temp/" . $file); // Deletes this image
|
||||
}
|
||||
}
|
493
index.php
|
@ -1,306 +1,283 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
<?php require "inc.php"; ?>
|
||||
<!--
|
||||
_ _ _ ___ ____
|
||||
| | (_| |__ _ __ ___ / _ \| _ \
|
||||
| | | | '_ \| '__/ _ | | | | |_) |
|
||||
| |___| | |_) | | | __| |_| | _ <
|
||||
|_____|_|_.__/|_| \___|\__\_|_| \_\
|
||||
A PHP Web interface for generating QR codes
|
||||
|
||||
use Endroid\QrCode\Builder\Builder;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelMedium;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelQuartile;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
|
||||
use Endroid\QrCode\Color\Color;
|
||||
Source code : https://code.antopie.org/miraty/libreqr
|
||||
|
||||
require "config.inc.php";
|
||||
require "vendor/autoload.php";
|
||||
This file is part of LibreQR.
|
||||
|
||||
define("LIBREQR_VERSION", "2.0.1");
|
||||
LibreQR is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
// Defines the locale to be used
|
||||
$locale = DEFAULT_LOCALE;
|
||||
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
$clientLocales = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
||||
$clientLocales = preg_replace("#[A-Z0-9]|q=|;|-|\.#", "", $clientLocales);
|
||||
$clientLocales = explode(',', $clientLocales);
|
||||
foreach (array_diff(scandir("locales"), array('..', '.')) as $key => $localeFile)
|
||||
$availableLocales[$key] = basename($localeFile, ".php");
|
||||
foreach ($clientLocales as $clientLocale) {
|
||||
if (in_array($clientLocale, $availableLocales)) {
|
||||
$locale = $clientLocale;
|
||||
break;
|
||||
}
|
||||
}
|
||||
LibreQR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
-->
|
||||
<?php
|
||||
|
||||
function badQuery() { // Check if browser must be redirected
|
||||
|
||||
// Check if parameters are set
|
||||
if (!isset($_GET['txt']))
|
||||
return true;
|
||||
else if (!isset($_GET['size']))
|
||||
return true;
|
||||
else if (!isset($_GET['redondancy']))
|
||||
return true;
|
||||
else if (!isset($_GET['margin']))
|
||||
return true;
|
||||
else if (!isset($_GET['bgColor']))
|
||||
return true;
|
||||
else if (!isset($_GET['mainColor']))
|
||||
return true;
|
||||
|
||||
// Check parameters's types
|
||||
else if (!is_numeric($_GET['size']))
|
||||
return true;
|
||||
else if (!is_string($_GET['redondancy']))
|
||||
return true;
|
||||
else if (!is_numeric($_GET['margin']))
|
||||
return true;
|
||||
else if (!is_string($_GET['bgColor']))
|
||||
return true;
|
||||
else if (!is_string($_GET['mainColor']))
|
||||
return true;
|
||||
|
||||
// Check if redondancy value is correct
|
||||
else if ($_GET['redondancy'] != "L" AND $_GET['redondancy'] != "M" AND $_GET['redondancy'] != "Q" AND $_GET['redondancy'] != "H")
|
||||
return true;
|
||||
|
||||
else
|
||||
return false;
|
||||
}
|
||||
require "locales/" . $locale . ".php";
|
||||
|
||||
$params = array(
|
||||
"txt" => "",
|
||||
"redundancy" => DEFAULT_REDUNDANCY,
|
||||
"margin" => DEFAULT_MARGIN,
|
||||
"size" => DEFAULT_SIZE,
|
||||
"bgColor" => DEFAULT_BGCOLOR,
|
||||
"fgColor" => DEFAULT_FGCOLOR,
|
||||
);
|
||||
if (badQuery()) {
|
||||
|
||||
$qrCodeAvailable = NULL;
|
||||
parse_str(parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY), $params);
|
||||
|
||||
if (
|
||||
isset($_POST['txt'])
|
||||
AND isset($_POST['redundancy'])
|
||||
AND isset($_POST['margin'])
|
||||
AND isset($_POST['size'])
|
||||
AND isset($_POST['bgColor'])
|
||||
AND isset($_POST['fgColor'])
|
||||
) {
|
||||
if (!isset($params['txt']))
|
||||
$params['txt'] = "";
|
||||
|
||||
$qrCodeAvailable = true;
|
||||
if (!isset($params['redondancy']) OR !is_string($params['redondancy']) OR ($params['redondancy'] != "L" AND $params['redondancy'] != "M" AND $params['redondancy'] != "Q" AND $params['redondancy'] != "H"))
|
||||
$params['redondancy'] = "H";
|
||||
|
||||
if (strlen($_POST['txt']) >= 1 AND strlen($_POST['txt']) <= 4096) {
|
||||
$params['txt'] = $_POST['txt'];
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for txt");
|
||||
}
|
||||
if (!isset($params['margin']) OR !is_numeric($params['margin']))
|
||||
$params['margin'] = 2;
|
||||
|
||||
if ($_POST['redundancy'] === "low" OR $_POST['redundancy'] === "medium" OR $_POST['redundancy'] === "quartile" OR $_POST['redundancy'] === "high") {
|
||||
$params['redundancy'] = $_POST['redundancy'];
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for redundancy");
|
||||
}
|
||||
if (!isset($params['size']) OR !is_numeric($params['size']))
|
||||
$params['size'] = 4;
|
||||
|
||||
if (is_numeric($_POST['margin']) AND $_POST['margin'] >= 0 AND $_POST['margin'] <= 1024) {
|
||||
$params['margin'] = $_POST['margin'];
|
||||
} else if (empty($_POST['margin'])) {
|
||||
$params['margin'] = NULL;
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for margin");
|
||||
}
|
||||
if (!isset($params['bgColor']) OR !is_string($params['bgColor']))
|
||||
$params['bgColor'] = "#FFFFFF";
|
||||
|
||||
if (is_numeric($_POST['size']) AND $_POST['size'] >= 21 AND $_POST['size'] <= 4096) {
|
||||
$params['size'] = $_POST['size'];
|
||||
} else if (empty($_POST['size'])) {
|
||||
$params['size'] = NULL;
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for size");
|
||||
}
|
||||
if (!isset($params['mainColor']) OR !is_string($params['mainColor']))
|
||||
$params['mainColor'] = "#000000";
|
||||
|
||||
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['bgColor'])) {
|
||||
$params['bgColor'] = substr($_POST['bgColor'], -6);
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for bgColor");
|
||||
}
|
||||
|
||||
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['fgColor'])) {
|
||||
$params['fgColor'] = substr($_POST['fgColor'], -6);
|
||||
} else {
|
||||
http_response_code(400);
|
||||
exit("Wrong value for fgColor");
|
||||
}
|
||||
|
||||
$validFormSubmitted = true;
|
||||
|
||||
$rgbBgColor = array(
|
||||
'r' => hexdec(substr($params['bgColor'],0,2)),
|
||||
'g' => hexdec(substr($params['bgColor'],2,2)),
|
||||
'b' => hexdec(substr($params['bgColor'],4,2)),
|
||||
);
|
||||
|
||||
$qrCode = Builder::create()
|
||||
->data($params['txt']);
|
||||
if (!is_null($params['margin']))
|
||||
$qrCode->margin($params['margin']);
|
||||
if (!is_null($params['size']))
|
||||
$qrCode->size($params['size']);
|
||||
|
||||
if ($params['redundancy'] === "high")
|
||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelHigh());
|
||||
else if ($params['redundancy'] === "quartile")
|
||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelQuartile());
|
||||
else if ($params['redundancy'] === "medium")
|
||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelMedium());
|
||||
else if ($params['redundancy'] === "low")
|
||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelLow());
|
||||
|
||||
$qrCode
|
||||
->backgroundColor(new Color(
|
||||
$rgbBgColor['r'],
|
||||
$rgbBgColor['g'],
|
||||
$rgbBgColor['b']
|
||||
))
|
||||
->foregroundColor(new Color(
|
||||
hexdec(substr($params['fgColor'],0,2)),
|
||||
hexdec(substr($params['fgColor'],2,2)),
|
||||
hexdec(substr($params['fgColor'],4,2))
|
||||
));
|
||||
|
||||
try {
|
||||
$result = $qrCode->build();
|
||||
} catch (Exception $ex) {
|
||||
http_response_code(500);
|
||||
$qrCodeAvailable = false;
|
||||
error_log("LibreQR encountered an error while generating a QR code: " . $ex);
|
||||
}
|
||||
header('Location: ' . $rootPath . "?" . http_build_query($params));
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= $locale ?>">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>LibreQR · <?= $loc['subtitle'] ?></title>
|
||||
<meta name="description" content="<?= $loc['description'] ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="color-scheme" content="dark light">
|
||||
<meta name="application-name" content="LibreQR">
|
||||
<meta name="referrer" content="no-referrer">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self' data:; style-src 'self'; form-action 'self';">
|
||||
<?php
|
||||
require "themes/" . THEME . "/theme.php";
|
||||
$colorScheme['theme'] = THEME;
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>LibreQR · <?= $loc['subtitle'] ?></title>
|
||||
<meta name="description" content="<?= $loc['description'] ?>">
|
||||
<meta name="theme-color" content="<?php echo $variablesTheme['bg']; ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="manifest" href="manifest.php">
|
||||
<link rel="search" type="application/opensearchdescription+xml" title="<?= $loc['opensearch_actionName'] ?>" href="opensearch.php?redondancy=<?= $_GET['redondancy'] ?>&margin=<?= $_GET['margin'] ?>&size=<?= $_GET['size'] ?>&bgColor=<?= urlencode($_GET['bgColor']) ?>&mainColor=<?= urlencode($_GET['mainColor']) ?>">
|
||||
<?php
|
||||
// If style.min.css exists
|
||||
if (file_exists("temp/style.min.css"))
|
||||
// And if it's older than theme.php or config.inc.php (so not up to date)
|
||||
if (filemtime("themes/" . $theme . "/theme.php") > filemtime("temp/style.min.css") OR filemtime("config.inc.php") > filemtime("temp/style.min.css"))
|
||||
// Then delete it
|
||||
unlink("temp/style.min.css");
|
||||
|
||||
$options = array('cache_dir' => 'css/', 'compress' => true);
|
||||
$cssFileName = Less_Cache::Get(array("style.less" => ""), $options, $colorScheme);
|
||||
?>
|
||||
<link rel="stylesheet" media="screen" href="css/<?= $cssFileName ?>">
|
||||
<?php
|
||||
foreach($themeDimensionsIcons as $dimFav) // Set all icons dimensions
|
||||
echo ' <link rel="icon" type="image/png" href="themes/' . THEME . '/icons/' . $dimFav . '.png" sizes="' . $dimFav . 'x' . $dimFav . '">' . "\n";
|
||||
?>
|
||||
</head>
|
||||
require "lesserphp/lessc.inc.php";
|
||||
$less = new lessc;
|
||||
$less->setVariables($variablesTheme); // Make these colors available in style.less
|
||||
$less->setFormatter("compressed");
|
||||
$less->checkedCompile("style.less", "temp/style.min.css"); // Compile, minimise and cache style.less into style.min.css
|
||||
?>
|
||||
<link type="text/css" rel="stylesheet" href="temp/style.min.css">
|
||||
<link type="text/css" rel="stylesheet" href="ubuntu/ubuntu.min.css">
|
||||
|
||||
<body>
|
||||
<?php
|
||||
foreach($themeDimensionsIcons as $dimFav) { // Set all icons dimensions
|
||||
echo ' <link rel="icon" type="image/png" href="themes/' . $theme . '/icons/' . $dimFav . '.png" sizes="' . $dimFav . 'x' . $dimFav . '">' . "\n";
|
||||
} ?>
|
||||
|
||||
<header>
|
||||
<a id="linkTitles" href="./">
|
||||
<div id="titles">
|
||||
<h1>LibreQR</h1>
|
||||
<h2><?= $loc['subtitle'] ?></h2>
|
||||
</div>
|
||||
</a>
|
||||
</header>
|
||||
</head>
|
||||
|
||||
<form method="post" action="./#output">
|
||||
<body>
|
||||
|
||||
<div class="param" id="txtParam">
|
||||
<details>
|
||||
<summary><label for="txt"><?= $loc['label_content'] ?></label></summary>
|
||||
<div class="helpText">
|
||||
<?= $loc['help_content'] ?>
|
||||
</div>
|
||||
</details>
|
||||
<textarea rows="3" required="" id="txt" placeholder="<?= $loc['placeholder'] ?>" name="txt"><?= htmlspecialchars($params['txt']) ?></textarea>
|
||||
</div>
|
||||
<main>
|
||||
|
||||
<div id="sideParams">
|
||||
<header>
|
||||
<a id="linkTitles" href="./">
|
||||
<img alt="" id="logo" src="themes/<?php echo $theme; ?>/icons/128.png">
|
||||
<div id="titles">
|
||||
<h1>LibreQR</h1>
|
||||
<h2><?= $loc['subtitle'] ?></h2>
|
||||
</div>
|
||||
</a>
|
||||
</header>
|
||||
|
||||
<div class="param">
|
||||
<details>
|
||||
<summary><label for="redundancy"><?= $loc['label_redundancy'] ?></label></summary>
|
||||
<p class="helpText">
|
||||
<?= $loc['help_redundancy'] ?>
|
||||
</p>
|
||||
</details>
|
||||
<select id="redundancy" name="redundancy">
|
||||
<option <?php if ($params['redundancy'] === "low") echo 'selected="" '; ?>value="low">L - 7%</option>
|
||||
<option <?php if ($params['redundancy'] === "medium") echo 'selected="" '; ?>value="medium">M - 15%</option>
|
||||
<option <?php if ($params['redundancy'] === "quartile") echo 'selected="" '; ?>value="quartile">Q - 25%</option>
|
||||
<option <?php if ($params['redundancy'] === "high") echo 'selected="" '; ?>value="high">H - 30%</option>
|
||||
</select>
|
||||
</div>
|
||||
<form method="get" action="./">
|
||||
|
||||
<div class="param">
|
||||
<details>
|
||||
<summary><label for="margin"><?= $loc['label_margin'] ?></label></summary>
|
||||
<p class="helpText">
|
||||
<?= $loc['help_margin'] ?>
|
||||
</p>
|
||||
</details>
|
||||
<input type="number" id="margin" placeholder="<?= DEFAULT_MARGIN ?>" name="margin" required="" min="0" max="1024" value="<?= htmlspecialchars($params['margin']) ?>">
|
||||
</div>
|
||||
<div id="firstWrapper">
|
||||
|
||||
<div class="param">
|
||||
<details>
|
||||
<summary><label for="size"><?= $loc['label_size'] ?></label></summary>
|
||||
<p class="helpText">
|
||||
<?= $loc['help_size'] ?>
|
||||
</p>
|
||||
</details>
|
||||
<input type="number" id="size" placeholder="<?= DEFAULT_SIZE ?>" name="size" required="" min="21" max="4096" value="<?= htmlspecialchars($params['size']) ?>">
|
||||
</div>
|
||||
<div class="param">
|
||||
<label for="txt"><?= $loc['label_content'] ?></label>
|
||||
<span class="helpContainer">
|
||||
<span class="helpButton" tabindex="0"><img class="helpImg" src="help.svg.php?clr=<?= urlencode($variablesTheme["text"]) ?>" alt="<?= $loc['alt_help'] ?>"></span>
|
||||
<span class="helpContent">
|
||||
<?= $loc['help_content'] ?>
|
||||
</span>
|
||||
</span>
|
||||
<br>
|
||||
<textarea rows="8" required="" id="txt" placeholder="<?= $loc['placeholder'] ?>" name="txt"><?php
|
||||
|
||||
</div>
|
||||
if (isset($_GET['txt'])) {
|
||||
echo htmlspecialchars($_GET['txt']);
|
||||
}
|
||||
|
||||
<div id="colors">
|
||||
<div class="param">
|
||||
<label for="bgColor"><?= $loc['label_bgColor'] ?></label>
|
||||
<input type="color" name="bgColor" id="bgColor" value="#<?= htmlspecialchars($params['bgColor']) ?>">
|
||||
</div>
|
||||
<div class="param">
|
||||
<label for="fgColor"><?= $loc['label_fgColor'] ?></label>
|
||||
<input type="color" name="fgColor" id="fgColor" value="#<?= htmlspecialchars($params['fgColor']) ?>">
|
||||
</div>
|
||||
</div>
|
||||
?></textarea>
|
||||
</div>
|
||||
|
||||
<div class="centered">
|
||||
<input class="button" type="submit" value="<?= $loc['button_create'] ?>" />
|
||||
</div>
|
||||
<div id="menusDeroulants">
|
||||
|
||||
</form>
|
||||
<div class="param">
|
||||
<label for="redondancy"><?= $loc['label_redondancy'] ?></label>
|
||||
<span class="helpContainer">
|
||||
<span class="helpButton" tabindex="0"><img class="helpImg" src="help.svg.php?clr=<?= urlencode($variablesTheme["text"]) ?>" alt="<?= $loc['alt_help'] ?>"></span>
|
||||
<span class="helpContent"><?= $loc['help_redondancy'] ?></span>
|
||||
</span>
|
||||
<br>
|
||||
<select id="redondancy" name="redondancy">
|
||||
<option <?php if (isset($_GET['redondancy']) AND ($_GET['redondancy'] == "L")) {echo 'selected="" ';} ?>value="L">L - 7%</option>
|
||||
<option <?php if (isset($_GET['redondancy']) AND ($_GET['redondancy'] == "M")) {echo 'selected="" ';} ?>value="M">M - 15%</option>
|
||||
<option <?php if (isset($_GET['redondancy']) AND ($_GET['redondancy'] == "Q")) {echo 'selected="" ';} ?>value="Q">Q - 25%</option>
|
||||
<option <?php if ((isset($_GET['redondancy']) AND ($_GET['redondancy'] == "H")) OR (!isset($_GET['redondancy']) OR empty($_GET['redondancy']))) {echo 'selected="" ';} ?>value="H">H - 30%</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
<div class="param">
|
||||
<label for="margin"><?= $loc['label_margin'] ?></label>
|
||||
<span class="helpContainer">
|
||||
<span class="helpButton" tabindex="0"><img class="helpImg" src="help.svg.php?clr=<?= urlencode($variablesTheme["text"]) ?>" alt="<?= $loc['alt_help'] ?>"></span>
|
||||
<span class="helpContent"><?= $loc['help_margin'] ?></span>
|
||||
</span>
|
||||
<br>
|
||||
<select id="margin" name="margin">
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "0")) {echo 'selected="" ';} ?>value="0">0</option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "1")) {echo 'selected="" ';} ?>value="1">1</option>
|
||||
<option <?php if ((isset($_GET['margin']) AND ($_GET['margin'] == "2")) OR (!isset($_GET['margin']) OR empty($_GET['margin']))) {echo 'selected="" ';} ?>value="2">2 - <?= $loc['value_default'] ?></option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "3")) {echo 'selected="" ';} ?>value="3">3</option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "4")) {echo 'selected="" ';} ?>value="4">4</option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "5")) {echo 'selected="" ';} ?>value="5">5</option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "8")) {echo 'selected="" ';} ?>value="8">8</option>
|
||||
<option <?php if (isset($_GET['margin']) AND ($_GET['margin'] == "10")) {echo 'selected="" ';} ?>value="10">10</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
if ($qrCodeAvailable) {
|
||||
$dataUri = $result->getDataUri();
|
||||
<div class="param">
|
||||
<label for="size"><?= $loc['label_size'] ?></label>
|
||||
<span class="helpContainer">
|
||||
<span class="helpButton" tabindex="0"><img class="helpImg" src="help.svg.php?clr=<?= urlencode($variablesTheme["text"]) ?>" alt="<?= $loc['alt_help'] ?>"></span>
|
||||
<span class="helpContent"><?= $loc['help_size'] ?></span>
|
||||
</span>
|
||||
<br>
|
||||
<select id="size" name="size">
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 1)) {echo 'selected="" ';} ?>value="1">1</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 2)) {echo 'selected="" ';} ?>value="2">2</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 3)) {echo 'selected="" ';} ?>value="3">3</option>
|
||||
<option <?php if ((isset($_GET['size']) AND ($_GET['size'] == 4)) OR (!isset($_GET['size']) OR empty($_GET['size']))) {echo 'selected="" ';} ?>value="4">4 - <?= $loc['value_default'] ?></option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 5)) {echo 'selected="" ';} ?>value="5">5</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 6)) {echo 'selected="" ';} ?>value="6">6</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 8)) {echo 'selected="" ';} ?>value="8">8</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 10)) {echo 'selected="" ';} ?>value="10">10</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 15)) {echo 'selected="" ';} ?>value="15">15</option>
|
||||
<option <?php if (isset($_GET['size']) AND ($_GET['size'] == 20)) {echo 'selected="" ';} ?>value="20">20</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
$qrSize = $params['size'] + 2 * $params['margin'];
|
||||
</div>
|
||||
|
||||
?>
|
||||
</div>
|
||||
|
||||
<section id="output">
|
||||
<div class="centered" id="downloadQR">
|
||||
<a href="<?= $dataUri ?>" class="button" download="<?= htmlspecialchars($params['txt']); ?>.png"><?= $loc['button_download'] ?></a>
|
||||
</div>
|
||||
<div id="colors">
|
||||
|
||||
<div class="centered" id="showOnlyQR">
|
||||
<a title="<?= $loc['title_showOnlyQR'] ?>" href="<?= $dataUri ?>"><img width="<?= $qrSize ?>" height="<?= $qrSize ?>" alt='<?= $loc['alt_QR_before'] ?><?= htmlspecialchars($params['txt']); ?><?= $loc['alt_QR_after'] ?>' id="qrCode"<?php
|
||||
<div class="param">
|
||||
<label for="bgColor"><?= $loc['label_bgColor'] ?></label>
|
||||
<div class="inputColorContainer">
|
||||
<input type="color" name="bgColor" id="bgColor" value="<?php if (!empty($_GET['bgColor'])) {echo htmlspecialchars($_GET['bgColor']);} else {echo "#FFFFFF";} ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
// Compute the difference between the QR code and theme background colors
|
||||
$diffLight = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-light'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-light'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-light'],-2,2)));
|
||||
$diffDark = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-dark'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-dark'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-dark'],-2,2)));
|
||||
<div class="param">
|
||||
<label for="mainColor"><?= $loc['label_mainColor'] ?></label>
|
||||
<div class="inputColorContainer">
|
||||
<input type="color" name="mainColor" id="mainColor" value="<?php if (!empty($_GET['mainColor'])) {echo htmlspecialchars($_GET['mainColor']);} else {echo "#000000";} ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
// Determine whether a CSS corner is needed to let the user see the margin of the QR code
|
||||
$contrastThreshold = 64;
|
||||
if ($diffLight < $contrastThreshold)
|
||||
echo " class='needLightContrast'";
|
||||
if ($diffDark < $contrastThreshold)
|
||||
echo " class='needDarkContrast'";
|
||||
?> src="<?= $dataUri ?>"></a>
|
||||
</div>
|
||||
</section>
|
||||
<div class="centered">
|
||||
<input class="button" type="submit" value="<?= $loc['button_create'] ?>" />
|
||||
</div>
|
||||
|
||||
<?php
|
||||
} else if ($qrCodeAvailable === false) {
|
||||
echo " <p><strong>" . $loc['error_generation'] . "</strong></p></body></html>";
|
||||
}
|
||||
?>
|
||||
</form>
|
||||
|
||||
<footer>
|
||||
<?php
|
||||
|
||||
<section id="info" class="metaText">
|
||||
<?= $loc['metaText_qr'] ?>
|
||||
</section>
|
||||
if (!empty($_GET['txt']) AND !empty($_GET['size']) AND !empty($_GET['redondancy']) AND !empty($_GET['margin']) AND !empty($_GET['bgColor']) AND !empty($_GET['mainColor'])) {
|
||||
if (isset($_GET['txt']) AND isset($_GET['size']) AND isset($_GET['redondancy']) AND isset($_GET['margin']) AND isset($_GET['bgColor']) AND isset($_GET['mainColor'])) {
|
||||
|
||||
<?php if (CUSTOM_TEXT_ENABLED) { ?>
|
||||
<section class="metaText">
|
||||
<?= CUSTOM_TEXT ?>
|
||||
</section>
|
||||
<?php } ?>
|
||||
require "phpqrcode.php";
|
||||
|
||||
<section class="metaText">
|
||||
<small><?= $loc['metaText_legal'] ?></small>
|
||||
</section>
|
||||
$cheminImage = "temp/" . generateRandomString($fileNameLenght) . ".png";
|
||||
QRcode::png($_GET['txt'], $cheminImage, $_GET['redondancy'], $_GET['size'], $_GET['margin'], false, hexdec($_GET['bgColor']), hexdec($_GET['mainColor']));
|
||||
?>
|
||||
<div class="centered">
|
||||
<a href="<?php echo $cheminImage; ?>" class="button" download="<?php echo htmlspecialchars($_GET['txt']); ?>.png"><?= $loc['button_download'] ?></a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
<div class="centered" id="showOnlyQR">
|
||||
<a title="<?= $loc['title_showOnlyQR'] ?>" href="<?php echo $cheminImage; ?>"><img alt='<?= $loc['alt_QR_before'] ?><?php echo htmlspecialchars($_GET['txt']); ?><?= $loc['alt_QR_after'] ?>' id="qrCode" src="<?php echo $cheminImage; ?>"/></a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</body>
|
||||
<footer>
|
||||
|
||||
<section id="info" class="metaText">
|
||||
<?= $loc['metaText_qr'] ?>
|
||||
</section>
|
||||
|
||||
<?php if ($customTextEnabled) { ?>
|
||||
<section class="metaText">
|
||||
<?= $customText ?>
|
||||
</section>
|
||||
<?php } ?>
|
||||
|
||||
<section class="metaText">
|
||||
<?= $loc['metaText_legal'] ?>
|
||||
</section>
|
||||
|
||||
</footer>
|
||||
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
661
lesserphp/LICENSE
Normal file
|
@ -0,0 +1,661 @@
|
|||
For ease of distribution, lessphp 0.5.1 is under a dual license.
|
||||
You are free to pick which one suits your needs.
|
||||
|
||||
|
||||
|
||||
|
||||
MIT LICENSE
|
||||
|
||||
|
||||
|
||||
|
||||
Copyright (c) 2013 - 2015 Leaf Corcoran, http://leafo.net/lessphp
|
||||
Copyright (c) 2016 - Marcus Schwarz, https://www.maswaba.de
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
|
||||
|
||||
GPL VERSION 3
|
||||
|
||||
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
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.
|
||||
|
97
lesserphp/README.md
Normal file
|
@ -0,0 +1,97 @@
|
|||
[](https://travis-ci.org/MarcusSchwarz/lesserphp)
|
||||
|
||||
# lesserphp v0.5.4
|
||||
### <http://github.com/MarcusSchwarz/lesserphp>
|
||||
|
||||
`lesserphp` is a compiler for LESS written in PHP. It is based on lessphp bei leafo.
|
||||
The documentation is great,
|
||||
so check it out: <http://leafo.net/lessphp/docs/>.
|
||||
|
||||
Here's a quick tutorial:
|
||||
|
||||
### How to use in your PHP project
|
||||
|
||||
The only file required is `lessc.inc.php`, so copy that to your include directory.
|
||||
|
||||
The typical flow of **lesserphp** is to create a new instance of `lessc`,
|
||||
configure it how you like, then tell it to compile something using one built in
|
||||
compile methods.
|
||||
|
||||
The `compile` method compiles a string of LESS code to CSS.
|
||||
|
||||
```php
|
||||
<?php
|
||||
require "lessc.inc.php";
|
||||
|
||||
$less = new lessc;
|
||||
echo $less->compile(".block { padding: 3 + 4px }");
|
||||
```
|
||||
|
||||
The `compileFile` method reads and compiles a file. It will either return the
|
||||
result or write it to the path specified by an optional second argument.
|
||||
|
||||
```php
|
||||
<?php
|
||||
echo $less->compileFile("input.less");
|
||||
```
|
||||
|
||||
The `checkedCompile` method is like `compileFile`, but it only compiles if the output
|
||||
file doesn't exist or it's older than the input file:
|
||||
|
||||
```php
|
||||
<?php
|
||||
$less->checkedCompile("input.less", "output.css");
|
||||
```
|
||||
|
||||
If there any problem compiling your code, an exception is thrown with a helpful message:
|
||||
|
||||
```php
|
||||
<?php
|
||||
try {
|
||||
$less->compile("invalid LESS } {");
|
||||
} catch (\Exception $e) {
|
||||
echo "fatal error: " . $e->getMessage();
|
||||
}
|
||||
```
|
||||
|
||||
The `lessc` object can be configured through an assortment of instance methods.
|
||||
Some possible configuration options include [changing the output format][1],
|
||||
[setting variables from PHP][2], and [controlling the preservation of
|
||||
comments][3], writing [custom functions][4] and much more. It's all described
|
||||
in [the documentation][0].
|
||||
|
||||
|
||||
[0]: http://leafo.net/lessphp/docs/
|
||||
[1]: http://leafo.net/lessphp/docs/#output_formatting
|
||||
[2]: http://leafo.net/lessphp/docs/#setting_variables_from_php
|
||||
[3]: http://leafo.net/lessphp/docs/#preserving_comments
|
||||
[4]: http://leafo.net/lessphp/docs/#custom_functions
|
||||
|
||||
|
||||
### How to use from the command line
|
||||
|
||||
An additional script has been included to use the compiler from the command
|
||||
line. In the simplest invocation, you specify an input file and the compiled
|
||||
css is written to standard out:
|
||||
|
||||
$ plessc input.less > output.css
|
||||
|
||||
Using the -r flag, you can specify LESS code directly as an argument or, if
|
||||
the argument is left off, from standard in:
|
||||
|
||||
$ plessc -r "my less code here"
|
||||
|
||||
Finally, by using the -w flag you can watch a specified input file and have it
|
||||
compile as needed to the output file:
|
||||
|
||||
$ plessc -w input-file output-file
|
||||
|
||||
Errors from watch mode are written to standard out.
|
||||
|
||||
The -f flag sets the [output formatter][1]. For example, to compress the
|
||||
output run this:
|
||||
|
||||
$ plessc -f=compressed myfile.less
|
||||
|
||||
For more help, run `plessc --help`
|
||||
|
1400
lesserphp/docs/docs.md
Normal file
4019
lesserphp/lessc.inc.php
Normal file
|
@ -1,42 +0,0 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
$loc = array(
|
||||
'subtitle' => "QR-Code-Generator",
|
||||
'description' => "Erstellen Sie QR-Codes kostenlos. Wählen Sie Inhalt, Größe, Farben…",
|
||||
|
||||
'label_content' => "Text zum Kodieren",
|
||||
'label_redundancy' => "Redundanzgrad",
|
||||
'label_margin' => "Randgröße",
|
||||
'label_size' => "Bildgröße",
|
||||
'label_bgColor' => "Hintergrundfarbe",
|
||||
'label_fgColor' => "Vordergrundfarbe",
|
||||
|
||||
'placeholder' => "Geben Sie den Text ein, den Sie im QR-Code kodieren möchten",
|
||||
|
||||
'help_content' => "
|
||||
<p>Sie können jeden Text kodieren, den Sie möchten.</p>
|
||||
<p>Software, die diese QR-Codes dekodiert, kann je nach <a href='https://de.wikipedia.org/wiki/Uniform_Resource_Identifier#Schema' hreflang='de' rel='help external noreferrer'>URI-Schema</a> vorschlagen, sie mit spezieller Software zu öffnen.</p>
|
||||
<p>Beispielsweise, um eine Webseite zu öffnen: <code>https://www.example/</code></p>
|
||||
<p>Um eine E-Mail zu senden: <code>mailto:contact@email.example</code></p>
|
||||
<p>Um geografische Koordinaten zu teilen: <code>geo:48.867564,2.364057</code></p>
|
||||
",
|
||||
'help_redundancy' => "Redundanz ist die Duplizierung von Informationen im QR-Code, um Fehler während der Dekodierung zu korrigieren. Ein höherer Grad produziert einen größeren QR-Code, aber hat eine bessere Chance, korrekt dekodiert zu werden.",
|
||||
'help_margin' => "Breite des Randes um den QR-Code in Pixel.",
|
||||
'help_size' => "Bildbreite und -höhe in Pixel, ohne den Rand.",
|
||||
|
||||
'button_create' => "Erstellen",
|
||||
'button_download' => "Diesen QR-Code speichern",
|
||||
|
||||
'title_showOnlyQR' => "Nur diesen QR-Code anzeigen",
|
||||
|
||||
'alt_QR_before' => 'QR-Code mit der Bedeutung "',
|
||||
'alt_QR_after' => '"',
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>Was ist ein QR-Code?</h3>
|
||||
Ein QR-Code ist ein zweidimensionaler Barcode, in dem Text in Binärcode geschrieben ist. Er kann mit einem Gerät mit Fotosensor und geeigneter Software dekodiert werden.
|
||||
<a href='https://de.wikipedia.org/wiki/QR-Code' hreflang='de' rel='help external noreferrer'>QR-Code auf Wikipedia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " ist Freie Software, deren <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>Quellcode</a> unter den Bedingungen der <abbr title='GNU Affero General Public License Version 3 oder einer späteren Version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr> verfügbar ist.",
|
||||
|
||||
'error_generation' => "Ein Fehler ist aufgetreten, während der QR-Code generiert wurde. Versuchen Sie es mit anderen Parametern.",
|
||||
);
|
|
@ -1,42 +1,51 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
<?php
|
||||
$loc = array(
|
||||
'subtitle' => "QR codes generator",
|
||||
'description' => "Generate QR codes freely. Choose content, size, colors…",
|
||||
'subtitle' => "QR codes generator",
|
||||
'description' => "Generate QR codes freely. Choose content, size, colors…",
|
||||
|
||||
'label_content' => "Text to encode",
|
||||
'label_redundancy' => "Redundancy rate",
|
||||
'label_margin' => "Margin size",
|
||||
'label_size' => "Image size",
|
||||
'label_bgColor' => "Background color",
|
||||
'label_fgColor' => "Foreground color",
|
||||
'label_content' => "Text to encode",
|
||||
'label_redondancy' => "Redondancy rate",
|
||||
'label_margin' => "Margin size",
|
||||
'label_size' => "Image size",
|
||||
'label_bgColor' => "Background color",
|
||||
'label_mainColor' => "Foreground color",
|
||||
|
||||
'placeholder' => "Enter the text to encode in the QR code",
|
||||
'placeholder' => "Enter the text to encode in the QR code",
|
||||
|
||||
'help_content' => "
|
||||
<p>You can encode whatever text you want.</p>
|
||||
<p>Software decoding these QR codes could suggest to open them with dedicated software, depending on their <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>URI scheme</a>.</p>
|
||||
<p>For instance, to open a webpage: <code>https://www.example/</code></p>
|
||||
<p>To send an email: <code>mailto:contact@email.example</code></p>
|
||||
<p>To share geographic coordinates: <code>geo:48.867564,2.364057</code></p>
|
||||
",
|
||||
'help_redundancy' => "Redundancy is the duplication of information in the QR code to correct errors during decoding. A higher rate will produce a bigger QR code, but will have a better chance of being decoded correctly.",
|
||||
'help_margin' => "Number of pixels in each white band around the QR code.",
|
||||
'help_size' => "Image width and height in pixels, without the margin.",
|
||||
'value_default' => "default",
|
||||
|
||||
'button_create' => "Generate",
|
||||
'button_download' => "Save this QR code",
|
||||
'help_content' => "
|
||||
You can only encode whatever text you want.<br>
|
||||
Softwares which decode these QR codes could suggest to open them with dedicated software, depending on their <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes'>URI scheme</a>.<br><br>
|
||||
For instance, to open a webpage:<br>
|
||||
https://www.domain.tld/<br><br>
|
||||
To send an email:<br>
|
||||
mailto:contact@domain.tld<br><br>
|
||||
To share geographic coordinates:<br>
|
||||
geo:48.867564,2.364057<br><br>
|
||||
To call a phone number:<br>
|
||||
tel:+33639981871
|
||||
",
|
||||
'help_redondancy' => "Redundancy is the duplication of information in the QR code to correct errors during decoding. A higher rate will produce a bigger QR code, but will have a better chance of being decoded correctly.",
|
||||
'help_margin' => "Number of pixels in the white bands around the QR code.",
|
||||
'help_size' => "By how much will the dimensions of the image be multiplied?",
|
||||
|
||||
'title_showOnlyQR' => "Show this QR code only",
|
||||
'button_create' => "Generate",
|
||||
'button_download' => "Download this QR code",
|
||||
|
||||
'alt_QR_before' => 'QR code meaning "',
|
||||
'alt_QR_after' => '"',
|
||||
'title_showOnlyQR' => "Show this QR code only",
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>What's a QR code?</h3>
|
||||
A QR code is a 2 dimensional barcode in which text is written in binary. It can be decoded with a device equipped with a photo sensor and adequate software.
|
||||
<a href='https://en.wikipedia.org/wiki/QR_code' hreflang='en' rel='help external noreferrer'>QR code on Wikipedia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " is free software whose <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>source code</a> is available under the terms of the <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||
'alt_help' => "Help",
|
||||
'alt_QR_before' => 'QR code meaning "',
|
||||
'alt_QR_after' => '"',
|
||||
|
||||
'error_generation' => "An error occurred while generating the QR code. Try with different parameters.",
|
||||
'metaText_qr' => "
|
||||
<h3>What's a QR code?</h3>
|
||||
A QR code is a 2 dimensions barcode in which a text is written in binary. It can be decoded with a device equipped with a photo sensor and an adequate software.
|
||||
<a href='https://en.wikipedia.org/wiki/QR_code'>QR code on Wikipedia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . $libreqrVersion . " is a free software whose <a href='https://code.antopie.org/miraty/libreqr/'>source code</a> is available under the terms of the <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html'>AGPLv3</a>+</abbr>.",
|
||||
|
||||
'opensearch_description' => "Generate QR codes from your search or address bar",
|
||||
'opensearch_actionName' => "Generate QR codes from your search or address bar",
|
||||
);
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
$loc = array(
|
||||
'subtitle' => "QR kode sortzailea",
|
||||
'description' => "Sortu QR kodeak nahieran. Aukeratu edukia, neurria, kolorea…",
|
||||
|
||||
'label_content' => "Kodetzeko testua",
|
||||
'label_redundancy' => "Erredundantzia-tasa",
|
||||
'label_margin' => "Marjinaren tamaina",
|
||||
'label_size' => "Irudiaren neurria",
|
||||
'label_bgColor' => "Hondoaren kolorea",
|
||||
'label_fgColor' => "Kolore nagusia",
|
||||
|
||||
'placeholder' => "Sartu QR kodean kodetzeko testua",
|
||||
|
||||
'help_content' => "
|
||||
<p>Nahi duzun testua kodetu dezakezu.</p>
|
||||
<p>QR kode horiek deskodetzen dituen softwareak software dedikatuarekin irekitzea iradoki lezake, <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>URI eskema</a>ren arabera.</p>
|
||||
<p>Adibidez, webgune bat irekitzeko: <code>https://www.adibidea.eus/</code></p>
|
||||
<p>ePosta bidaltzeko: <code>mailto:lur_axpe@adibidea.eus</code></p>
|
||||
<p>Koordenatu geografikoak partekatzeko: <code>geo:42.895367,-2.167805</code></p>",
|
||||
'help_redundancy' => "Erredundantzia QR kodearen informazioa bikoiztean datza, deskodetzean akatsak zuzentzeko. Tasa altuagoak QR kode handiagoa sortuko du, baina behar bezala deskodetzeko aukera handiagoa izango du.
|
||||
",
|
||||
'help_margin' => "QR kodearen inguruko banda zuriaren pixel kopurua.",
|
||||
'help_size' => "Irudiaren zabalera eta altuera pixeletan, marjinarik gabe.",
|
||||
|
||||
'button_create' => "Sortu",
|
||||
'button_download' => "Gorde QR kodea",
|
||||
|
||||
'title_showOnlyQR' => "Erakutsi QR kode hau bakarrik",
|
||||
|
||||
'alt_QR_before' => 'QR kodearen esanahia "',
|
||||
'alt_QR_after' => '"',
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>Zer da QR kode bat?</h3>
|
||||
QR kodea bi dimentsioko barra-kodea da, testua bitarrean idatzita duena. Argazki-sentsore bat eta software egokia dituen gailu batekin deskodetzen da.
|
||||
<a href='https://eu.wikipedia.org/wiki/QR_kode' hreflang='eu' rel='help external noreferrer'>QR kodea Wikipedian</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " software librea da, eta <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>iturburu-kodea</a> <abbr title='GNU Affero Lizentzia Publiko Orokorraren 3. bertsioaren edo ondorengo edozein bertsio'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>ren arabera dago eskuragarri.",
|
||||
|
||||
'error_generation' => "Errorea gertatu da QR kodea sortzerakoan. Saiatu berriro parametro desberdinak erabiliz.",
|
||||
);
|
|
@ -1,42 +1,51 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
<?php
|
||||
$loc = array(
|
||||
'subtitle' => "Générer des codes QR",
|
||||
'description' => "Générer des codes QR librement. Choix du contenu, de la taille, des couleurs…",
|
||||
'subtitle' => "Générateur de codes QR",
|
||||
'description' => "Générez des codes QR librement. Choisissez le contenu, la taille, les couleurs…",
|
||||
|
||||
'label_content' => "Texte à encoder",
|
||||
'label_redundancy' => "Taux de redondance",
|
||||
'label_margin' => "Taille de la marge",
|
||||
'label_size' => "Taille de l'image",
|
||||
'label_bgColor' => "Couleur de fond",
|
||||
'label_fgColor' => "Couleur de premier plan",
|
||||
'label_content' => "Texte à encoder",
|
||||
'label_redondancy' => "Taux de redondance",
|
||||
'label_margin' => "Taille de la marge",
|
||||
'label_size' => "Taille de l'image",
|
||||
'label_bgColor' => "Couleur de fond",
|
||||
'label_mainColor' => "Couleur de premier plan",
|
||||
|
||||
'placeholder' => "Entrez le texte à encoder dans le code QR",
|
||||
'placeholder' => "Entrez le texte à encoder dans le code QR",
|
||||
|
||||
'help_content' => "
|
||||
<p>Vous pouvez encoder ce que vous voulez sous forme de texte.</p>
|
||||
<p>Les logiciels qui décodent ces codes QR pourraient proposer de les ouvrir avec un logiciel dédié, en fonction de leur <a href='https://fr.wikipedia.org/wiki/Sch%C3%A9ma_d%27URI' hreflang='fr' rel='help external noreferrer'>schéma d'URI</a>.</p>
|
||||
<p>Par exemple, pour ouvrir une page Web : <code>https://www.example/</code></p>
|
||||
<p>Pour envoyer un mail : <code>mailto:contact@email.example</code></p>
|
||||
<p>Pour partager des coordonnées géographique : <code>geo:48.867564,2.364057</code></p>
|
||||
",
|
||||
'help_redundancy' => "La redondance est la duplication des informations dans le code QR afin de corriger les erreurs lors du décodage. Un taux plus élevé produira un code QR plus grand, mais aura plus de chance d'être décodé correctement.",
|
||||
'help_margin' => "Nombre de pixels de chaque bande blanche autour du code QR.",
|
||||
'help_size' => "Largeur et hauteur de l'image en pixels, sans la marge.",
|
||||
'value_default' => "par défaut",
|
||||
|
||||
'button_create' => "Générer",
|
||||
'button_download' => "Enregistrer ce code QR",
|
||||
'help_content' => "
|
||||
Vous pouvez encoder ce que vous voulez sous forme de texte.<br>
|
||||
Les logiciels qui décodent ces codes QR pourraient proposer de les ouvrir avec un logiciel dédié, en fonction de leur <a href='https://fr.wikipedia.org/wiki/Sch%C3%A9ma_d%27URI'>schéma d'URI</a>.<br><br>
|
||||
Par exemple, pour ouvrir une page Web :<br>
|
||||
https://www.domaine.tld/<br><br>
|
||||
Pour envoyer un mail :<br>
|
||||
mailto:contact@domaine.tld<br><br>
|
||||
Pour partager des coordonnées géographique :<br>
|
||||
geo:48.867564,2.364057<br><br>
|
||||
Pour appeler un numéro de téléphone :<br>
|
||||
tel:+33639981871
|
||||
",
|
||||
'help_redondancy' => "La redondance est la duplication des informations dans le code QR afin de corriger les erreurs lors du décodage. Un taux plus élevé produira un code QR plus grand, mais aura plus de chance d'être décodé correctement.",
|
||||
'help_margin' => "Nombre de pixels des bandes blanches autour du code QR.",
|
||||
'help_size' => "Par combien les dimensions de l'image seront-elles multipliées ?",
|
||||
|
||||
'title_showOnlyQR' => "Afficher uniquement ce code QR",
|
||||
'button_create' => "Générer",
|
||||
'button_download' => "Télécharger ce code QR",
|
||||
|
||||
'alt_QR_before' => "Code QR signifiant « ",
|
||||
'alt_QR_after' => " »",
|
||||
'title_showOnlyQR' => "Afficher uniquement ce code QR",
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>Qu'est-ce qu'un code QR ?</h3>
|
||||
Un code QR est un code-barres en 2 dimensions dans lequel du texte est inscrit en binaire. Il peut être décodé avec un appareil muni d'un capteur photo et d'un logiciel adéquat.
|
||||
<a href='https://fr.wikipedia.org/wiki/Code_QR' hreflang='fr' rel='help external noreferrer'>Code QR sur Wikipédia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " est un logiciel libre dont le <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>code source</a> est disponible selon les termes de l'<abbr title='GNU Affero General Public License version 3 ou toute version ultérieure'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||
'alt_help' => "Aide",
|
||||
'alt_QR_before' => "Code QR signifiant « ",
|
||||
'alt_QR_after' => " »",
|
||||
|
||||
'error_generation' => "Une erreur a eu lieu lors de la génération du code QR. Essayez avec des paramètres différents.",
|
||||
'metaText_qr' => "
|
||||
<h3>Qu'est-ce qu'un code QR ?</h3>
|
||||
Un code QR est un code-barres en 2 dimensions dans lequel du texte est inscrit en binaire. Il peut être décodé avec un appareil muni d'un capteur photo et d'un logiciel adéquat.
|
||||
<a href='https://fr.wikipedia.org/wiki/Code_QR'>Code QR sur Wikipédia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . $libreqrVersion . " est un logiciel libre dont le <a href='https://code.antopie.org/miraty/libreqr/'>code source</a> est disponible selon les termes de l'<abbr title='GNU Affero General Public License version 3 ou toute version ultérieure'><a href='LICENSE.html'>AGPLv3</a>+</abbr>.",
|
||||
|
||||
'opensearch_description' => "Générez des codes QR depuis votre barre de recherche ou d'adresse",
|
||||
'opensearch_actionName' => "Générez des codes QR depuis votre barre de recherche ou d'adresse",
|
||||
);
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
$loc = array(
|
||||
'subtitle' => "Pembuat kode QR",
|
||||
'description' => "Membuat kode QR dengan bebas. Pilih konten, ukuran warna, ...",
|
||||
|
||||
'label_content' => "Teks untuk dienkode",
|
||||
'label_redundancy' => "Tingkat redundansi",
|
||||
'label_margin' => "Ukuran tepi",
|
||||
'label_size' => "Ukuran gambar",
|
||||
'label_bgColor' => "Warna latar belakang",
|
||||
'label_fgColor' => "Warna latar depan",
|
||||
|
||||
'placeholder' => "Masukkan teks untuk dienkode di kode QR",
|
||||
|
||||
'help_content' => "
|
||||
<p>Anda bisa mengenkode teks apa pun.</p>
|
||||
<p>Perangkat lunak yang mendekodekan kode QR tersebut bisa memberikan pilihan untuk membuka dengan perangkat lunak tertentu, tergantung pada <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>Skema URI</a> mereka.</p>
|
||||
<p>Contohnya, untuk membuka halaman situs: <code>https://www.contoh.id/</code></p>
|
||||
<p>Untuk mengirim surel: <code>mailto:contact@email.example</code></p>
|
||||
<p>Untuk membagikan koordinat geografik: <code>geo:48.867564,2.364057</code></p>
|
||||
",
|
||||
'help_redundancy' => "Redundansi adalah duplikasi informasi di kode QR untuk memperbaiki galat saat pendekodean. Tingkat lebih besar akan menghasilkan kode QR yang lebih besar, tetapi akan dapat hasil lebih baik untuk didekodekan dengan benar.",
|
||||
'help_margin' => "Jumlah piksel di tepi putih di sekitar kode QR.",
|
||||
'help_size' => "Tinggi dan lebar gambar dalam piksel, tanpa tepian.",
|
||||
|
||||
'button_create' => "Buat",
|
||||
'button_download' => "Simpan kode QR ini",
|
||||
|
||||
'title_showOnlyQR' => "Tampilkan kode QR ini saja",
|
||||
|
||||
'alt_QR_before' => 'Arti kode QR "',
|
||||
'alt_QR_after' => '"',
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>Apa itu Kode QR?</h3>
|
||||
Kode QR adalah kode batang 2 dimensi yang mana teks ditulis dalam biner. Bisa didekodekan dengan perangkat yang memiliki sensor foto dan perangkat lunak yang memadai.
|
||||
<a href='https://id.wikipedia.org/wiki/Kode_QR' hreflang='id' rel='help external noreferrer'>Kode QR di Wikipedia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " adalah perangkat lunak bebas yang <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>kode sumber</a> tersedia di bawah ketentuan <abbr title='GNU Affero General Public License versi 3 atau selanjutnya version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||
|
||||
'error_generation' => "Galat terjadi ketika membuat kode QR. Coba dengan parameter yang berbeda.",
|
||||
);
|
|
@ -1,42 +0,0 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
$loc = array(
|
||||
'subtitle' => "Generator de còdis QR",
|
||||
'description' => "Generatz de còdis QR liurament. Causissètz lo contengut, la talha, las colors…",
|
||||
|
||||
'label_content' => "Tèxt de codar",
|
||||
'label_redundancy' => "Taus de redondància",
|
||||
'label_margin' => "Talha del marge",
|
||||
'label_size' => "Talha de l’imatge",
|
||||
'label_bgColor' => "Color de fons",
|
||||
'label_fgColor' => "Color del primièr plan",
|
||||
|
||||
'placeholder' => "Dintratz lo tèxt de codar en còdi QR",
|
||||
|
||||
'help_content' => "
|
||||
<p>Podètz pas que codar lo tèxt que volètz.</p>
|
||||
<p>Los logicials que deschifran los còdis QR poirián suggerir de los dubrir dins de logicials especials, segon lor <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>esquèma URI</a>.</p>
|
||||
<p>Per exemple, per dubrir la pagina web : https://www.example/</p>
|
||||
<p>Per enviar un corrièl : mailto:contact@email.example</p>
|
||||
<p>Per partejar de coordonadas geograficas : geo:48.867564,2.364057</p>
|
||||
",
|
||||
'help_redundancy' => "La redondància es la duplicacion de las informacions al còdi QR per dire de corregir las errors pendent lo deschiframent. Un taux mai naut produirà un còdi mai grand, mas serà de melhor deschifrar corrèctament.",
|
||||
'help_margin' => "Nombre de pixèls de la banda blanca a l’entorn del còdi QR.",
|
||||
'help_size' => "Per quant deu la dimensions de l’imatge èsser multiplicada ?",
|
||||
|
||||
'button_create' => "Generar",
|
||||
'button_download' => "Telecargar aqueste còdi QR",
|
||||
|
||||
'title_showOnlyQR' => "Mostrar sonque aqueste còdi QR",
|
||||
|
||||
'alt_QR_before' => 'Significacion de còdi QR"',
|
||||
'alt_QR_after' => '"',
|
||||
|
||||
'metaText_qr' => "
|
||||
<h3>Qu’es aquò un còdi QR ?</h3>
|
||||
Un còdi QR es un còdi de barras en doas dimensions dins lo qual lo tèxt es escrich en binari. Un aparalh equipat d’un capteur optic pòt lo deschifrar, amb l’aplicacion que cal.
|
||||
<a lang='ca' href='https://ca.wikipedia.org/wiki/Codi_QR' hreflang='ca' rel='help external noreferrer'>Còdi QR a la Wikipèdia</a>.
|
||||
",
|
||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " es un logicial liure que son <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>còdi font</a> es disponible jols tèrmes de la licéncia <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||
|
||||
'error_generation' => "An error occurred while generating the QR code. Try with different parameters.",
|
||||
);
|
|
@ -1,34 +1,36 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
<?php
|
||||
$loc = array(
|
||||
'subtitle' => "subtitle",
|
||||
'description' => "description",
|
||||
'subtitle' => "subtitle",
|
||||
'description' => "description",
|
||||
|
||||
'label_content' => "label_content",
|
||||
'label_redundancy' => "label_redundancy",
|
||||
'label_margin' => "label_margin",
|
||||
'label_size' => "label_size",
|
||||
'label_bgColor' => "label_bgColor",
|
||||
'label_fgColor' => "label_fgColor",
|
||||
'label_content' => "label_content",
|
||||
'label_redondancy' => "label_redondancy",
|
||||
'label_margin' => "label_margin",
|
||||
'label_size' => "label_size",
|
||||
'label_bgColor' => "label_bgColor",
|
||||
'label_mainColor' => "label_mainColor",
|
||||
|
||||
'placeholder' => "placeholder",
|
||||
'placeholder' => "placeholder",
|
||||
|
||||
'value_default' => "value_default",
|
||||
'value_default' => "value_default",
|
||||
|
||||
'help_content' => "help_content",
|
||||
'help_redundancy' => "help_redundancy",
|
||||
'help_margin' => "help_margin",
|
||||
'help_size' => "help_size",
|
||||
'help_content' => "help_content",
|
||||
'help_redondancy' => "help_redondancy",
|
||||
'help_margin' => "help_margin",
|
||||
'help_size' => "help_size",
|
||||
|
||||
'button_create' => "button_create",
|
||||
'button_download' => "button_download",
|
||||
'button_create' => "button_create",
|
||||
'button_download' => "button_download",
|
||||
|
||||
'title_showOnlyQR' => "title_showOnlyQR",
|
||||
'title_showOnlyQR' => "title_showOnlyQR",
|
||||
|
||||
'alt_QR_before' => "alt_QR_before",
|
||||
'alt_QR_after' => "alt_QR_after",
|
||||
'alt_help' => "alt_help",
|
||||
'alt_QR_before' => "alt_QR_before",
|
||||
'alt_QR_after' => "alt_QR_after",
|
||||
|
||||
'metaText_qr' => "metaText_qr",
|
||||
'metaText_legal' => "metaText_legal",
|
||||
'metaText_qr' => "metaText_qr",
|
||||
'metaText_legal' => "metaText_legal",
|
||||
|
||||
'error_generation' => "error_generation",
|
||||
'opensearch_description' => "opensearch_description",
|
||||
'opensearch_actionName' => "opensearch_actionName",
|
||||
);
|
||||
|
|
29
manifest.php
Executable file
|
@ -0,0 +1,29 @@
|
|||
<?php require "inc.php"; ?>
|
||||
{
|
||||
"dir": "ltr",
|
||||
"lang": "<?= $locale ?>",
|
||||
"name": "LibreQR",
|
||||
"short_name": "LibreQR",
|
||||
"description": "<?= $loc['subtitle'] ?>",
|
||||
"start_url": "<?= $rootPath; ?>",
|
||||
"scope": "<?= $rootPath; ?>",
|
||||
"display": "standalone",
|
||||
"theme_color": "<?= $variablesTheme["bg"]; ?>",
|
||||
"background_color": "<?= $variablesTheme["bg"]; ?>",
|
||||
"orientation": "portrait",
|
||||
"icons":
|
||||
[
|
||||
<?php for ($i = 0; $i < (count($themeDimensionsIcons) - 1); $i++) { ?>
|
||||
{
|
||||
"src": "themes/<?= $theme; ?>/icons/<?= $themeDimensionsIcons[$i]; ?>.png",
|
||||
"sizes": "<?= $themeDimensionsIcons[$i]; ?>x<?= $themeDimensionsIcons[$i]; ?>",
|
||||
"type": "image/png"
|
||||
},
|
||||
<?php } ?>
|
||||
{
|
||||
"src": "themes/<?= $theme; ?>/icons/<?= $themeDimensionsIcons[$i]; ?>.png",
|
||||
"sizes": "<?= $themeDimensionsIcons[$i]; ?>x<?= $themeDimensionsIcons[$i]; ?>",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
34
opensearch.php
Executable file
|
@ -0,0 +1,34 @@
|
|||
<?php require "inc.php"; ?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
||||
<ShortName>LibreQR</ShortName>
|
||||
<Description><?= $loc['opensearch_actionName'] ?></Description>
|
||||
<?php
|
||||
foreach($themeDimensionsIcons as $dimIcon) {
|
||||
echo ' <Image height="' . $dimIcon . '" width="' . $dimIcon . '" type="image/png">' . $rootPath . 'themes/' . $theme . '/icons/' . $dimIcon . '.png</Image>' . "\n";
|
||||
} ?>
|
||||
<Language>*</Language>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<?php
|
||||
$redondancy = htmlspecialchars((isset($_GET['redondancy'])) ? $_GET['redondancy'] : 'H');
|
||||
$margin = htmlspecialchars((isset($_GET['margin'])) ? $_GET['margin'] : '2');
|
||||
$size = htmlspecialchars((isset($_GET['size'])) ? $_GET['size'] : '4');
|
||||
$bgColor = htmlspecialchars(urlencode((isset($_GET['bgColor'])) ? $_GET['bgColor'] : '%23FFFFFF'));
|
||||
$mainColor = htmlspecialchars(urlencode((isset($_GET['mainColor'])) ? $_GET['mainColor'] : '%23000000'));
|
||||
?>
|
||||
<Url type="text/html" template="<?= $rootPath; ?>">
|
||||
<Param name="txt" value="{searchTerms}"/>
|
||||
<Param name="redondancy" value="<?= $redondancy ?>"/>
|
||||
<Param name="margin" value="<?= $margin ?>"/>
|
||||
<Param name="size" value="<?= $size ?>"/>
|
||||
<Param name="bgColor" value="<?= $bgColor ?>"/>
|
||||
<Param name="mainColor" value="<?= $mainColor ?>"/>
|
||||
</Url>
|
||||
<Url type="application/opensearchdescription+xml" rel="self" template="<?= $rootPath; ?>opensearch.php">
|
||||
<Param name="redondancy" value="<?= $redondancy ?>"/>
|
||||
<Param name="margin" value="<?= $margin ?>"/>
|
||||
<Param name="size" value="<?= $size ?>"/>
|
||||
<Param name="bgColor" value="<?= $bgColor ?>"/>
|
||||
<Param name="mainColor" value="<?= $mainColor ?>"/>
|
||||
</Url>
|
||||
</OpenSearchDescription>
|
3625
phpqrcode.php
Executable file
646
style.less
|
@ -1,461 +1,371 @@
|
|||
// This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
/*
|
||||
|
||||
@light: ~"(prefers-color-scheme: light)";
|
||||
@dark: ~"(prefers-color-scheme: dark)";
|
||||
@import "themes/@{theme}/logo.less";
|
||||
Ce fichier fait partie de LibreQR.
|
||||
|
||||
:root {
|
||||
@media @light {
|
||||
color-scheme: light;
|
||||
}
|
||||
@media @dark {
|
||||
color-scheme: dark;
|
||||
}
|
||||
}
|
||||
LibreQR est un logiciel libre ; vous pouvez le redistribuer ou le modifier
|
||||
suivant les termes de la GNU Affero General Public License
|
||||
telle que publiée par la Free Software Foundation ; soit la version 3
|
||||
de la licence, soit (à votre gré) toute version ultérieure.
|
||||
|
||||
LibreQR est distribué dans l'espoir qu'il sera utile,
|
||||
mais SANS AUCUNE GARANTIE ; sans même la garantie tacite de
|
||||
QUALITÉ MARCHANDE ou d'ADÉQUATION à UN BUT PARTICULIER.
|
||||
Consultez la GNU Affero General Public License pour plus de détails.
|
||||
|
||||
Vous devez avoir reçu une copie de la GNU Affero General Public License
|
||||
en même temps que LibreQR ; si ce n'est pas le cas,
|
||||
consultez <https://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
|
||||
* {
|
||||
font-family: system-ui, sans-serif;
|
||||
|
||||
scrollbar-width: auto;
|
||||
|
||||
@media @light {
|
||||
scrollbar-color: @text-light @bg-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
scrollbar-color: @text-dark @bg-dark;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
max-width: 812px;
|
||||
height: 100%;
|
||||
|
||||
margin: 0px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
font-weight: normal;
|
||||
font-size: 20px;
|
||||
|
||||
@media @light {
|
||||
color: @text-light;
|
||||
background-color: @bg-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @text-dark;
|
||||
background-color: @bg-dark;
|
||||
}
|
||||
font-family: "Ubuntu", sans-serif;
|
||||
scrollbar-color: @text @bg;
|
||||
scrollbar-width: auto;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
color: @text;
|
||||
text-decoration: underline;
|
||||
|
||||
@media @light {
|
||||
color: @text-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @text-dark;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: monospace;
|
||||
p {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.helpText {
|
||||
margin: 5px 0px 0px 0px;
|
||||
padding: 5px;
|
||||
border-radius: 10px;
|
||||
border-width: 2px;
|
||||
border-style: dashed;
|
||||
text-align: left;
|
||||
|
||||
@media @light {
|
||||
background-color: @bgHelp-light;
|
||||
border-color: @borderHelp-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
background-color: @bgHelp-dark;
|
||||
border-color: @borderHelp-dark;
|
||||
}
|
||||
|
||||
& p {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 8px;
|
||||
&:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
#firstWrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#sideParams {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
& .param {
|
||||
max-width: 270px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
summary {
|
||||
margin-left: 20px;
|
||||
cursor: help;
|
||||
#menusDeroulants {
|
||||
text-align: center;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#qrCode {
|
||||
max-width: 94%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
|
||||
@width: 2px;
|
||||
@lenght: 16px;
|
||||
padding: @width;
|
||||
|
||||
&.needLightContrast {
|
||||
@media @light {
|
||||
background:
|
||||
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 0,
|
||||
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 100%,
|
||||
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 0,
|
||||
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 100%,
|
||||
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 0 0,
|
||||
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 100% 0,
|
||||
linear-gradient(to top, @borderQr-light @width, transparent 0px) 0 100%,
|
||||
linear-gradient(to top, @borderQr-light @width, transparent 0px) 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-size: @lenght @lenght;
|
||||
}
|
||||
}
|
||||
|
||||
&.needDarkContrast {
|
||||
@media @dark {
|
||||
background:
|
||||
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 0,
|
||||
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 100%,
|
||||
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 0,
|
||||
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 100%,
|
||||
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 0 0,
|
||||
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 100% 0,
|
||||
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 0 100%,
|
||||
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-size: @lenght @lenght;
|
||||
}
|
||||
}
|
||||
max-width: 480px;
|
||||
}
|
||||
|
||||
.centered {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 3px 10px 3px 10px;
|
||||
text-decoration: none;
|
||||
padding: 3px 10px 3px 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
form {
|
||||
flex-grow: 1;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
main {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 814px;
|
||||
height: 99%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 18px;
|
||||
background-color: @bg;
|
||||
color: @text;
|
||||
font-weight: normal;
|
||||
font-size: 20px;
|
||||
height: 99%;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 97%;
|
||||
}
|
||||
|
||||
header {
|
||||
text-align: center;
|
||||
padding-top: 12px;
|
||||
height: 64px;
|
||||
text-align: center;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
height: 64px;
|
||||
}
|
||||
|
||||
#linkTitles::before {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
content: "";
|
||||
|
||||
background-repeat: no-repeat;
|
||||
@media @light {
|
||||
background-image: var(--logo-light);
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
background-image: var(--logo-dark);
|
||||
}
|
||||
#logo {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
}
|
||||
|
||||
#titles {
|
||||
margin-left: 2%;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0px;
|
||||
font-weight: normal;
|
||||
margin: 0px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 29px;
|
||||
font-size: 33px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 22px;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
#linkTitles {
|
||||
text-align: left;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#downloadQR {
|
||||
margin-top: 20px;
|
||||
text-align: left;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#showOnlyQR {
|
||||
margin-top: 30px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.param {
|
||||
padding: 4px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding: 10px;
|
||||
padding-left: 0px;
|
||||
margin-left: 0px;
|
||||
padding-right: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.inputColorContainer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
::selection {
|
||||
|
||||
@media @light {
|
||||
color: @bg-light;
|
||||
background-color: @text-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @bg-dark;
|
||||
background-color: @text-dark;
|
||||
}
|
||||
color: @bg;
|
||||
background-color: @text;
|
||||
}
|
||||
|
||||
label[for=txt] summary {
|
||||
margin-left: 22px;
|
||||
label[for=txt] {
|
||||
padding-left: 22px;
|
||||
}
|
||||
|
||||
#colors {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
flex-wrap: wrap;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
text-align: center;
|
||||
|
||||
& .param {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
& .param {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.metaText {
|
||||
padding: 6px;
|
||||
@media @light {
|
||||
color: @text-light;
|
||||
}
|
||||
color: @secondaryText;
|
||||
transition: color 0.12s cubic-bezier(0.42, 0.0, 1.0, 1.0);
|
||||
padding: 6px;
|
||||
|
||||
@media @dark {
|
||||
color: @text-dark;
|
||||
}
|
||||
& a, a:visited {
|
||||
transition: color 0.12s cubic-bezier(0.42, 0.0, 1.0, 1.0);
|
||||
color: @secondaryText;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
& a, a:visited {
|
||||
text-decoration: underline;
|
||||
@media @light {
|
||||
color: @text-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @text-dark;
|
||||
}
|
||||
}
|
||||
&:hover, &:hover a {
|
||||
color: @text;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: 16px;
|
||||
margin-top: auto;
|
||||
padding-top: 10px;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
padding-top: 20px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 14px;
|
||||
header, footer {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
#info {
|
||||
font-size: 16px;
|
||||
margin: 0px;
|
||||
font-size: 16px;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
margin: 0px;
|
||||
|
||||
& h3 {
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
& h3 {
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inputs */
|
||||
|
||||
#redundancy, #margin, #txt, #size, input[type=color], input[type=submit], .button {
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-radius: 10px;
|
||||
font-size: 20px;
|
||||
padding-left: 10px;
|
||||
font-weight: normal;
|
||||
transition: border-color 0.1s ease;
|
||||
margin: 6px;
|
||||
#redondancy, #margin, #txt, #size, input[type=color], input[type=submit], .button {
|
||||
border: 2px @border solid;
|
||||
border-radius: 10px;
|
||||
font-size: 20px;
|
||||
padding-left: 10px;
|
||||
font-weight: normal;
|
||||
color: @text;
|
||||
transition: border 0.1s linear;
|
||||
background-color: @bgField;
|
||||
margin-top: 8px;
|
||||
|
||||
@media @light {
|
||||
color: @text-light;
|
||||
background-color: @bgField-light;
|
||||
border-color: @border-light;
|
||||
}
|
||||
&:hover {
|
||||
border: 2px @borderHover solid;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @text-dark;
|
||||
background-color: @bgField-dark;
|
||||
border-color: @border-dark;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border-width: 3px;
|
||||
margin: 5px;
|
||||
border-style: solid;
|
||||
|
||||
@media @light {
|
||||
border-color: @borderHover-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
border-color: @borderHover-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border-width: 4px;
|
||||
margin: 4px;
|
||||
border-style: solid;
|
||||
outline: none;
|
||||
|
||||
@media @light {
|
||||
border-color: @borderFocus-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
border-color: @borderFocus-dark;
|
||||
}
|
||||
}
|
||||
&:focus {
|
||||
border: 2px @borderFocus solid;
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
#redundancy {
|
||||
width: 250px;
|
||||
height: 44px;
|
||||
&:hover {
|
||||
width: 252px;
|
||||
height: 46px;
|
||||
}
|
||||
&:focus {
|
||||
width: 254px;
|
||||
height: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type=color] {
|
||||
height: 60px;
|
||||
width: 84px;
|
||||
padding: 5px;
|
||||
&:hover {
|
||||
height: 62px;
|
||||
width: 86px;
|
||||
}
|
||||
&:focus {
|
||||
height: 64px;
|
||||
width: 88px;
|
||||
}
|
||||
}
|
||||
|
||||
#size, #margin {
|
||||
width: 234px;
|
||||
height: 38px;
|
||||
}
|
||||
|
||||
#redundancy, #size, #margin {
|
||||
|
||||
@media @light {
|
||||
background-color: @bgField-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
background-color: @bgField-dark;
|
||||
}
|
||||
}
|
||||
|
||||
#txtParam {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
#redondancy, #size, #margin {
|
||||
background-color: @bgField;
|
||||
width: 250px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#txt {
|
||||
padding: 10px;
|
||||
width: auto;
|
||||
scrollbar-width: auto;
|
||||
|
||||
@media @light {
|
||||
background-color: @bgTextarea-light;
|
||||
color: @textareaText-light;
|
||||
scrollbar-color: @textareaText-light @bgTextarea-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
background-color: @bgTextarea-dark;
|
||||
color: @textareaText-dark;
|
||||
scrollbar-color: @textareaText-dark @bgTextarea-dark;
|
||||
}
|
||||
background-color: @bgTextField;
|
||||
color: @text;
|
||||
padding: 10px;
|
||||
margin: 10px;
|
||||
width: 500px;
|
||||
scrollbar-color: @text @bgTextField;
|
||||
scrollbar-width: auto;
|
||||
}
|
||||
|
||||
input[type=submit] {
|
||||
cursor: pointer;
|
||||
font-size: 28px;
|
||||
padding: 10px;
|
||||
padding-left: 14px;
|
||||
padding-right: 14px;
|
||||
font-size: 28px;
|
||||
padding: 10px;
|
||||
padding-left: 14px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
|
||||
#txt::placeholder {
|
||||
opacity: 1;
|
||||
font-family: system-ui, sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 1em;
|
||||
@media @light {
|
||||
color: @textareaPlaceholder-light;
|
||||
}
|
||||
|
||||
@media @dark {
|
||||
color: @textareaPlaceholder-dark;
|
||||
}
|
||||
color: @secondaryText;
|
||||
opacity: 1;
|
||||
font-family: "Ubuntu", sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
a[download]::before {
|
||||
content: "💾 ";
|
||||
|
||||
filter:
|
||||
drop-shadow(-1px 1px 1px white)
|
||||
drop-shadow(1px -1px 1px white);
|
||||
input[type=color] {
|
||||
height: 60px;
|
||||
width: 84px;
|
||||
padding: 5px;
|
||||
border: 2px @border solid;
|
||||
}
|
||||
|
||||
/* Help message */
|
||||
|
||||
.helpImg {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
margin-bottom: -3px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.helpButton {
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
color: @secondaryText;
|
||||
cursor: help;
|
||||
font-size: 0.8em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.helpContainer {
|
||||
display: inline-block;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.helpContent {
|
||||
position: absolute;
|
||||
transform: scale(0) rotate(-12deg);
|
||||
color: @text;
|
||||
background: @bgHelp;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.5);
|
||||
margin-top: 23px;
|
||||
margin-left: -35px;
|
||||
transition: all .25s;
|
||||
opacity: 0;
|
||||
max-width: 500px;
|
||||
font-size: 20px;
|
||||
text-align: left;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
position: fixed;
|
||||
margin: 5px;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.helpContainer:hover .helpContent, .helpContainer:focus-within .helpContent {
|
||||
transform: scale(1) rotate(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Media queries */
|
||||
|
||||
@media (max-width: 850px) {
|
||||
|
||||
main {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#firstWrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#txt {
|
||||
width: 92%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 500px) { // Mobile version
|
||||
|
||||
#colors {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
#txt {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
#qrCode {
|
||||
max-width: 94%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 415px) {
|
||||
|
||||
h1 {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
1
temp/.gitkeep
Executable file
|
@ -0,0 +1 @@
|
|||
|
BIN
themes/dark/icons/128.png
Executable file
After Width: | Height: | Size: 207 B |
BIN
themes/dark/icons/16.png
Executable file
After Width: | Height: | Size: 163 B |
BIN
themes/dark/icons/192.png
Executable file
After Width: | Height: | Size: 249 B |
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 246 B |
BIN
themes/dark/icons/32.png
Executable file
After Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 264 B After Width: | Height: | Size: 293 B |
BIN
themes/dark/icons/48.png
Executable file
After Width: | Height: | Size: 217 B |
BIN
themes/dark/icons/512.png
Executable file
After Width: | Height: | Size: 354 B |
BIN
themes/dark/icons/64.png
Executable file
After Width: | Height: | Size: 198 B |
BIN
themes/dark/icons/96.png
Executable file
After Width: | Height: | Size: 231 B |
BIN
themes/dark/icons/source.png
Executable file
After Width: | Height: | Size: 6.2 KiB |
15
themes/dark/theme.php
Executable file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512); // Liste les dimensions des icones
|
||||
|
||||
$variablesTheme = array(
|
||||
"bg" => "#2a2a2a",
|
||||
"bgField" => "#31363B",
|
||||
"bgTextField" => "#232629",
|
||||
"bgHelp" => "#151616",
|
||||
"border" => "#5f5f5f",
|
||||
"borderHover" => "#808080",
|
||||
"borderFocus" => "white",
|
||||
"text" => "white",
|
||||
"secondaryText" => "#bababa"
|
||||
); // Définit les couleurs du thème
|
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 134 B |
Before Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 158 B |
Before Width: | Height: | Size: 188 B |
Before Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 169 B |
Before Width: | Height: | Size: 202 B |
Before Width: | Height: | Size: 727 B |
|
@ -1,259 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg height="16" width="16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<rect fill="#000" height="1" width="1" x="0" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="1" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="5" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="0" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="1" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="1" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="1" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="11" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="1" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="1" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="1" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="2" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="2" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="2" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="2" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="2" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="2" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="3" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="3" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="4" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="4" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="6" y="5" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="5" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="11" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="5" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="5" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="5" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="1" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="5" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="6" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="6" />
|
||||
<rect fill="#fff" height="1" width="1" x="11" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="6" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="6" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="6" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="7" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="7" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="1" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="5" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="8" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="8" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="1" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="9" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="9" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="5" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="9" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="9" />
|
||||
<rect fill="#fff" height="1" width="1" x="11" y="9" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="9" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="6" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="10" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="10" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="6" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="11" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="11" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="6" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="10" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="12" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="12" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="7" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="8" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="9" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="12" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="13" y="13" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="13" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="1" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="2" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="3" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="4" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="5" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="11" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="14" />
|
||||
<rect fill="#fff" height="1" width="1" x="14" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="14" />
|
||||
<rect fill="#000" height="1" width="1" x="0" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="1" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="2" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="3" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="4" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="5" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="6" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="7" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="8" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="9" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="10" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="11" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="12" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="13" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="14" y="15" />
|
||||
<rect fill="#000" height="1" width="1" x="15" y="15" />
|
||||
</svg>
|
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 169 B |
Before Width: | Height: | Size: 163 B |
|
@ -1,7 +0,0 @@
|
|||
|
||||
:root {
|
||||
// base64 -w 0 logo-light.png
|
||||
--logo-light: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAWElEQVQoz43O0RHAMAgCUDZg/y3ZgKJtP8PF/LzkiApcFG3IVgVICB0cqCPH368jMvCffsLuPWMLmOQ+FMBxNqvgXCZ8xixGsSNppWsF33hFaLjD27Xioh5ZH8ftcymlGAAAAABJRU5ErkJggg==");
|
||||
// base64 -w 0 logo-dark.png
|
||||
--logo-dark: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAXklEQVQoz43SsRHAIAxDUW3g/bfUBoqckDL/AgWvMFgcKGcIYCkjDSJ2JgwvhhFHZ9cn2vDt/oUNvkcS3MpNRuh0ew6iyyYjbDCPGa2+WxL8lCN6vZYy+nBxED/+xgWM9DYk64ncIgAAAABJRU5ErkJggg==");
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
|
||||
// List icons dimensions
|
||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512);
|
||||
|
||||
$colorScheme = array(
|
||||
// Light theme
|
||||
"text-light" => "black",
|
||||
"bg-light" => "#ffffff", // Must be a long hexadecimal color
|
||||
"bgField-light" => "white",
|
||||
"bgHelp-light" => "white",
|
||||
"bgTextarea-light" => "white",
|
||||
"textareaText-light" => "black",
|
||||
"textareaPlaceholder-light" => "#868686",
|
||||
"border-light" => "black",
|
||||
"borderHover-light" => "black",
|
||||
"borderFocus-light" => "black",
|
||||
"borderHelp-light" => "black",
|
||||
"borderQr-light" => "black",
|
||||
// Dark theme
|
||||
"text-dark" => "white",
|
||||
"bg-dark" => "#000000", // Must be a long hexadecimal color
|
||||
"bgField-dark" => "#000000",
|
||||
"bgHelp-dark" => "#000000",
|
||||
"bgTextarea-dark" => "#000000",
|
||||
"textareaText-dark" => "white",
|
||||
"textareaPlaceholder-dark" => "#bababa",
|
||||
"border-dark" => "white",
|
||||
"borderWidth-dark" => "2px",
|
||||
"borderHover-dark" => "white",
|
||||
"borderHoverWidth-dark" => "3px",
|
||||
"borderFocus-dark" => "white",
|
||||
"borderFocusWidth-dark" => "4px",
|
||||
"borderHelp-dark" => "white",
|
||||
"borderQr-dark" => "white",
|
||||
);
|
BIN
themes/light/icons/128.png
Executable file
After Width: | Height: | Size: 209 B |
BIN
themes/light/icons/16.png
Executable file
After Width: | Height: | Size: 159 B |
BIN
themes/light/icons/192.png
Executable file
After Width: | Height: | Size: 242 B |
BIN
themes/light/icons/256.png
Executable file
After Width: | Height: | Size: 242 B |
BIN
themes/light/icons/32.png
Executable file
After Width: | Height: | Size: 183 B |
BIN
themes/light/icons/384.png
Executable file
After Width: | Height: | Size: 287 B |
BIN
themes/light/icons/48.png
Executable file
After Width: | Height: | Size: 214 B |
BIN
themes/light/icons/512.png
Executable file
After Width: | Height: | Size: 335 B |
BIN
themes/light/icons/64.png
Executable file
After Width: | Height: | Size: 192 B |
BIN
themes/light/icons/96.png
Executable file
After Width: | Height: | Size: 226 B |
BIN
themes/light/icons/source.png
Executable file
After Width: | Height: | Size: 6.2 KiB |
15
themes/light/theme.php
Executable file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512); // Liste les dimensions des icones
|
||||
|
||||
$variablesTheme = array(
|
||||
"bg" => "white",
|
||||
"bgField" => "#eeeeee",
|
||||
"bgTextField" => "#e5e5e5",
|
||||
"bgHelp" => "#ececec",
|
||||
"border" => "#65666b",
|
||||
"borderHover" => "#46484e",
|
||||
"borderFocus" => "#2a2a2a",
|
||||
"text" => "#2a2a2a",
|
||||
"secondaryText" => "#868686"
|
||||
); // Définit les couleurs du thème
|
BIN
themes/parinux/icons/128.png
Executable file
After Width: | Height: | Size: 207 B |
BIN
themes/parinux/icons/16.png
Executable file
After Width: | Height: | Size: 163 B |
BIN
themes/parinux/icons/192.png
Executable file
After Width: | Height: | Size: 249 B |
BIN
themes/parinux/icons/256.png
Executable file
After Width: | Height: | Size: 246 B |
BIN
themes/parinux/icons/32.png
Executable file
After Width: | Height: | Size: 187 B |
BIN
themes/parinux/icons/384.png
Executable file
After Width: | Height: | Size: 293 B |
BIN
themes/parinux/icons/48.png
Executable file
After Width: | Height: | Size: 217 B |
BIN
themes/parinux/icons/512.png
Executable file
After Width: | Height: | Size: 354 B |
BIN
themes/parinux/icons/64.png
Executable file
After Width: | Height: | Size: 198 B |
BIN
themes/parinux/icons/96.png
Executable file
After Width: | Height: | Size: 231 B |
BIN
themes/parinux/icons/source.png
Executable file
After Width: | Height: | Size: 6.3 KiB |
15
themes/parinux/theme.php
Executable file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512); // Liste les dimensions des icones
|
||||
|
||||
$variablesTheme = array(
|
||||
"bg" => "#14678b",
|
||||
"bgField" => "#2186b1",
|
||||
"bgTextField" => "#2186b1",
|
||||
"bgHelp" => "#118abe",
|
||||
"border" => "#42a0c8",
|
||||
"borderHover" => "#87d1f1",
|
||||
"borderFocus" => "#e2f6ff",
|
||||
"text" => "#ffffff",
|
||||
"secondaryText" => "#bbe1f1"
|
||||
); // Définit les couleurs du thème
|
|
@ -1,36 +1,31 @@
|
|||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||
|
||||
/*
|
||||
A small script that can be used to generate LibreQR's icons
|
||||
*/
|
||||
|
||||
<?php
|
||||
if (php_sapi_name() == "cli") {
|
||||
if (isset($argv[1])) {
|
||||
$done = array();
|
||||
$line = "";
|
||||
$theme = $argv[1];
|
||||
if (isset($argv[1])) {
|
||||
$done = array();
|
||||
$line = "";
|
||||
$theme = $argv[1];
|
||||
|
||||
for ($pow = 0; $pow <= 3; $pow++) {
|
||||
for ($mult = 1; $mult <= 4; $mult++) {
|
||||
$size = $mult * 2**(4+$pow);
|
||||
if (!in_array($size, $done)) {
|
||||
shell_exec("convert themes/" . $theme . "/icons/source.png -scale " . $size . "x" . $size . " themes/" . $theme . "/icons/" . $size . ".png");
|
||||
shell_exec("pngquant -f themes/" . $theme . "/icons/" . $size . ".png --output themes/" . $theme . "/icons/" . $size . ".png");
|
||||
$done[] = $size;
|
||||
}
|
||||
}
|
||||
}
|
||||
for ($pow = 0; $pow <= 3; $pow++) {
|
||||
for ($mult = 1; $mult <= 4; $mult++) {
|
||||
$size = $mult * 2**(4+$pow);
|
||||
if (!in_array($size, $done)) {
|
||||
shell_exec("convert themes/" . $theme . "/icons/source.png -scale " . $size . "x" . $size . " themes/" . $theme . "/icons/" . $size . ".png");
|
||||
shell_exec("pngquant -f themes/" . $theme . "/icons/" . $size . ".png --output themes/" . $theme . "/icons/" . $size . ".png");
|
||||
$done[] = $size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($done as $done) {
|
||||
$line = $line . ", " . $done;
|
||||
}
|
||||
foreach ($done as $done) {
|
||||
$line = $line . ", " . $done;
|
||||
}
|
||||
|
||||
echo substr($line, 2) . "\n";
|
||||
echo substr($line, 2) . "\n";
|
||||
|
||||
} else {
|
||||
echo "Usage: php themes/resize.php <theme name>\n";
|
||||
}
|
||||
} else {
|
||||
echo "Usage: php themes/resize.php <theme name>\n";
|
||||
}
|
||||
|
||||
} else {
|
||||
echo "Available only via CLI for security reasons. Use 'php themes/resize.php <theme name>'";
|
||||
echo "Available only via CLI for security reasons. Use 'php themes/resize.php <theme name>'";
|
||||
}
|
||||
|
|
35
ubuntu/CHANGELOG.md
Executable file
|
@ -0,0 +1,35 @@
|
|||
## Changelog
|
||||
|
||||
### v0.1.13
|
||||
- Add woff2 files (thanks, @rene-s)
|
||||
|
||||
### v0.1.12
|
||||
- Fix missing webfont files
|
||||
|
||||
### v0.1.11
|
||||
- Create `package.json` for NPM
|
||||
- Create `composer.json` for Packagist
|
||||
|
||||
### v0.1.10
|
||||
- Improve documentation
|
||||
- Minify the pure CSS file
|
||||
|
||||
### v0.1.8, v0.1.9
|
||||
- Fix problems with the invalid bower.json
|
||||
|
||||
### v0.1.5 – Fixes and improvements
|
||||
- Greek and Cyrillic charsets added
|
||||
- Project page created
|
||||
|
||||
### v0.1.3
|
||||
- Fixes an issue with sprockets stack creating final files for each *.scss
|
||||
file instead of importing them to be compiled later as a whole.
|
||||
|
||||
### v0.1.2
|
||||
- LESS and SASS files/descriptors available
|
||||
- The font family is divided into three different files: Ubuntu (ubuntu-base);
|
||||
Ubuntu Condensed (ubuntu-condensed); and Ubuntu Monospace (ubuntu-mono)
|
||||
|
||||
### v0.1.1
|
||||
- Font files provided
|
||||
- CSS descriptor available
|
21
ubuntu/MIT-LICENSE
Executable file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015-2016 Ewerton Assis <earaujoassis@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the “Software”),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
41
ubuntu/README.md
Executable file
|
@ -0,0 +1,41 @@
|
|||
# Ubuntu Font Family
|
||||
|
||||
> Ubuntu Font Family Bower-ready (also SCSS-ready, LESS-ready, and plain CSS-ready)
|
||||
|
||||
## How to use it
|
||||
|
||||
0. Install it from [Bower](http://bower.io/)
|
||||
|
||||
```sh
|
||||
$ bower install [--save] ubuntu-fontface
|
||||
```
|
||||
|
||||
or from [NPM](http://npmjs.com/)
|
||||
|
||||
```sh
|
||||
$ npm install [--save] ubuntu-fontface
|
||||
```
|
||||
|
||||
1. Import it on SCSS/LESS/CSS source code. Assuming `{BOWER_PATH}` is `bower_components/`; `{SUFFIX}` options
|
||||
are `-base`, `-condensed` and `-mono`; `{EXTENSION}` options are `css`, `less`, `scss`, depending
|
||||
whether you're using pure CSS, [SCSS](http://sass-lang.com/) or [LESS](http://lesscss.org/). The `{SUFFIX}` is
|
||||
not available if you're importing the pure CSS file. A minified file is available for the pure CSS version.
|
||||
|
||||
```css
|
||||
@import "{BOWER_PATH}/ubuntu-fontface/ubuntu{SUFFIX}.{EXTENSION}";
|
||||
```
|
||||
|
||||
2. If you need any help (or have found any bug 🐞), please post it on
|
||||
[/issues](//github.com/earaujoassis/ubuntu-fontface/issues). Thank you!
|
||||
|
||||
## Contributors
|
||||
|
||||
- Pavel Rykov ([@PavelRykov](https://github.com/PavelRykov))
|
||||
- Jordan Last ([@lastmjs](https://github.com/lastmjs))
|
||||
- Rene Schmidt ([@rene-s](https://github.com/rene-s))
|
||||
|
||||
## License
|
||||
|
||||
The Ubuntu Font Family is distributed under the [Ubuntu Font Licence](http://font.ubuntu.com/licence/).
|
||||
|
||||
The source code in this project is distributed under the [MIT License](http://earaujoassis.mit-license.org/) © Ewerton Assis
|
94
ubuntu/UBUNTU-FONT-LICENSE
Executable file
|
@ -0,0 +1,94 @@
|
|||
Ubuntu Font License v1.0
|
||||
|
||||
PREAMBLE
|
||||
This licence allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely. The fonts, including any derivative works, can be
|
||||
bundled, embedded, and redistributed provided the terms of this licence
|
||||
are met. The fonts and derivatives, however, cannot be released under
|
||||
any other licence. The requirement for fonts to remain under this
|
||||
licence does not require any document created using the fonts or their
|
||||
derivatives to be published under this licence, as long as the primary
|
||||
purpose of the document is not to be a vehicle for the distribution of
|
||||
the fonts.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this licence and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Original Version" refers to the collection of Font Software components
|
||||
as received under this licence.
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to
|
||||
a new environment.
|
||||
|
||||
"Copyright Holder(s)" refers to all individuals and companies who have a
|
||||
copyright ownership of the Font Software.
|
||||
|
||||
"Substantially Changed" refers to Modified Versions which can be easily
|
||||
identified as dissimilar to the Font Software by users of the Font
|
||||
Software comparing the Original Version with the Modified Version.
|
||||
|
||||
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 and with or without charging
|
||||
a redistribution fee), making available to the public, and in some
|
||||
countries other activities as well.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
This licence does not grant any rights under trademark law and all such
|
||||
rights are reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of the Font Software, to propagate the Font Software, subject to
|
||||
the below conditions:
|
||||
|
||||
1) Each copy of the Font Software must contain the above copyright
|
||||
notice and this licence. These can be included either as stand-alone
|
||||
text files, human-readable headers or in the appropriate machine-
|
||||
readable metadata fields within text or binary files as long as those
|
||||
fields can be easily viewed by the user.
|
||||
|
||||
2) The font name complies with the following:
|
||||
(a) The Original Version must retain its name, unmodified.
|
||||
(b) Modified Versions which are Substantially Changed must be renamed to
|
||||
avoid use of the name of the Original Version or similar names entirely.
|
||||
(c) Modified Versions which are not Substantially Changed must be
|
||||
renamed to both (i) retain the name of the Original Version and (ii) add
|
||||
additional naming elements to distinguish the Modified Version from the
|
||||
Original Version. The name of such Modified Versions must be the name of
|
||||
the Original Version, with "derivative X" where X represents the name of
|
||||
the new work, appended to that name.
|
||||
|
||||
3) The name(s) of the Copyright Holder(s) and any contributor to the
|
||||
Font Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except (i) as required by this licence, (ii) to
|
||||
acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with
|
||||
their explicit written permission.
|
||||
|
||||
4) The Font Software, modified or unmodified, in part or in whole, must
|
||||
be distributed entirely under this licence, and must not be distributed
|
||||
under any other licence. The requirement for fonts to remain under this
|
||||
licence does not affect any document created using the Font Software,
|
||||
except any version of the Font Software extracted from a document
|
||||
created using the Font Software may only be distributed under this
|
||||
licence.
|
||||
|
||||
TERMINATION
|
||||
This licence becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
|
||||
DEALINGS IN THE FONT SOFTWARE.
|
116
ubuntu/_ubuntu-base.scss
Executable file
|
@ -0,0 +1,116 @@
|
|||
/* Ubuntu Font Family Bower-ready v0.1.13 */
|
||||
/* Ubuntu @font-face kit */
|
||||
|
||||
$UbuntuFontsPath: "./fonts" !default;
|
||||
|
||||
/* BEGIN Ubuntu Light */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-light-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-light-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-webfont.svg#ubuntulight') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Light */
|
||||
|
||||
/* BEGIN Ubuntu Light Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-light-italic-webfont.svg#ubuntulight_italic') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Ubuntu Light Italic */
|
||||
|
||||
/* BEGIN Ubuntu Regular */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-webfont.svg#ubunturegular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Regular */
|
||||
|
||||
/* BEGIN Ubuntu Regular Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-regular-italic-webfont.svg#ubuntuitalic') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Ubuntu Regular Italic */
|
||||
|
||||
/* BEGIN Ubuntu Medium */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-webfont.svg#ubuntumedium') format('svg');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Medium */
|
||||
|
||||
/* BEGIN Ubuntu Medium Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-medium-italic-webfont.svg#ubuntumedium_italic') format('svg');
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Ubuntu Medium Italic */
|
||||
|
||||
/* BEGIN Ubuntu Bold */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-webfont.svg#ubuntubold') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Bold */
|
||||
|
||||
/* BEGIN Ubuntu Bold Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-bold-italic-webfont.svg#ubuntubold_italic') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Ubuntu Bold Italic */
|
18
ubuntu/_ubuntu-condensed.scss
Executable file
|
@ -0,0 +1,18 @@
|
|||
/* Ubuntu Font Family Bower-ready v0.1.13 */
|
||||
/* Ubuntu Condensed @font-face kit */
|
||||
|
||||
$UbuntuFontsPath: "./fonts" !default;
|
||||
|
||||
/* BEGIN Ubuntu Condensed */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu Condensed';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntu-condensed-webfont.svg#ubuntu_condensedregular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Condensed */
|
62
ubuntu/_ubuntu-mono.scss
Executable file
|
@ -0,0 +1,62 @@
|
|||
/* Ubuntu Font Family Bower-ready v0.1.13 */
|
||||
/* Ubuntu Mono @font-face kit */
|
||||
|
||||
$UbuntuFontsPath: "./fonts" !default;
|
||||
|
||||
/* BEGIN Ubuntu Mono Regular */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu Monospace';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-webfont.svg#ubuntu_monoregular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
/* END Ubuntu Mono Regular */
|
||||
|
||||
/* BEGIN Ubuntu Mono Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu Monospace';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-regular-italic-webfont.svg#ubuntu_monoitalic') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Ubuntu Mono Italic */
|
||||
|
||||
/* BEGIN Ubuntu Mono Bold */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu Monospace';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-webfont.svg#ubuntu_monobold') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Ubuntu Mono Bold */
|
||||
|
||||
/* BEGIN Ubuntu Mono Bold Italic */
|
||||
@font-face {
|
||||
font-family: 'Ubuntu Monospace';
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.eot');
|
||||
src: url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.woff2') format('woff2'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.woff') format('woff'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.ttf') format('truetype'),
|
||||
url('#{$UbuntuFontsPath}/ubuntumono-bold-italic-webfont.svg#ubuntu_monobold_italic') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
|
||||
}
|
||||
/* END Ubuntu Mono Bold Italic */
|
8
ubuntu/_ubuntu.scss
Executable file
|
@ -0,0 +1,8 @@
|
|||
/* Ubuntu Font Family Bower-ready v0.1.13 */
|
||||
/* Ubuntu (complete package) @font-face kit */
|
||||
|
||||
$UbuntuFontsPath: "./fonts" !default;
|
||||
|
||||
@import "./ubuntu-base.scss";
|
||||
@import "./ubuntu-condensed.scss";
|
||||
@import "./ubuntu-mono.scss";
|
38
ubuntu/bower.json
Executable file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"name": "ubuntu-fontface",
|
||||
"version": "0.1.13",
|
||||
"main": [
|
||||
"./ubuntu.css",
|
||||
"./ubuntu.min.css",
|
||||
"./_ubuntu.scss",
|
||||
"./ubuntu.less"
|
||||
],
|
||||
"homepage": "https://github.com/earaujoassis/ubuntu-fontface",
|
||||
"authors": [
|
||||
"Ewerton Assis <earaujoassis@gmail.com>"
|
||||
],
|
||||
"description": "Ubuntu Font Family Bower-ready (also SASS-ready, LESS-ready, and plain CSS-ready)",
|
||||
"keywords": [
|
||||
"ubuntu",
|
||||
"font",
|
||||
"fontface",
|
||||
"css",
|
||||
"sass",
|
||||
"less",
|
||||
"web",
|
||||
"design"
|
||||
],
|
||||
"license": [
|
||||
"MIT",
|
||||
"Ubuntu Font License"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"fonts/original-pack",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests",
|
||||
"site"
|
||||
]
|
||||
}
|
25
ubuntu/composer.json
Executable file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"name": "earaujoassis/ubuntu-fontface",
|
||||
"type": "css",
|
||||
"description": "Ubuntu Font Family",
|
||||
"homepage": "https://earaujoassis.github.io/ubuntu-fontface/",
|
||||
"keywords": ["css", "sass", "less", "fonts", "font", "ubuntu", "fontface"],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ewerton Assis",
|
||||
"email": "earaujoassis@gmail.com",
|
||||
"homepage": "https://earaujoassis.com/",
|
||||
"role": "Maintainer"
|
||||
},
|
||||
{
|
||||
"name": "Pavel Rykov",
|
||||
"email": "p.rikov@drteam.rocks",
|
||||
"homepage": "http://drteam.rocks/",
|
||||
"role": "Contributor"
|
||||
}
|
||||
],
|
||||
"require": {},
|
||||
"autoload": {},
|
||||
"minimum-stability": "dev",
|
||||
"license": "MIT"
|
||||
}
|
21
ubuntu/fonts/original-pack/CONTRIBUTING.txt
Executable file
|
@ -0,0 +1,21 @@
|
|||
The Ubuntu Font Family is very long-term endeavour, and the first time
|
||||
that a professionally-designed font has been funded specifically with
|
||||
the intent of being an on-going community expanded project:
|
||||
|
||||
http://font.ubuntu.com/
|
||||
|
||||
Development of the Ubuntu Font Family is undertaken on Launchpad:
|
||||
|
||||
http://launchpad.net/ubuntu-font-family/
|
||||
|
||||
and this is where milestones, bug management and releases are handled.
|
||||
|
||||
Contributions are welcomed. Your work will be used on millions of
|
||||
computers every single day! Following the initial bootstrapping of
|
||||
Latin, Cyrillic, Greek, Arabic and Hebrew expansion will be undertaken
|
||||
by font designers from the font design and Ubuntu communities.
|
||||
|
||||
To ensure that the Ubuntu Font Family can be re-licensed to future
|
||||
widely-used libre font licences, copyright assignment is being required:
|
||||
|
||||
https://launchpad.net/~uff-contributors
|
292
ubuntu/fonts/original-pack/FONTLOG.txt
Executable file
|
@ -0,0 +1,292 @@
|
|||
This is the FONTLOG file for the Ubuntu Font Family and attempts to follow
|
||||
the recommendations at: http://scripts.sil.org/OFL-FAQ_web#43cecb44
|
||||
|
||||
|
||||
Overview
|
||||
|
||||
The new Ubuntu Font Family was started to enable the personality of
|
||||
Ubuntu to be seen and felt in every menu, button and dialog.
|
||||
The typeface is sans-serif, uses OpenType features and is manually
|
||||
hinted for clarity on desktop and mobile computing screens.
|
||||
|
||||
The scope of the Ubuntu Font Family includes all the languages used by
|
||||
the various Ubuntu users around the world in tune with Ubuntu's
|
||||
philosophy which states that every user should be able to use their
|
||||
software in the language of their choice. So the Ubuntu Font Family
|
||||
project will be extended to cover many more written languages.
|
||||
|
||||
|
||||
History
|
||||
|
||||
The Ubuntu Font Family has been creating during 2010 and 2011. As of
|
||||
September 2011 coverage is provided for Latin, Cyrillic and Greek across
|
||||
Regular, Italic, Bold and Bold-Italic. Further work was uptaken during
|
||||
2015.
|
||||
|
||||
|
||||
ChangeLog
|
||||
|
||||
2015-08-21 (Paul Sladen) Ubuntu Font Family version 0.83
|
||||
|
||||
Note: This release was created by binary patching from the v0.80
|
||||
release using the scripts in 'sources/patch-0.80-0.83/' to rebuild
|
||||
the necessary tables. The release selectively updates only those
|
||||
proportional .ttf font files exhibiting the bug below bug number;
|
||||
the Ubuntu Mono monospace font files remain unchanged, being the
|
||||
original version 0.80 ones.
|
||||
|
||||
[Marc Foley]
|
||||
* [Engineering] Fixed wrong characters appear in some mac apps. (LP: #1334363)
|
||||
|
||||
|
||||
2011-09-22 (Paul Sladen) Ubuntu Font Family version 0.80
|
||||
|
||||
[Vincent Connare/Dalton Maag]
|
||||
* Wish for addition of a monospaced member to the family (LP: #640382)
|
||||
* Mono: No hinting yet - Ubuntu Beta Mono font looks jagged in
|
||||
Netbeans and terrible with ClearType (LP: #820493)
|
||||
* Emacs: choosing normal monospace font in Emacs but gives bold-italic
|
||||
(LP: #791076)
|
||||
* PUA: ensure that Ubuntu Circle of Friends logo is full size: (LP: #853855)
|
||||
+ U+E0FF becomes large size in proportionals, remains small width in
|
||||
monospaces
|
||||
+ U+F0FF becomes small size (proportionals only)
|
||||
+ U+F200 is full ubuntu logomark (proportionals only)
|
||||
|
||||
[Paul Sladen]
|
||||
* Monospace: Patch Family Name to be "Ubuntu Mono"
|
||||
* Monospace: Patch U+EFFD version debugging glyph to be '0.8'
|
||||
|
||||
[Cody Boisclair]
|
||||
* Monospace: Force .null HDMX advance to 500
|
||||
* Monospace: Remap ASCII box-drawing characters (LP: #788757)
|
||||
|
||||
[Júlio Reis]
|
||||
* Date corrections to 'FONTLOG' (LP: #836595)
|
||||
|
||||
2011-03-08 (Paul Sladen) Ubuntu Font Family version 0.71.2
|
||||
|
||||
* (Production) Adjust Medium WeightClass to 500 (Md, MdIt) (LP: #730912)
|
||||
|
||||
2011-03-07 (Paul Sladen) Ubuntu Font Family version 0.71.1
|
||||
|
||||
* (Design) Add Capitalised version of glyphs and kern. (Lt, LtIt,
|
||||
Md, MdIt) DM (LP: #677446)
|
||||
* (Design) Re-space and tighen Regular and Italic by amount specified
|
||||
by Mark Shuttleworth (minus 4 FUnits). (Rg, It) (LP: #677149)
|
||||
* (Design) Design: Latin (U+0192) made straight more like l/c f with
|
||||
tail (LP: #670768)
|
||||
* (Design) (U+01B3) should have hook on right, as the lowercase
|
||||
(U+01B4) (LP: #681026)
|
||||
* (Design) Tail of Light Italic germandbls, longs and lowercase 'f'
|
||||
to match Italic/BoldItalic (LP: #623925)
|
||||
* (Production) Update <case> feature (Lt, LtIt, Md, MdIt). DM
|
||||
(LP: #676538, #676539)
|
||||
* (Production) Remove Bulgarian locl feature for Italics. (LP: #708578)
|
||||
* (Production) Update Description information with new string:
|
||||
"The Ubuntu Font Family are libre fonts funded by Canonical Ltd
|
||||
on behalf of the Ubuntu project. The font design work and
|
||||
technical implementation is being undertaken by Dalton Maag. The
|
||||
typeface is sans-serif, uses OpenType features and is manually
|
||||
hinted for clarity on desktop and mobile computing screens. The
|
||||
scope of the Ubuntu Font Family includes all the languages used
|
||||
by the various Ubuntu users around the world in tune with
|
||||
Ubuntu's philosophy which states that every user should be able
|
||||
to use their software in the language of their choice. The
|
||||
project is ongoing, and we expect the family will be extended to
|
||||
cover many written languages in the coming years."
|
||||
(Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590)
|
||||
* (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md,
|
||||
MdIt) (LP: #615787)
|
||||
* (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md,
|
||||
MdIt) (LP: #640623)
|
||||
* (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt)
|
||||
(LP: #648406)
|
||||
* (Production) Localisation of name table has been removed because
|
||||
of problems with Mac OS/X interpretation of localisation. DM
|
||||
(LP: #730785)
|
||||
* (Hinting) Regular '?' dot non-circular (has incorrect control
|
||||
value). (LP: #654336)
|
||||
* (Hinting) Too much space after latin capital 'G' in 13pt
|
||||
regular. Now reduced. (LP: #683437)
|
||||
* (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177)
|
||||
* (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562)
|
||||
* (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168)
|
||||
|
||||
2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1
|
||||
|
||||
Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip':
|
||||
* (Midstream) Fstype bit != 0 (LP: #648406)
|
||||
* (Midstream) Add unit test to validate fstype bits (LP: #648406)
|
||||
* (Midstream) Add unit test to validate licence
|
||||
|
||||
2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70
|
||||
|
||||
Release notes 0.70:
|
||||
* (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd,
|
||||
BdIt) DM (LP: #676538, #677446)
|
||||
* (Design) Give acute and grave a slight upright move to more match
|
||||
the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647)
|
||||
* (Design) Shift Bold Italic accent glyphs to be consistent with the
|
||||
Italic. (BdIt only) DM (LP: #677449)
|
||||
* (Design) Check spacing and kerning of dcaron, lcaron and
|
||||
tcaron. (Rg, It, Bd, BdIt) (LP: #664722)
|
||||
* (Design) Add positive kerning to () {} [] to open out the
|
||||
combinations so they are less like a closed box. (Rg, It, Bd,
|
||||
BdIt) (LP: #671228)
|
||||
* (Design) Change design of acute.asc and check highest points (Bd
|
||||
and BdIt only) DM
|
||||
* (Production) Update <case> feature. DM (LP: #676538, #676539)
|
||||
* (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt)
|
||||
(LP: #635615)
|
||||
* (Production) Update Copyright information with new
|
||||
strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu
|
||||
Font Licence 1.0" Trademark string "Ubuntu and Canonical are
|
||||
registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM
|
||||
(LP: #677450)
|
||||
* (Design) Check aligning of hyphen, math signs em, en, check braces
|
||||
and other brackets. 16/11 (LP: #676465)
|
||||
* (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd,
|
||||
BdIt) (LP: #615787)
|
||||
* (Production) Version number indicator added at U+EFFD (Rg, It, Bd,
|
||||
BdIt) (LP: #640623)
|
||||
* (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt)
|
||||
(LP: #648406)
|
||||
|
||||
2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69
|
||||
|
||||
[Dalton Maag]
|
||||
* Italic,
|
||||
- Hinting on lowercase Italic l amended 19ppm (LP: #632451)
|
||||
- Hinting on lowercase Italic u amended 12ppm (LP: #626376)
|
||||
|
||||
* Regular, Italic, Bold, BoldItalic
|
||||
- New Rupee Sign added @ U+20B9 (LP: #645987)
|
||||
- Ubuntu Roundel added @ U+E0FF (LP: #651606)
|
||||
|
||||
[Paul Sladen]
|
||||
* All
|
||||
- Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606)
|
||||
|
||||
|
||||
Acknowledgements
|
||||
|
||||
If you make modifications be sure to add your name (N), email (E),
|
||||
web-address (if you have one) (W) and description (D). This list is in
|
||||
alphabetical order.
|
||||
|
||||
N: Ryan Abdullah
|
||||
W: http://www.rayan.de/
|
||||
D: Arabic calligraphy and design in collaboration with Dalton Maag
|
||||
D: Arabic testing
|
||||
|
||||
N: Cody Boisclair
|
||||
D: Monospace low-level debugging and patching ('fixboxdrawing-ft.py')
|
||||
|
||||
N: Amélie Bonet
|
||||
W: http://ameliebonet.com/
|
||||
D: Type design with Dalton Maag, particularly Ubuntu Mono and Ubuntu Condensed
|
||||
|
||||
N: Jason Campbell
|
||||
W: http://www.campbellgraphics.com/design/fonts.shtml
|
||||
D: Monospace hinting (first phase) at Dalton Maag
|
||||
|
||||
N: Pilar Cano
|
||||
W: http://www.pilarcano.com/
|
||||
D: Hebrew realisation with Dalton Maag
|
||||
|
||||
N: Fernando Caro
|
||||
D: Type design with Dalton Maag, particularly Ubuntu Condensed
|
||||
|
||||
N: Ron Carpenter
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Type design with Dalton Maag
|
||||
D: Arabic realisation in collaboration with Ryan Abdullah
|
||||
|
||||
N: Vincent Connare
|
||||
W: http://www.connare.com/
|
||||
D: Type design, and engineering with Dalton Maag
|
||||
D: Monospace hinting (second phase) at Dalton Maag
|
||||
|
||||
N: Dave Crossland
|
||||
E: dave@understandingfonts.com
|
||||
W: http://understandingfonts.com/
|
||||
D: Documentation and libre licensing guidance
|
||||
D: Google Webfont integration at Google
|
||||
|
||||
N: Steve Edwards
|
||||
W: http://www.madebymake.com/
|
||||
D: font.ubuntu.com revamp implementation with Canonical Web Team
|
||||
|
||||
N: Iain Farrell
|
||||
W: http://www.flickr.com/photos/iain
|
||||
D: Ubuntu Font Family delivery for the Ubuntu UX team at Canonical
|
||||
|
||||
N: Marc Foley
|
||||
W: http://www.marcfoley.co/
|
||||
D: Font Engineer at Dalton Maag for the 2015 updates
|
||||
|
||||
N: Shiraaz Gabru
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Ubuntu Font Family project management at Dalton Maag
|
||||
|
||||
N: Marcus Haslam
|
||||
W: http://design.canonical.com/author/marcus-haslam/
|
||||
D: Creative inspiration
|
||||
|
||||
N: Ben Laenen
|
||||
D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000
|
||||
(for this font the concept was re-implemented from scratch by Dalton-Maag)
|
||||
|
||||
N: Bruno Maag
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag
|
||||
|
||||
N: Ivanka Majic
|
||||
W: http://www.ivankamajic.com/
|
||||
D: Guiding the UX team and Cyrillic feedback
|
||||
|
||||
N: David Marshall
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Technical guidance and administration at Dalton Maag
|
||||
|
||||
N: Malcolm Wooden
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Font Engineering at Dalton Maag
|
||||
|
||||
N: Lukas Paltram
|
||||
W: http://www.daltonmaag.com/
|
||||
D: Type design with Dalton Maag
|
||||
|
||||
N: Júlio Reis
|
||||
D: Date fixes to the documentation
|
||||
|
||||
N: Rodrigo Rivas
|
||||
D: Indian Rupee Sign glyph
|
||||
|
||||
N: Mark Shuttleworth
|
||||
E: mark@ubuntu.com
|
||||
W: http://www.markshuttleworth.com/
|
||||
D: Executive quality-control and funding
|
||||
|
||||
N: Paul Sladen
|
||||
E: ubuntu@paul.sladen.org
|
||||
W: http://www.paul.sladen.org/
|
||||
D: Bug triaging, packaging at Ubuntu and Canonical
|
||||
|
||||
N: Nicolas Spalinger
|
||||
W: http://planet.open-fonts.org
|
||||
D: Continuous guidance on libre/open font licensing, best practises in source
|
||||
tree layout, release and packaging (pkg-fonts Debian team)
|
||||
|
||||
N: Kenneth Wimer
|
||||
D: Initial PPA packaging
|
||||
|
||||
* Canonical Ltd is the primary commercial sponsor of the Ubuntu and
|
||||
Kubuntu operating systems
|
||||
* Dalton Maag are a custom type foundry headed by Bruno Maag
|
||||
|
||||
For further documentation, information on contributors, source code
|
||||
downloads and those involved with the Ubuntu Font Family, visit:
|
||||
|
||||
http://font.ubuntu.com/
|
177
ubuntu/fonts/original-pack/LICENCE-FAQ.txt
Executable file
|
@ -0,0 +1,177 @@
|
|||
Ubuntu Font Family Licensing FAQ
|
||||
|
||||
Stylistic Foundations
|
||||
|
||||
The Ubuntu Font Family is the first time that a libre typeface has been
|
||||
designed professionally and explicitly with the intent of developing a
|
||||
public and long-term community-based development process.
|
||||
|
||||
When developing an open project, it is generally necessary to have firm
|
||||
foundations: a font needs to maintain harmony within itself even across
|
||||
many type designers and writing systems. For the [1]Ubuntu Font Family,
|
||||
the process has been guided with the type foundry Dalton Maag setting
|
||||
the project up with firm stylistic foundation covering several
|
||||
left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left
|
||||
scripts: Arabic and Hebrew (due in 2011).
|
||||
|
||||
With this starting point the community will, under the supervision of
|
||||
[2]Canonical and [3]Dalton Maag, be able to build on the existing font
|
||||
sources to expand their character coverage. Ultimately everybody will
|
||||
be able to use the Ubuntu Font Family in their own written languages
|
||||
across the whole of Unicode (and this will take some time!).
|
||||
|
||||
Licensing
|
||||
|
||||
The licence chosen by any free software project is one of the
|
||||
foundational decisions that sets out how derivatives and contributions
|
||||
can occur, and in turn what kind of community will form around the
|
||||
project.
|
||||
|
||||
Using a licence that is compatible with other popular licences is a
|
||||
powerful constraint because of the [4]network effects: the freedom to
|
||||
share improvements between projects allows free software to reach
|
||||
high-quality over time. Licence-proliferation leads to many
|
||||
incompatible licences, undermining the network effect, the freedom to
|
||||
share and ultimately making the libre movement that Ubuntu is a part of
|
||||
less effective. For all kinds of software, writing a new licence is not
|
||||
to be taken lightly and is a choice that needs to be thoroughly
|
||||
justified if this path is taken.
|
||||
|
||||
Today it is not clear to Canonical what the best licence for a font
|
||||
project like the Ubuntu Font Family is: one that starts life designed
|
||||
by professionals and continues with the full range of community
|
||||
development, from highly commercial work in new directions to curious
|
||||
beginners' experimental contributions. The fast and steady pace of the
|
||||
Ubuntu release cycle means that an interim libre licence has been
|
||||
necessary to enable the consideration of the font family as part of
|
||||
Ubuntu 10.10 operating system release.
|
||||
|
||||
Before taking any decision on licensing, Canonical as sponsor and
|
||||
backer of the project has reviewed the many existing licenses used for
|
||||
libre/open fonts and engaged the stewards of the most popular licenses
|
||||
in detailed discussions. The current interim licence is the first step
|
||||
in progressing the state-of-the-art in licensing for libre/open font
|
||||
development.
|
||||
|
||||
The public discussion must now involve everyone in the (comparatively
|
||||
new) area of the libre/open font community; including font users,
|
||||
software freedom advocates, open source supporters and existing libre
|
||||
font developers. Most importantly, the minds and wishes of professional
|
||||
type designers considering entering the free software business
|
||||
community must be taken on board.
|
||||
|
||||
Conversations and discussion has taken place, privately, with
|
||||
individuals from the following groups (generally speaking personally on
|
||||
behalf of themselves, rather than their affiliations):
|
||||
* [5]SIL International
|
||||
* [6]Open Font Library
|
||||
* [7]Software Freedom Law Center
|
||||
* [8]Google Font API
|
||||
|
||||
Document embedding
|
||||
|
||||
One issue highlighted early on in the survey of existing font licences
|
||||
is that of document embedding. Almost all font licences, both free and
|
||||
unfree, permit embedding a font into a document to a certain degree.
|
||||
Embedding a font with other works that make up a document creates a
|
||||
"combined work" and copyleft would normally require the whole document
|
||||
to be distributed under the terms of the font licence. As beautiful as
|
||||
the font might be, such a licence makes a font too restrictive for
|
||||
useful general purpose digital publishing.
|
||||
|
||||
The situation is not entirely unique to fonts and is encountered also
|
||||
with tools such as GNU Bison: a vanilla GNU GPL licence would require
|
||||
anything generated with Bison to be made available under the terms of
|
||||
the GPL as well. To avoid this, Bison is [9]published with an
|
||||
additional permission to the GPL which allows the output of Bison to be
|
||||
made available under any licence.
|
||||
|
||||
The conflict between licensing of fonts and licensing of documents, is
|
||||
addressed in two popular libre font licences, the SIL OFL and GNU GPL:
|
||||
* [10]SIL Open Font Licence: When OFL fonts are embedded in a
|
||||
document, the OFL's terms do not apply to that document. (See
|
||||
[11]OFL-FAQ for details.
|
||||
* [12]GPL Font Exception: The situation is resolved by granting an
|
||||
additional permission to allow documents to not be covered by the
|
||||
GPL. (The exception is being reviewed).
|
||||
|
||||
The Ubuntu Font Family must also resolve this conflict, ensuring that
|
||||
if the font is embedded and then extracted it is once again clearly
|
||||
under the terms of its libre licence.
|
||||
|
||||
Long-term licensing
|
||||
|
||||
Those individuals involved, especially from Ubuntu and Canonical, are
|
||||
interested in finding a long-term libre licence that finds broad favour
|
||||
across the whole libre/open font community. The deliberation during the
|
||||
past months has been on how to licence the Ubuntu Font Family in the
|
||||
short-term, while knowingly encouraging everyone to pursue a long-term
|
||||
goal.
|
||||
* [13]Copyright assignment will be required so that the Ubuntu Font
|
||||
Family's licensing can be progressively expanded to one (or more)
|
||||
licences, as best practice continues to evolve within the
|
||||
libre/open font community.
|
||||
* Canonical will support and fund legal work on libre font licensing.
|
||||
It is recognised that the cost and time commitments required are
|
||||
likely to be significant. We invite other capable parties to join
|
||||
in supporting this activity.
|
||||
|
||||
The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build
|
||||
scripts and the CC-BY-SA for associated documentation and non-font
|
||||
content: all items which do not end up embedded in general works and
|
||||
documents.
|
||||
|
||||
Ubuntu Font Licence
|
||||
|
||||
For the short-term only, the initial licence is the [14]Ubuntu Font
|
||||
License (UFL). This is loosely inspired from the work on the SIL
|
||||
OFL 1.1, and seeks to clarify the issues that arose during discussions
|
||||
and legal review, from the perspective of the backers, Canonical Ltd.
|
||||
Those already using established licensing models such as the GPL, OFL
|
||||
or Creative Commons licensing should have no worries about continuing
|
||||
to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font
|
||||
Licence (SIL OFL) are not identical and should not be confused with
|
||||
each other. Please read the terms precisely. The UFL is only intended
|
||||
as an interim license, and the overriding aim is to support the
|
||||
creation of a more suitable and generic libre font licence. As soon as
|
||||
such a licence is developed, the Ubuntu Font Family will migrate to
|
||||
it—made possible by copyright assignment in the interium. Between the
|
||||
OFL 1.1, and the UFL 1.0, the following changes are made to produce the
|
||||
Ubuntu Font Licence:
|
||||
* Clarification:
|
||||
|
||||
1. Document embedding (see [15]embedding section above).
|
||||
2. Apply at point of distribution, instead of receipt
|
||||
3. Author vs. copyright holder disambiguation (type designers are
|
||||
authors, with the copyright holder normally being the funder)
|
||||
4. Define "Propagate" (for internationalisation, similar to the GPLv3)
|
||||
5. Define "Substantially Changed"
|
||||
6. Trademarks are explicitly not transferred
|
||||
7. Refine renaming requirement
|
||||
|
||||
Streamlining:
|
||||
8. Remove "not to be sold separately" clause
|
||||
9. Remove "Reserved Font Name(s)" declaration
|
||||
|
||||
A visual demonstration of how these points were implemented can be
|
||||
found in the accompanying coloured diff between SIL OFL 1.1 and the
|
||||
Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html
|
||||
|
||||
References
|
||||
|
||||
1. http://font.ubuntu.com/
|
||||
2. http://www.canonical.com/
|
||||
3. http://www.daltonmaag.com/
|
||||
4. http://en.wikipedia.org/wiki/Network_effect
|
||||
5. http://scripts.sil.org/
|
||||
6. http://openfontlibrary.org/
|
||||
7. http://www.softwarefreedom.org/
|
||||
8. http://code.google.com/webfonts
|
||||
9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF
|
||||
10. http://scripts.sil.org/OFL_web
|
||||
11. http://scripts.sil.org/OFL-FAQ_web
|
||||
12. http://www.gnu.org/licenses/gpl-faq.html#FontException
|
||||
13. https://launchpad.net/~uff-contributors
|
||||
14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt
|
||||
15. http://font.ubuntu.com/ufl/FAQ.html#embedding
|
||||
16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html
|
96
ubuntu/fonts/original-pack/LICENCE.txt
Executable file
|
@ -0,0 +1,96 @@
|
|||
-------------------------------
|
||||
UBUNTU FONT LICENCE Version 1.0
|
||||
-------------------------------
|
||||
|
||||
PREAMBLE
|
||||
This licence allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely. The fonts, including any derivative works, can be
|
||||
bundled, embedded, and redistributed provided the terms of this licence
|
||||
are met. The fonts and derivatives, however, cannot be released under
|
||||
any other licence. The requirement for fonts to remain under this
|
||||
licence does not require any document created using the fonts or their
|
||||
derivatives to be published under this licence, as long as the primary
|
||||
purpose of the document is not to be a vehicle for the distribution of
|
||||
the fonts.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this licence and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Original Version" refers to the collection of Font Software components
|
||||
as received under this licence.
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to
|
||||
a new environment.
|
||||
|
||||
"Copyright Holder(s)" refers to all individuals and companies who have a
|
||||
copyright ownership of the Font Software.
|
||||
|
||||
"Substantially Changed" refers to Modified Versions which can be easily
|
||||
identified as dissimilar to the Font Software by users of the Font
|
||||
Software comparing the Original Version with the Modified Version.
|
||||
|
||||
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 and with or without charging
|
||||
a redistribution fee), making available to the public, and in some
|
||||
countries other activities as well.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
This licence does not grant any rights under trademark law and all such
|
||||
rights are reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of the Font Software, to propagate the Font Software, subject to
|
||||
the below conditions:
|
||||
|
||||
1) Each copy of the Font Software must contain the above copyright
|
||||
notice and this licence. These can be included either as stand-alone
|
||||
text files, human-readable headers or in the appropriate machine-
|
||||
readable metadata fields within text or binary files as long as those
|
||||
fields can be easily viewed by the user.
|
||||
|
||||
2) The font name complies with the following:
|
||||
(a) The Original Version must retain its name, unmodified.
|
||||
(b) Modified Versions which are Substantially Changed must be renamed to
|
||||
avoid use of the name of the Original Version or similar names entirely.
|
||||
(c) Modified Versions which are not Substantially Changed must be
|
||||
renamed to both (i) retain the name of the Original Version and (ii) add
|
||||
additional naming elements to distinguish the Modified Version from the
|
||||
Original Version. The name of such Modified Versions must be the name of
|
||||
the Original Version, with "derivative X" where X represents the name of
|
||||
the new work, appended to that name.
|
||||
|
||||
3) The name(s) of the Copyright Holder(s) and any contributor to the
|
||||
Font Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except (i) as required by this licence, (ii) to
|
||||
acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with
|
||||
their explicit written permission.
|
||||
|
||||
4) The Font Software, modified or unmodified, in part or in whole, must
|
||||
be distributed entirely under this licence, and must not be distributed
|
||||
under any other licence. The requirement for fonts to remain under this
|
||||
licence does not affect any document created using the Font Software,
|
||||
except any version of the Font Software extracted from a document
|
||||
created using the Font Software may only be distributed under this
|
||||
licence.
|
||||
|
||||
TERMINATION
|
||||
This licence becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
|
||||
DEALINGS IN THE FONT SOFTWARE.
|
16
ubuntu/fonts/original-pack/README.txt
Executable file
|
@ -0,0 +1,16 @@
|
|||
----------------------
|
||||
Ubuntu Font Family
|
||||
======================
|
||||
|
||||
The Ubuntu Font Family are a set of matching new libre/open fonts in
|
||||
development during 2010--2011. And with further expansion work and
|
||||
bug fixing during 2015. The development is being funded by
|
||||
Canonical Ltd on behalf the wider Free Software community and the
|
||||
Ubuntu project. The technical font design work and implementation is
|
||||
being undertaken by Dalton Maag.
|
||||
|
||||
Both the final font Truetype/OpenType files and the design files used
|
||||
to produce the font family are distributed under an open licence and
|
||||
you are expressly encouraged to experiment, modify, share and improve.
|
||||
|
||||
http://font.ubuntu.com/
|
4
ubuntu/fonts/original-pack/TRADEMARKS.txt
Executable file
|
@ -0,0 +1,4 @@
|
|||
Ubuntu and Canonical are registered trademarks of Canonical Ltd.
|
||||
|
||||
The licence accompanying these works does not grant any rights
|
||||
under trademark law and all such rights are reserved.
|