Compare commits
No commits in common. "master" and "developer" have entirely different histories.
678
LICENSE
678
LICENSE
@ -1,116 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
|
||||
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
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
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 this service 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.
|
||||
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.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
|
||||
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.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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.
|
||||
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.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
|
||||
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.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
|
||||
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.
|
||||
|
||||
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
|
||||
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.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification follow.
|
||||
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.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
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.
|
||||
|
||||
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
|
||||
0. Definitions.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
|
||||
"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.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
|
||||
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.
|
||||
|
||||
c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
|
||||
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.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
|
||||
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.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
|
||||
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.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
|
||||
1. Source Code.
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
|
||||
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.
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
|
||||
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.
|
||||
|
||||
c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
|
||||
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 source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
|
||||
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.
|
||||
|
||||
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
|
||||
2. Basic Permissions.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
|
||||
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.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
|
||||
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.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
|
||||
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.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
|
||||
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.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions of the 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.
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
|
||||
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.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
|
||||
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.
|
||||
|
||||
NO WARRANTY
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
|
||||
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:
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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.
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
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".
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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 convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
|
||||
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.
|
||||
|
||||
one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
|
||||
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:
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
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.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail.
|
||||
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.
|
||||
|
||||
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
|
||||
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.
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
|
||||
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.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
|
||||
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.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
|
||||
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.
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
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.
|
||||
|
||||
signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{one line to give the program's name and a brief idea of what it does.}
|
||||
Copyright (C) {year} {name of author}
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
{project} Copyright (C) {year} {fullname}
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
69
README.txt
Normal file
69
README.txt
Normal file
@ -0,0 +1,69 @@
|
||||
=== Twenty Seventeen Child ===
|
||||
Contributors: dandelionweb
|
||||
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JEMTB4U8SYFL6
|
||||
Requires at least: WordPress 4.7
|
||||
Tested up to: WordPress 4.7.2
|
||||
Version: 0.1
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
Tags: child theme
|
||||
|
||||
== Description ==
|
||||
|
||||
A blank child theme for Twenty Seventeen.
|
||||
|
||||
For more information about Twenty Seventeen please go to https://codex.wordpress.org/Twenty_Seventeen.
|
||||
|
||||
== Installation ==
|
||||
|
||||
1. Download the zip file from https://github.com/ruthmaude/twentyseventeen-child.
|
||||
2. In your admin panel, go to Appearance -> Themes -> Add New -> Upload Theme -> Choose File.
|
||||
3. Browse your computer for the twentyseventeen-child.zip file downloaded in step 1 above.
|
||||
4. click Open -> Install Now -> Activate.
|
||||
5. Go to https://codex.wordpress.org/Twenty_Seventeen for a guide on how to customize this theme.
|
||||
6. Navigate to Appearance > Customize in your admin panel and customize to taste.
|
||||
|
||||
== Copyright ==
|
||||
|
||||
Twenty Seventeen WordPress Theme, Copyright 2016 WordPress.org
|
||||
Twenty Seventeen is distributed under the terms of the GNU GPL
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
Twenty Seventeen bundles the following third-party resources:
|
||||
|
||||
HTML5 Shiv, Copyright 2014 Alexander Farkas
|
||||
Licenses: MIT/GPL2
|
||||
Source: https://github.com/aFarkas/html5shiv
|
||||
|
||||
jQuery scrollTo, Copyright 2007-2015 Ariel Flesler
|
||||
License: MIT
|
||||
Source: https://github.com/flesler/jquery.scrollTo
|
||||
|
||||
normalize.css, Copyright 2012-2016 Nicolas Gallagher and Jonathan Neal
|
||||
License: MIT
|
||||
Source: https://necolas.github.io/normalize.css/
|
||||
|
||||
Font Awesome icons, Copyright Dave Gandy
|
||||
License: SIL Open Font License, version 1.1.
|
||||
Source: http://fontawesome.io/
|
||||
|
||||
Bundled header image, Copyright Alvin Engler
|
||||
License: CC0 1.0 Universal (CC0 1.0)
|
||||
Source: https://unsplash.com/@englr?photo=bIhpiQA009k
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.0 =
|
||||
* Released: February 11, 2017
|
||||
|
||||
|
||||
Initial release
|
47
footer.php
Normal file
47
footer.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* The template for displaying the footer
|
||||
*
|
||||
* Contains the closing of the #content div and all content after.
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
</div><!-- #content -->
|
||||
|
||||
<footer id="colophon" class="site-footer" role="contentinfo">
|
||||
<div class="wrap" style="display:none;">
|
||||
<?php
|
||||
get_template_part( 'template-parts/footer/footer', 'widgets' );
|
||||
|
||||
if ( has_nav_menu( 'social' ) ) : ?>
|
||||
<nav class="social-navigation" role="navigation" aria-label="<?php esc_attr_e( 'Footer Social Links Menu', 'twentyseventeen' ); ?>">
|
||||
<?php
|
||||
wp_nav_menu( array(
|
||||
'theme_location' => 'social',
|
||||
'menu_class' => 'social-links-menu',
|
||||
'depth' => 1,
|
||||
'link_before' => '<span class="screen-reader-text">',
|
||||
'link_after' => '</span>' . twentyseventeen_get_svg( array( 'icon' => 'chain' ) ),
|
||||
) );
|
||||
?>
|
||||
</nav><!-- .social-navigation -->
|
||||
<?php endif;
|
||||
|
||||
get_template_part( 'template-parts/footer/site', 'info' );
|
||||
?>
|
||||
</div><!-- .wrap -->
|
||||
</footer><!-- #colophon -->
|
||||
</div><!-- .site-content-contain -->
|
||||
</div><!-- #page -->
|
||||
<?php wp_footer(); ?>
|
||||
|
||||
</body>
|
||||
</html>
|
15
functions.php
Normal file
15
functions.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
|
||||
function theme_enqueue_styles() {
|
||||
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
|
||||
}
|
||||
|
||||
/*
|
||||
* * A simple function to control the number of Twenty Seventeen Theme Front Page Sections
|
||||
* * Source: wpcolt.com
|
||||
* */
|
||||
|
||||
function wpc_custom_front_sections( $num_sections ) {
|
||||
return 5; //Change this number to change the number of the sections.
|
||||
}
|
||||
add_filter( 'twentyseventeen_front_page_sections', 'wpc_custom_front_sections' );
|
60
header.php
Normal file
60
header.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* The header for our theme
|
||||
*
|
||||
* This is the template that displays all of the <head> section and everything up until <div id="content">
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?><!DOCTYPE html>
|
||||
<html <?php language_attributes(); ?> class="no-js no-svg">
|
||||
<head>
|
||||
<meta charset="<?php bloginfo( 'charset' ); ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="profile" href="http://gmpg.org/xfn/11">
|
||||
|
||||
<?php wp_head(); ?>
|
||||
|
||||
<script src="https://use.fontawesome.com/3db894370e.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body <?php body_class(); ?>>
|
||||
<div id="page" class="site">
|
||||
<a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'twentyseventeen' ); ?></a>
|
||||
|
||||
<header id="masthead" class="site-header" role="banner">
|
||||
|
||||
|
||||
<?php if ( has_nav_menu( 'top' ) ) : ?>
|
||||
<div class="navigation-top">
|
||||
<div class="wrap">
|
||||
<?php get_template_part( 'template-parts/navigation/navigation', 'top' ); ?>
|
||||
</div><!-- .wrap -->
|
||||
</div><!-- .navigation-top -->
|
||||
<?php endif; ?>
|
||||
<?php get_template_part( 'template-parts/header/header', 'image' ); ?>
|
||||
|
||||
</header><!-- #masthead -->
|
||||
|
||||
<?php
|
||||
|
||||
/*
|
||||
* If a regular post or page, and not the front page, show the featured image.
|
||||
* Using get_queried_object_id() here since the $post global may not be set before a call to the_post().
|
||||
*/
|
||||
if ( ( is_single() || ( is_page() && ! twentyseventeen_is_frontpage() ) ) && has_post_thumbnail( get_queried_object_id() ) ) :
|
||||
echo '<div class="single-featured-image-header">';
|
||||
echo get_the_post_thumbnail( get_queried_object_id(), 'twentyseventeen-featured-image' );
|
||||
echo '</div><!-- .single-featured-image-header -->';
|
||||
endif;
|
||||
?>
|
||||
<span id="inicio"></span>
|
||||
<div class="site-content-contain">
|
||||
<div id="content" class="site-content">
|
160
plugins/events-manager/buddypress/group-events.php
Normal file
160
plugins/events-manager/buddypress/group-events.php
Normal file
@ -0,0 +1,160 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to BuddyPress - 2012-02-14 */
|
||||
global $bp, $EM_Notices;
|
||||
$url = $bp->events->link . 'my-events/'; //url to this page
|
||||
$order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC';
|
||||
$limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit
|
||||
$page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1;
|
||||
$offset = ( $page > 1 ) ? ($page-1)*$limit : 0;
|
||||
$EM_Events = EM_Events::get( array('group'=>'this','scope'=>'future', 'limit' => 0, 'order' => $order) );
|
||||
$events_count = count ( $EM_Events );
|
||||
$future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future'));
|
||||
$pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') );
|
||||
$use_events_end = get_option('dbem_use_event_end');
|
||||
echo $EM_Notices;
|
||||
?>
|
||||
<div class="tablenav">
|
||||
<?php
|
||||
if ( $events_count >= $limit ) {
|
||||
$events_nav = em_admin_paginate( $events_count, $limit, $page);
|
||||
echo $events_nav;
|
||||
}
|
||||
?>
|
||||
<br class="clear" />
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if (empty ( $EM_Events )) {
|
||||
// TODO localize
|
||||
echo "<p>". __( 'No Events','events-manager') ."</p>";
|
||||
} else {
|
||||
foreach( $EM_Events as $EM_Event ){ break; }
|
||||
$can_edit_events = $EM_Event->can_manage('edit_events','edit_others_events');
|
||||
?>
|
||||
<table class="widefat events-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php /*
|
||||
<th class='manage-column column-cb check-column' scope='col'>
|
||||
<input class='select-all' type="checkbox" value='1' />
|
||||
</th>
|
||||
*/ ?>
|
||||
<th><?php _e ( 'Name', 'events-manager'); ?></th>
|
||||
<th><?php _e ( 'Location', 'events-manager'); ?></th>
|
||||
<th><?php _e ( 'Date and time', 'events-manager'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$rowno = 0;
|
||||
$event_count = 0;
|
||||
foreach ( $EM_Events as $EM_Event ) {
|
||||
/* @var $event EM_Event */
|
||||
$can_edit_events = $EM_Event->can_manage('edit_events','edit_others_events');
|
||||
if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) {
|
||||
$rowno++;
|
||||
$class = ($rowno % 2) ? 'alternate' : '';
|
||||
// FIXME set to american
|
||||
$localised_start_date = date_i18n(get_option('dbem_date_format'), $EM_Event->start);
|
||||
$localised_end_date = date_i18n(get_option('dbem_date_format'), $EM_Event->end);
|
||||
$style = "";
|
||||
$today = date ( "Y-m-d" );
|
||||
$location_summary = "<b>" . $EM_Event->get_location()->name . "</b><br/>" . $EM_Event->get_location()->address . " - " . $EM_Event->get_location()->town;
|
||||
|
||||
if ($EM_Event->start_date < $today && $EM_Event->end_date < $today){
|
||||
$class .= " past";
|
||||
}
|
||||
//Check pending approval events
|
||||
if ( !$EM_Event->status ){
|
||||
$class .= " pending";
|
||||
}
|
||||
?>
|
||||
<tr class="event <?php echo trim($class); ?>" <?php echo $style; ?> id="event_<?php echo $EM_Event->event_id ?>">
|
||||
<?php /*
|
||||
<td>
|
||||
<input type='checkbox' class='row-selector' value='<?php echo $event->event_id; ?>' name='events[]' />
|
||||
</td>
|
||||
*/ ?>
|
||||
<td>
|
||||
<strong>
|
||||
<?php
|
||||
if( $can_edit_events ){
|
||||
echo $EM_Event->output('<a href="#_EDITEVENTURL">#_NAME</a>');
|
||||
}else{
|
||||
echo $EM_Event->output('#_EVENTLINK');
|
||||
}
|
||||
?>
|
||||
</strong>
|
||||
<?php
|
||||
if( $EM_Event->can_manage('manage_bookings','manage_others_bookings') && get_option('dbem_rsvp_enabled') == 1 && $EM_Event->rsvp == 1 ){
|
||||
?>
|
||||
<br/>
|
||||
<a href="<?php echo $url ?>bookings/?event_id=<?php echo $EM_Event->event_id ?>"><?php echo __("Bookings",'events-manager'); ?></a> –
|
||||
<?php _e("Booked",'events-manager'); ?>: <?php echo $EM_Event->get_bookings()->get_booked_spaces()."/".$EM_Event->get_spaces(); ?>
|
||||
<?php if( get_option('dbem_bookings_approval') == 1 ): ?>
|
||||
| <?php _e("Pending",'events-manager') ?>: <?php echo $EM_Event->get_bookings()->get_pending_spaces(); ?>
|
||||
<?php endif;
|
||||
}
|
||||
?>
|
||||
<div class="row-actions">
|
||||
<?php if( $EM_Event->can_manage('delete_events', 'delete_others_events')) : $can_delete_events = true; ?>
|
||||
<span class="trash"><a href="<?php echo $url ?>?action=event_delete&event_id=<?php echo $EM_Event->event_id . '&_wpnonce=' . wp_create_nonce('event_delete_'.$EM_Event->event_id); ?>" class="em-event-delete"><?php _e('Delete','events-manager'); ?></a></span>
|
||||
<?php endif; ?>
|
||||
<?php if( $can_edit_events ): ?>
|
||||
<?php if( $can_delete_events ) echo " | "; ?>
|
||||
<a href="<?php echo $url ?>edit/?action=event_duplicate&event_id=<?php echo $EM_Event->event_id . '&_wpnonce=' . wp_create_nonce('event_duplicate_'.$EM_Event->event_id); ?>" title="<?php echo esc_attr ( sprintf(__('Duplicate %s','events-manager'), __('Event','events-manager')) ); ?>">
|
||||
<?php esc_html_e('Duplicate','events-manager'); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<?php echo $location_summary; ?>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<?php echo $localised_start_date; ?>
|
||||
<?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?>
|
||||
<br />
|
||||
<?php
|
||||
//TODO Should 00:00 - 00:00 be treated as an all day event?
|
||||
echo substr ( $EM_Event->start_time, 0, 5 ) . " - " . substr ( $EM_Event->end_time, 0, 5 );
|
||||
?>
|
||||
<br />
|
||||
<?php
|
||||
if ( $EM_Event->is_recurrence() && $EM_Event->can_manage('edit_events','edit_others_events') ) {
|
||||
$recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','events-manager');
|
||||
?>
|
||||
<strong>
|
||||
<?php echo $EM_Event->get_recurrence_description(); ?> <br />
|
||||
<a href="<?php echo $url ?>edit/?event_id=<?php echo $EM_Event->recurrence_id ?>"><?php _e ( 'Edit Recurring Events', 'events-manager'); ?></a>
|
||||
</strong>
|
||||
<?php
|
||||
}else{ echo " "; }
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
$event_count++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php
|
||||
} // end of table
|
||||
?>
|
||||
<div class='tablenav'>
|
||||
<div class="alignleft actions">
|
||||
<br class='clear' />
|
||||
</div>
|
||||
<?php if ( $events_count >= $limit ) : ?>
|
||||
<div class="tablenav-pages">
|
||||
<?php
|
||||
echo $events_nav;
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<br class='clear' />
|
||||
</div>
|
4
plugins/events-manager/buddypress/my-bookings.php
Normal file
4
plugins/events-manager/buddypress/my-bookings.php
Normal file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to BuddyPress - 2012-02-14 */
|
||||
em_bookings_admin();
|
||||
?>
|
2
plugins/events-manager/buddypress/my-events.php
Normal file
2
plugins/events-manager/buddypress/my-events.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
em_events_admin();
|
162
plugins/events-manager/buddypress/my-group-events.php
Normal file
162
plugins/events-manager/buddypress/my-group-events.php
Normal file
@ -0,0 +1,162 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to BuddyPress - 2012-02-14 */
|
||||
global $bp, $EM_Notices;
|
||||
echo $EM_Notices;
|
||||
$url = $bp->events->link . 'my-events/'; //url to this page
|
||||
$order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC';
|
||||
$limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit
|
||||
$page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1;
|
||||
$offset = ( $page > 1 ) ? ($page-1)*$limit : 0;
|
||||
$EM_Events = EM_Events::get( array('group'=>'my','scope'=>'future', 'limit' => 0, 'order' => $order) );
|
||||
$events_count = count ( $EM_Events );
|
||||
$future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future'));
|
||||
$pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') );
|
||||
$use_events_end = get_option('dbem_use_event_end');
|
||||
echo $EM_Notices;
|
||||
?>
|
||||
<div class="tablenav">
|
||||
<?php
|
||||
if ( $events_count >= $limit ) {
|
||||
$events_nav = em_admin_paginate( $events_count, $limit, $page);
|
||||
echo $events_nav;
|
||||
}
|
||||
?>
|
||||
<br class="clear" />
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if (empty ( $EM_Events )) {
|
||||
// TODO localize
|
||||
echo "<p>". __( 'No Events','events-manager') ."</p>";
|
||||
} else {
|
||||
?>
|
||||
|
||||
<table class="widefat events-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php /*
|
||||
<th class='manage-column column-cb check-column' scope='col'>
|
||||
<input class='select-all' type="checkbox" value='1' />
|
||||
</th>
|
||||
*/ ?>
|
||||
<th><?php _e ( 'Name', 'events-manager'); ?></th>
|
||||
<th> </th>
|
||||
<th><?php _e ( 'Location', 'events-manager'); ?></th>
|
||||
<th colspan="2"><?php _e ( 'Date and time', 'events-manager'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$rowno = 0;
|
||||
$event_count = 0;
|
||||
foreach ( $EM_Events as $event ) {
|
||||
/* @var $event EM_Event */
|
||||
if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) {
|
||||
$rowno++;
|
||||
$class = ($rowno % 2) ? 'alternate' : '';
|
||||
// FIXME set to american
|
||||
$localised_start_date = date_i18n(get_option('dbem_date_format'), $event->start);
|
||||
$localised_end_date = date_i18n(get_option('dbem_date_format'), $event->end);
|
||||
$style = "";
|
||||
$today = current_time('timestamp');
|
||||
$location_summary = "<b>" . $event->get_location()->name . "</b><br/>" . $event->get_location()->address . " - " . $event->get_location()->town;
|
||||
|
||||
if ($event->start < $today && $event->end < $today){
|
||||
$class .= " past";
|
||||
}
|
||||
//Check pending approval events
|
||||
if ( !$event->status ){
|
||||
$class .= " pending";
|
||||
}
|
||||
?>
|
||||
<tr class="event <?php echo trim($class); ?>" <?php echo $style; ?> id="event_<?php echo $event->event_id ?>">
|
||||
<?php /*
|
||||
<td>
|
||||
<input type='checkbox' class='row-selector' value='<?php echo $event->event_id; ?>' name='events[]' />
|
||||
</td>
|
||||
*/ ?>
|
||||
<td>
|
||||
<strong>
|
||||
<a class="row-title" href="<?php echo $event->get_edit_url(); ?>"><?php echo ($event->event_name); ?></a>
|
||||
</strong>
|
||||
<?php
|
||||
if( $event->can_manage('manage_bookings','manage_others_bookings') && get_option('dbem_rsvp_enabled') == 1 && $event->event_rsvp == 1 ){
|
||||
?>
|
||||
<br/>
|
||||
<a href="<?php echo esc_url($event->get_bookings_url()); ?>"><?php echo __("Bookings",'events-manager'); ?></a> –
|
||||
<?php _e("Booked",'events-manager'); ?>: <?php echo $event->get_bookings()->get_booked_spaces()."/".$event->get_spaces(); ?>
|
||||
<?php if( get_option('dbem_bookings_approval') == 1 ): ?>
|
||||
| <?php _e("Pending",'events-manager') ?>: <?php echo $event->get_bookings()->get_pending_spaces(); ?>
|
||||
<?php endif;
|
||||
}
|
||||
?>
|
||||
<div class="row-actions">
|
||||
<?php if( current_user_can('delete_events')) : ?>
|
||||
<span class="trash"><a href="<?php echo $url ?>?action=event_delete&event_id=<?php echo $event->event_id ?>" class="em-event-delete"><?php _e('Delete','events-manager'); ?></a></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="<?php echo $url ?>edit/?action=event_duplicate&event_id=<?php echo $event->event_id ?>" title="<?php _e ( 'Duplicate this event', 'events-manager'); ?>">
|
||||
<strong>+</strong>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $location_summary; ?>
|
||||
<?php if( is_object($category) && !empty($category->name) ) : ?>
|
||||
<br/><span class="category"><strong><?php _e( 'Category', 'events-manager'); ?>: </strong><?php echo $category->name ?></span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<?php echo $localised_start_date; ?>
|
||||
<?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?>
|
||||
<br />
|
||||
<?php
|
||||
if(!$event->event_all_day){
|
||||
echo date_i18n(get_option('time_format'), $event->start) . " - " . date_i18n(get_option('time_format'), $event->end);
|
||||
}else{
|
||||
echo get_option('dbem_event_all_day_message');
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
if ( $event->is_recurrence() && $event->can_manage('edit_events','edit_others_events') ) {
|
||||
$recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','events-manager');
|
||||
?>
|
||||
<strong>
|
||||
<?php echo $event->get_recurrence_description(); ?> <br />
|
||||
<a href="<?php echo $url ?>edit/?event_id=<?php echo $event->recurrence_id ?>"><?php _e ( 'Edit Recurring Events', 'events-manager'); ?></a>
|
||||
<?php if( current_user_can('delete_events')) : ?>
|
||||
<span class="trash"><a href="<?php echo $url ?>?action=event_delete&event_id=<?php echo $event->event_id ?>" class="em-event-rec-delete" onclick ="if( !confirm('<?php echo $recurrence_delete_confirm; ?>') ){ return false; }"><?php _e('Delete','events-manager'); ?></a></span>
|
||||
<?php endif; ?>
|
||||
</strong>
|
||||
<?php
|
||||
}else{ echo " "; }
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
$event_count++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php
|
||||
} // end of table
|
||||
?>
|
||||
<div class='tablenav'>
|
||||
<div class="alignleft actions">
|
||||
<br class='clear' />
|
||||
</div>
|
||||
<?php if ( $events_count >= $limit ) : ?>
|
||||
<div class="tablenav-pages">
|
||||
<?php
|
||||
echo $events_nav;
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<br class='clear' />
|
||||
</div>
|
2
plugins/events-manager/buddypress/my-locations.php
Normal file
2
plugins/events-manager/buddypress/my-locations.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
em_locations_admin();
|
46
plugins/events-manager/buddypress/profile.php
Normal file
46
plugins/events-manager/buddypress/profile.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to BuddyPress - 2012-02-14 */
|
||||
global $bp, $EM_Notices;
|
||||
echo $EM_Notices;
|
||||
if( user_can($bp->displayed_user->id,'edit_events') ){
|
||||
?>
|
||||
<h4><?php _e('My Events', 'events-manager'); ?></h4>
|
||||
<?php
|
||||
$args = array(
|
||||
'owner'=>$bp->displayed_user->id,
|
||||
'format_header' => get_option('dbem_bp_events_list_format_header'),
|
||||
'format' => get_option('dbem_bp_events_list_format'),
|
||||
'format_footer' => get_option('dbem_bp_events_list_format_footer'),
|
||||
'owner' => $bp->displayed_user->id,
|
||||
'pagination'=>1
|
||||
);
|
||||
$args['limit'] = !empty($args['limit']) ? $args['limit'] : get_option('dbem_events_default_limit');
|
||||
if( EM_Events::count($args) > 0 ){
|
||||
echo EM_Events::output($args);
|
||||
}else{
|
||||
?>
|
||||
<p><?php _e('No Events', 'events-manager'); ?>.
|
||||
<?php if( get_current_user_id() == $bp->displayed_user->id ): ?>
|
||||
<a href="<?php echo $bp->events->link . 'my-events/edit/'; ?>"><?php _e('Add Event','events-manager'); ?></a>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<h4><?php _e("Events I'm Attending", 'events-manager'); ?></h4>
|
||||
<?php
|
||||
$EM_Person = new EM_Person( $bp->displayed_user->id );
|
||||
$EM_Bookings = $EM_Person->get_bookings( false, apply_filters('em_bp_attending_status',1) );
|
||||
if(count($EM_Bookings->bookings) > 0){
|
||||
//Get events here in one query to speed things up
|
||||
$event_ids = array();
|
||||
foreach($EM_Bookings as $EM_Booking){
|
||||
$event_ids[] = $EM_Booking->event_id;
|
||||
}
|
||||
echo EM_Events::output(array('event'=>$event_ids));
|
||||
}else{
|
||||
?>
|
||||
<p><?php _e('Not attending any events yet.','events-manager'); ?></p>
|
||||
<?php
|
||||
}
|
10
plugins/events-manager/buddypress/readme.txt
Normal file
10
plugins/events-manager/buddypress/readme.txt
Normal file
@ -0,0 +1,10 @@
|
||||
This folder contains email templates or parts of email templates that would be used in emails.
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/buddypress/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
69
plugins/events-manager/emails/bookingsummary.php
Normal file
69
plugins/events-manager/emails/bookingsummary.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/*
|
||||
* This displays the content of the #_BOOKINGSUMMARY placeholder
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manage/placeholders/ and modifying it however you need.
|
||||
* For more information, see http://wp-events-plugin.com/documentation/using-template-files/
|
||||
*/
|
||||
/* @var $EM_Booking EM_Booking */ ?>
|
||||
<?php foreach($EM_Booking->get_tickets_bookings() as $EM_Ticket_Booking): /* @var $EM_Ticket_Booking EM_Ticket_Booking */ ?>
|
||||
|
||||
<?php echo $EM_Ticket_Booking->get_ticket()->ticket_name; ?>
|
||||
|
||||
--------------------------------------
|
||||
<?php _e('Quantity','events-manager'); ?>: <?php echo $EM_Ticket_Booking->get_spaces(); ?>
|
||||
|
||||
<?php _e('Price','events-manager'); ?>: <?php echo $EM_Ticket_Booking->get_price(true); ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
|
||||
=======================================
|
||||
|
||||
<?php
|
||||
$price_summary = $EM_Booking->get_price_summary_array();
|
||||
//we should now have an array of information including base price, taxes and post/pre tax discounts
|
||||
?>
|
||||
<?php _e('Sub Total','events-manager'); ?> : <?php echo $EM_Booking->get_price_base(true); ?>
|
||||
|
||||
<?php if( count($price_summary['discounts_pre_tax']) > 0 ): ?>
|
||||
|
||||
<?php _e('Discounts Before Taxes','events-manager'); ?>
|
||||
|
||||
<?php foreach( $price_summary['discounts_pre_tax'] as $discount_summary ): ?>
|
||||
(<?php echo $discount_summary['name']; ?>) : -<?php echo $discount_summary['amount']; ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<?php if( count($price_summary['surcharges_pre_tax']) > 0 ): ?>
|
||||
|
||||
<?php _e('Surcharges Before Taxes','events-manager'); ?>
|
||||
|
||||
<?php foreach( $price_summary['surcharges_pre_tax'] as $surcharge_summary ): ?>
|
||||
(<?php echo $surcharge_summary['name']; ?>) : <?php echo $surcharge_summary['amount']; ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if( !empty($price_summary['taxes']['amount']) ): ?>
|
||||
<?php _e('Taxes','events-manager'); ?> ( <?php echo $price_summary['taxes']['rate']; ?> ) : <?php echo $price_summary['taxes']['amount']; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if( count($price_summary['discounts_post_tax']) > 0 ): ?>
|
||||
|
||||
<?php _e('Discounts (After Taxes)','events-manager'); ?>
|
||||
|
||||
<?php foreach( $price_summary['discounts_post_tax'] as $discount_summary ): ?>
|
||||
<?php echo $discount_summary['name']; ?> : -<?php echo $discount_summary['amount']; ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<?php if( count($price_summary['surcharges_post_tax']) > 0 ): ?>
|
||||
|
||||
<?php _e('Surcharges (After Taxes)','events-manager'); ?>
|
||||
|
||||
<?php foreach( $price_summary['surcharges_post_tax'] as $surcharge_summary ): ?>
|
||||
<?php echo $surcharge_summary['name']; ?> : <?php echo $surcharge_summary['amount']; ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php _e('Total Price','events-manager'); ?> : <?php echo $price_summary['total']; ?>
|
12
plugins/events-manager/emails/bookingtickets.php
Normal file
12
plugins/events-manager/emails/bookingtickets.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php foreach($EM_Booking->get_tickets_bookings() as $EM_Ticket_Booking): ?>
|
||||
<?php
|
||||
/* @var $EM_Ticket_Booking EM_Ticket_Booking */
|
||||
echo $EM_Ticket_Booking->get_ticket()->name;
|
||||
?>
|
||||
|
||||
<?php _e('Quantity','events-manager'); ?>: <?php echo $EM_Ticket_Booking->get_spaces(); ?>
|
||||
|
||||
<?php _e('Price','events-manager'); ?>: <?php echo em_get_currency_symbol(!get_option('dbem_smtp_html'))." ". number_format($EM_Ticket_Booking->get_price(),2); ?>
|
||||
|
||||
|
||||
<?php endforeach; ?>
|
10
plugins/events-manager/emails/readme.txt
Normal file
10
plugins/events-manager/emails/readme.txt
Normal file
@ -0,0 +1,10 @@
|
||||
This folder contains email templates or parts of email templates that would be used in emails.
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/emails/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
21
plugins/events-manager/formats/readme.txt
Normal file
21
plugins/events-manager/formats/readme.txt
Normal file
@ -0,0 +1,21 @@
|
||||
Files in this folder or in wp-content/themes/yourthemedir/plugins/events-manager/formats/ would be used to replace formatting options in the settings page. This allows you a much greater degree of flexibility as you can use PHP go do all sorts of customizations to your events.
|
||||
|
||||
To overwrite a formatting option, you need to firstly create a file here with the same name as the setting name in the wp_options table without the dbem_ prefix. So, for example:
|
||||
|
||||
'dbem_event_list_item_format' - format for controlling a single event format in a list of events
|
||||
|
||||
becomes
|
||||
|
||||
event_list_item_format.php
|
||||
|
||||
Then, using the example above, to activate the overriding format, you need to add this to your theme's functions.php file.
|
||||
|
||||
<?php
|
||||
function my_em_custom_formats( $array ){
|
||||
$my_formats = array('dbem_event_list_item_format'); //the format you want to override, corresponding to file above.
|
||||
return $array + $my_formats; //return the default array and your formats.
|
||||
}
|
||||
add_filter('em_formats_filter', 'my_em_custom_formats', 1, 1);
|
||||
?>
|
||||
|
||||
If you want to add more than one format, add more option names to the $my_formats array and create the corresponding php file.
|
28
plugins/events-manager/forms/bookingform/booking-fields.php
Normal file
28
plugins/events-manager/forms/bookingform/booking-fields.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/*
|
||||
* This file generates the default booking form fields. Events Manager Pro does not use this file.
|
||||
*/
|
||||
/* @var $EM_Event EM_Event */
|
||||
//Here we have extra information required for the booking.
|
||||
?>
|
||||
<?php if( !is_user_logged_in() && apply_filters('em_booking_form_show_register_form',true) ): ?>
|
||||
<?php //User can book an event without registering, a username will be created for them based on their email and a random password will be created. ?>
|
||||
<input type="hidden" name="register_user" value="1" />
|
||||
<p>
|
||||
<label for='user_name'><?php _e('Name','events-manager') ?></label>
|
||||
<input type="text" name="user_name" id="user_name" class="input" value="<?php if(!empty($_REQUEST['user_name'])) echo esc_attr($_REQUEST['user_name']); ?>" />
|
||||
</p>
|
||||
<p>
|
||||
<label for='dbem_phone'><?php _e('Phone','events-manager') ?></label>
|
||||
<input type="text" name="dbem_phone" id="dbem_phone" class="input" value="<?php if(!empty($_REQUEST['dbem_phone'])) echo esc_attr($_REQUEST['dbem_phone']); ?>" />
|
||||
</p>
|
||||
<p>
|
||||
<label for='user_email'><?php _e('E-mail','events-manager') ?></label>
|
||||
<input type="text" name="user_email" id="user_email" class="input" value="<?php if(!empty($_REQUEST['user_email'])) echo esc_attr($_REQUEST['user_email']); ?>" />
|
||||
</p>
|
||||
<?php do_action('em_register_form'); //careful if making an add-on, this will only be used if you're not using custom booking forms ?>
|
||||
<?php endif; ?>
|
||||
<p>
|
||||
<label for='booking_comment'><?php _e('Comment', 'events-manager') ?></label>
|
||||
<textarea name='booking_comment' rows="2" cols="20"><?php echo !empty($_REQUEST['booking_comment']) ? esc_attr($_REQUEST['booking_comment']):'' ?></textarea>
|
||||
</p>
|
40
plugins/events-manager/forms/bookingform/login.php
Normal file
40
plugins/events-manager/forms/bookingform/login.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/*
|
||||
* This file generates the default login form within the booking form (if enabled in options).
|
||||
*/
|
||||
?>
|
||||
<div class="em-booking-login">
|
||||
<form class="em-booking-login-form" action="<?php echo site_url('wp-login.php', 'login_post'); ?>" method="post">
|
||||
<p><?php esc_html_e('Log in if you already have an account with us.','events-manager'); ?></p>
|
||||
<p>
|
||||
<label><?php esc_html_e( 'Username','events-manager') ?></label>
|
||||
<input type="text" name="log" class="input" value="" />
|
||||
</p>
|
||||
<p>
|
||||
<label><?php esc_html_e( 'Password','events-manager') ?></label>
|
||||
<input type="password" name="pwd" class="input" value="" />
|
||||
</p>
|
||||
<?php do_action('login_form'); ?>
|
||||
<input type="submit" name="wp-submit" id="em_wp-submit" value="<?php esc_html_e('Log In', 'events-manager'); ?>" tabindex="100" />
|
||||
<input name="rememberme" type="checkbox" id="em_rememberme" value="forever" /> <label><?php esc_html_e( 'Remember Me','events-manager') ?></label>
|
||||
<input type="hidden" name="redirect_to" value="<?php echo esc_url( get_site_url(false, $_SERVER['REQUEST_URI']) ); ?>#em-booking" />
|
||||
<br />
|
||||
<?php
|
||||
//Signup Links
|
||||
if ( get_option('users_can_register') ) {
|
||||
echo "<br />";
|
||||
if ( function_exists('bp_get_signup_page') ) { //Buddypress
|
||||
$register_link = bp_get_signup_page();
|
||||
}elseif ( file_exists( ABSPATH."/wp-signup.php" ) ) { //MU + WP3
|
||||
$register_link = site_url('wp-signup.php', 'login');
|
||||
} else {
|
||||
$register_link = site_url('wp-login.php?action=register', 'login');
|
||||
}
|
||||
?>
|
||||
<a href="<?php echo $register_link ?>"><?php esc_html_e('Sign Up','events-manager') ?></a> |
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<a href="<?php echo site_url('wp-login.php?action=lostpassword', 'login') ?>" title="<?php esc_html_e('Password Lost and Found', 'events-manager') ?>"><?php esc_html_e('Lost your password?', 'events-manager') ?></a>
|
||||
</form>
|
||||
</div>
|
52
plugins/events-manager/forms/bookingform/ticket-single.php
Normal file
52
plugins/events-manager/forms/bookingform/ticket-single.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/*
|
||||
* This file generates the input fields for an event with a single ticket and settings set to not show a table for single tickets (default setting)
|
||||
* If you want to add to this form this, you'd be better off hooking into the actions below.
|
||||
*/
|
||||
/* @var $EM_Ticket EM_Ticket */
|
||||
/* @var $EM_Event EM_Event */
|
||||
global $allowedposttags;
|
||||
do_action('em_booking_form_ticket_header', $EM_Ticket); //do not delete
|
||||
/*
|
||||
* This variable can be overridden, by hooking into the em_booking_form_tickets_cols filter and adding your collumns into this array.
|
||||
* Then, you should create a em_booking_form_ticket_field_arraykey action for your collumn data, which will pass a ticket and event object.
|
||||
*/
|
||||
$collumns = $EM_Event->get_tickets()->get_ticket_collumns(); //array of collumn type => title
|
||||
foreach( $collumns as $type => $name ): ?>
|
||||
<?php
|
||||
//output collumn by type, or call a custom action
|
||||
switch($type){
|
||||
case 'type':
|
||||
if(!empty($EM_Ticket->ticket_description)){ //show description if there is one
|
||||
?><p class="ticket-desc"><?php echo wp_kses($EM_Ticket->ticket_description,$allowedposttags); ?></p><?php
|
||||
}
|
||||
break;
|
||||
case 'price':
|
||||
?><p class="ticket-price"><label><?php echo $name; ?></label><strong><?php echo $EM_Ticket->get_price(true); ?></strong></p><?php
|
||||
break;
|
||||
case 'spaces':
|
||||
if( $EM_Ticket->get_available_spaces() > 1 && ( empty($EM_Ticket->ticket_max) || $EM_Ticket->ticket_max > 1 ) ): //more than one space available ?>
|
||||
<p class="em-tickets-spaces">
|
||||
<label for='em_tickets'><?php echo $name; ?></label>
|
||||
<?php
|
||||
$default = !empty($_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']) ? $_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']:0;
|
||||
$spaces_options = $EM_Ticket->get_spaces_options(false,$default);
|
||||
if( $spaces_options ){
|
||||
echo $spaces_options;
|
||||
}else{
|
||||
echo "<strong>".__('N/A','events-manager')."</strong>";
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<?php do_action('em_booking_form_ticket_spaces', $EM_Ticket); //do not delete ?>
|
||||
<?php else: //if only one space or ticket max spaces per booking is 1 ?>
|
||||
<input type="hidden" name="em_tickets[<?php echo $EM_Ticket->ticket_id ?>][spaces]" value="1" class="em-ticket-select" />
|
||||
<?php do_action('em_booking_form_ticket_spaces', $EM_Ticket); //do not delete ?>
|
||||
<?php endif;
|
||||
break;
|
||||
default:
|
||||
do_action('em_booking_form_ticket_field_'.$type, $EM_Ticket, $EM_Event);
|
||||
break;
|
||||
}
|
||||
endforeach; ?>
|
||||
<?php do_action('em_booking_form_ticket_footer', $EM_Ticket); //do not delete ?>
|
60
plugins/events-manager/forms/bookingform/tickets-list.php
Normal file
60
plugins/events-manager/forms/bookingform/tickets-list.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*
|
||||
* This file generates a tabular list of tickets for the event booking forms with input values for choosing ticket spaces.
|
||||
* If you want to add to this form this, you'd be better off hooking into the actions below.
|
||||
*/
|
||||
/* @var $EM_Event EM_Event */
|
||||
global $allowedposttags;
|
||||
$EM_Tickets = $EM_Event->get_bookings()->get_tickets(); //already instantiated, so should be a quick retrieval.
|
||||
/*
|
||||
* This variable can be overridden, by hooking into the em_booking_form_tickets_cols filter and adding your collumns into this array.
|
||||
* Then, you should create a em_booking_form_tickets_col_arraykey action for your collumn data, which will pass a ticket and event object.
|
||||
*/
|
||||
$collumns = $EM_Tickets->get_ticket_collumns(); //array of collumn type => title
|
||||
?>
|
||||
<table class="em-tickets" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<?php foreach($collumns as $type => $name): ?>
|
||||
<th class="em-bookings-ticket-table-<?php echo $type; ?>"><?php echo $name; ?></th>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php foreach( $EM_Tickets->tickets as $EM_Ticket ): /* @var $EM_Ticket EM_Ticket */ ?>
|
||||
<?php if( $EM_Ticket->is_displayable() ): ?>
|
||||
<?php do_action('em_booking_form_tickets_loop_header', $EM_Ticket); //do not delete ?>
|
||||
<tr class="em-ticket" id="em-ticket-<?php echo $EM_Ticket->ticket_id; ?>">
|
||||
<?php foreach( $collumns as $type => $name ): ?>
|
||||
<?php
|
||||
//output collumn by type, or call a custom action
|
||||
switch($type){
|
||||
case 'type':
|
||||
?>
|
||||
<td class="em-bookings-ticket-table-type"><?php echo wp_kses_data($EM_Ticket->ticket_name); ?><?php if(!empty($EM_Ticket->ticket_description)) :?><br><span class="ticket-desc"><?php echo wp_kses($EM_Ticket->ticket_description,$allowedposttags); ?></span><?php endif; ?></td>
|
||||
<?php
|
||||
break;
|
||||
case 'price':
|
||||
?>
|
||||
<td class="em-bookings-ticket-table-price"><?php echo $EM_Ticket->get_price(true); ?></td>
|
||||
<?php
|
||||
break;
|
||||
case 'spaces':
|
||||
?>
|
||||
<td class="em-bookings-ticket-table-spaces">
|
||||
<?php
|
||||
$default = !empty($_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']) ? $_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']:0;
|
||||
$spaces_options = $EM_Ticket->get_spaces_options(true,$default);
|
||||
echo ( $spaces_options ) ? $spaces_options:"<strong>".__('N/A','events-manager')."</strong>";
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
break;
|
||||
default:
|
||||
do_action('em_booking_form_tickets_col_'.$type, $EM_Ticket, $EM_Event);
|
||||
break;
|
||||
}
|
||||
?>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
<?php do_action('em_booking_form_tickets_loop_footer', $EM_Ticket); //do not delete ?>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
120
plugins/events-manager/forms/event-editor.php
Normal file
120
plugins/events-manager/forms/event-editor.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to the event editor. If at all possible, try making customizations using CSS, jQuery, or using our hooks and filters. - 2012-02-14 */
|
||||
/*
|
||||
* To ensure compatability, it is recommended you maintain class, id and form name attributes, unless you now what you're doing.
|
||||
* You also must keep the _wpnonce hidden field in this form too.
|
||||
*/
|
||||
global $EM_Event, $EM_Notices, $bp;
|
||||
|
||||
//check that user can access this page
|
||||
if( is_object($EM_Event) && !$EM_Event->can_manage('edit_events','edit_others_events') ){
|
||||
?>
|
||||
<div class="wrap"><h2><?php esc_html_e('Unauthorized Access','events-manager'); ?></h2><p><?php echo sprintf(__('You do not have the rights to manage this %s.','events-manager'),__('Event','events-manager')); ?></p></div>
|
||||
<?php
|
||||
return false;
|
||||
}elseif( !is_object($EM_Event) ){
|
||||
$EM_Event = new EM_Event();
|
||||
}
|
||||
$required = apply_filters('em_required_html','<i>*</i>');
|
||||
|
||||
echo $EM_Notices;
|
||||
//Success notice
|
||||
if( !empty($_REQUEST['success']) ){
|
||||
if(!get_option('dbem_events_form_reshow')) return false;
|
||||
}
|
||||
?>
|
||||
<form enctype='multipart/form-data' id="event-form" class="em-event-admin-editor <?php if( $EM_Event->is_recurring() ) echo 'em-event-admin-recurring' ?>" method="post" action="<?php echo esc_url(add_query_arg(array('success'=>null))); ?>">
|
||||
<div class="wrap">
|
||||
<?php do_action('em_front_event_form_header'); ?>
|
||||
<?php if(get_option('dbem_events_anonymous_submissions') && !is_user_logged_in()): ?>
|
||||
<h3 class="event-form-submitter"><?php esc_html_e( 'Your Details', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-submitter">
|
||||
<p>
|
||||
<label><?php esc_html_e('Name', 'events-manager'); ?></label>
|
||||
<input type="text" name="event_owner_name" id="event-owner-name" value="<?php echo esc_attr($EM_Event->event_owner_name); ?>" />
|
||||
</p>
|
||||
<p>
|
||||
<label><?php esc_html_e('Email', 'events-manager'); ?></label>
|
||||
<input type="text" name="event_owner_email" id="event-owner-email" value="<?php echo esc_attr($EM_Event->event_owner_email); ?>" />
|
||||
</p>
|
||||
<?php do_action('em_front_event_form_guest'); ?>
|
||||
<?php do_action('em_font_event_form_guest'); //deprecated ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<h3 class="event-form-name"><?php esc_html_e( 'Event Name', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-name">
|
||||
<input type="text" name="event_name" id="event-name" value="<?php echo esc_attr($EM_Event->event_name,ENT_QUOTES); ?>" /><?php echo $required; ?>
|
||||
<br />
|
||||
<?php esc_html_e('The event name. Example: Birthday party', 'events-manager'); ?>
|
||||
<?php em_locate_template('forms/event/group.php',true); ?>
|
||||
</div>
|
||||
|
||||
<h3 class="event-form-when"><?php esc_html_e( 'When', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-when">
|
||||
<?php
|
||||
if( empty($EM_Event->event_id) && $EM_Event->can_manage('edit_recurring_events','edit_others_recurring_events') && get_option('dbem_recurrence_enabled') ){
|
||||
em_locate_template('forms/event/when-with-recurring.php',true);
|
||||
}elseif( $EM_Event->is_recurring() ){
|
||||
em_locate_template('forms/event/recurring-when.php',true);
|
||||
}else{
|
||||
em_locate_template('forms/event/when.php',true);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php if( get_option('dbem_locations_enabled') ): ?>
|
||||
<h3 class="event-form-where"><?php esc_html_e( 'Where', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-where">
|
||||
<?php em_locate_template('forms/event/location.php',true); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<h3 class="event-form-details"><?php esc_html_e( 'Details', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-details">
|
||||
<div class="event-editor">
|
||||
<?php if( get_option('dbem_events_form_editor') && function_exists('wp_editor') ): ?>
|
||||
<?php wp_editor($EM_Event->post_content, 'em-editor-content', array('textarea_name'=>'content') ); ?>
|
||||
<?php else: ?>
|
||||
<textarea name="content" rows="10" style="width:100%"><?php echo $EM_Event->post_content ?></textarea>
|
||||
<br />
|
||||
<?php esc_html_e( 'Details about the event.', 'events-manager')?> <?php esc_html_e( 'HTML allowed.', 'events-manager')?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="event-extra-details">
|
||||
<?php if(get_option('dbem_attributes_enabled')) { em_locate_template('forms/event/attributes-public.php',true); } ?>
|
||||
<?php if(get_option('dbem_categories_enabled')) { em_locate_template('forms/event/categories-public.php',true); } ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if( $EM_Event->can_manage('upload_event_images','upload_event_images') ): ?>
|
||||
<h3><?php esc_html_e( 'Event Image', 'events-manager'); ?></h3>
|
||||
<div class="inside event-form-image">
|
||||
<?php em_locate_template('forms/event/featured-image-public.php',true); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if( get_option('dbem_rsvp_enabled') && $EM_Event->can_manage('manage_bookings','manage_others_bookings') ) : ?>
|
||||
<!-- START Bookings -->
|
||||
<h3><?php esc_html_e('Bookings/Registration','events-manager'); ?></h3>
|
||||
<div class="inside event-form-bookings">
|
||||
<?php em_locate_template('forms/event/bookings.php',true); ?>
|
||||
</div>
|
||||
<!-- END Bookings -->
|
||||
<?php endif; ?>
|
||||
|
||||
<?php do_action('em_front_event_form_footer'); ?>
|
||||
</div>
|
||||
<p class="submit">
|
||||
<?php if( empty($EM_Event->event_id) ): ?>
|
||||
<input type='submit' class='button-primary' value='<?php echo esc_attr(sprintf( __('Submit %s','events-manager'), __('Event','events-manager') )); ?>' />
|
||||
<?php else: ?>
|
||||
<input type='submit' class='button-primary' value='<?php echo esc_attr(sprintf( __('Update %s','events-manager'), __('Event','events-manager') )); ?>' />
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<input type="hidden" name="event_id" value="<?php echo $EM_Event->event_id; ?>" />
|
||||
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('wpnonce_event_save'); ?>" />
|
||||
<input type="hidden" name="action" value="event_save" />
|
||||
<?php if( !empty($_REQUEST['redirect_to']) ): ?>
|
||||
<input type="hidden" name="redirect_to" value="<?php echo esc_attr($_REQUEST['redirect_to']); ?>" />
|
||||
<?php endif; ?>
|
||||
</form>
|
31
plugins/events-manager/forms/event/attributes-public.php
Normal file
31
plugins/events-manager/forms/event/attributes-public.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is called by templates/forms/event-editor.php to display attribute fields on your event form on your website.
|
||||
* You can override this file by copying it to /wp-content/themes/yourtheme/plugins/events-manager/forms/event/ and editing it there.
|
||||
*/
|
||||
global $EM_Event;
|
||||
/* @var $EM_Event EM_Event */
|
||||
$attributes = em_get_attributes();
|
||||
$has_deprecated = false;
|
||||
?>
|
||||
<?php if( count( $attributes['names'] ) > 0 ) : ?>
|
||||
<?php foreach( $attributes['names'] as $name) : ?>
|
||||
<div class="event-attributes">
|
||||
<label for="em_attributes[<?php echo $name ?>]"><?php echo $name ?></label>
|
||||
<?php if( count($attributes['values'][$name]) > 1 ): ?>
|
||||
<select name="em_attributes[<?php echo $name ?>]">
|
||||
<?php foreach($attributes['values'][$name] as $attribute_val): ?>
|
||||
<?php if( is_array($EM_Event->event_attributes) && array_key_exists($name, $EM_Event->event_attributes) && $EM_Event->event_attributes[$name]==$attribute_val ): ?>
|
||||
<option selected="selected"><?php echo $attribute_val; ?></option>
|
||||
<?php else: ?>
|
||||
<option><?php echo $attribute_val; ?></option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php else: ?>
|
||||
<?php $default_value = (!empty($attributes['values'][$name][0])) ? $attributes['values'][$name][0]:''; ?>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo array_key_exists($name, $EM_Event->event_attributes) ? esc_attr($EM_Event->event_attributes[$name], ENT_QUOTES):''; ?>" value="<?php echo $default_value; ?>" />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
89
plugins/events-manager/forms/event/attributes.php
Normal file
89
plugins/events-manager/forms/event/attributes.php
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
global $EM_Event;
|
||||
$attributes = em_get_attributes();
|
||||
$has_deprecated = false;
|
||||
?>
|
||||
<div id="event-attributes">
|
||||
<?php if( !empty($attributes['names']) && count( $attributes['names'] ) > 0 ) : ?>
|
||||
<table class="form-table">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<td><strong>Attribute Name</strong></td>
|
||||
<td><strong>Value</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="mtm_body">
|
||||
<?php
|
||||
$count = 1;
|
||||
foreach( $attributes['names'] as $name){
|
||||
?>
|
||||
<tr valign="top" id="em_attribute_<?php echo $count ?>">
|
||||
<td scope="row"><?php echo $name ?></td>
|
||||
<td>
|
||||
<?php if( count($attributes['values'][$name]) > 1 ): ?>
|
||||
<select name="em_attributes[<?php echo $name ?>]">
|
||||
<?php foreach($attributes['values'][$name] as $attribute_val): ?>
|
||||
<?php if( array_key_exists($name, $EM_Event->event_attributes) && $EM_Event->event_attributes[$name]==$attribute_val ): ?>
|
||||
<option selected="selected"><?php echo $attribute_val; ?></option>
|
||||
<?php else: ?>
|
||||
<option><?php echo $attribute_val; ?></option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php else: ?>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo array_key_exists($name, $EM_Event->event_attributes) ? esc_attr($EM_Event->event_attributes[$name], ENT_QUOTES):''; ?>" />
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
if($count == 1){
|
||||
?>
|
||||
<tr><td colspan="2"><?php echo sprintf(__("You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the <a href='%s'>settings page</a>",'events-manager'),EM_ADMIN_URL ."&page=events-manager-options"); ?></td></tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if( count(array_diff(array_keys($EM_Event->event_attributes), $attributes['names'])) > 0 ): ?>
|
||||
<p><strong><?php _e('Deprecated Attributes', 'events-manager')?></strong></p>
|
||||
<p><em><?php _e("If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these deprecated attributes, give it a blank value and save.",'events-manager') ?></em></p>
|
||||
<table class="form-table">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<td><strong>Attribute Name</strong></td>
|
||||
<td><strong>Value</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="mtm_body">
|
||||
<?php
|
||||
if( is_array($EM_Event->event_attributes) and count($EM_Event->event_attributes) > 0){
|
||||
foreach( $EM_Event->event_attributes as $name => $value){
|
||||
if( is_array($value) ) $value = serialize($value);
|
||||
if( !in_array($name, $attributes['names']) ){
|
||||
?>
|
||||
<tr valign="top" id="em_attribute_<?php echo $count ?>">
|
||||
<td scope="row"><?php echo $name ?></td>
|
||||
<td>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo esc_attr($value, ENT_QUOTES); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
<?php else : ?>
|
||||
<p>
|
||||
<?php _e('In order to use attributes, you must define some in your templates, otherwise they\'ll never show. Go to Events > Settings > General to add attribute placeholders.', 'events-manager'); ?>
|
||||
</p>
|
||||
<script>
|
||||
jQuery(document).ready(function($){ $('#event_attributes').addClass('closed'); });
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
</div>
|
37
plugins/events-manager/forms/event/booking-stats.php
Normal file
37
plugins/events-manager/forms/event/booking-stats.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
global $EM_Event, $post;
|
||||
?>
|
||||
<div id='rsvp-data'>
|
||||
<?php
|
||||
$available_spaces = $EM_Event->get_bookings()->get_available_spaces();
|
||||
$booked_spaces = $EM_Event->get_bookings()->get_booked_spaces();
|
||||
|
||||
if ( count($EM_Event->get_bookings()->bookings) > 0 ) {
|
||||
?>
|
||||
<div class='wrap'>
|
||||
<p><strong><?php echo __('Available Spaces','events-manager').': '.$EM_Event->get_bookings()->get_available_spaces(); ?></strong></p>
|
||||
<p><strong><?php echo __('Confirmed Spaces','events-manager').': '.$EM_Event->get_bookings()->get_booked_spaces(); ?></strong></p>
|
||||
<p><strong><?php echo __('Pending Spaces','events-manager').': '.$EM_Event->get_bookings()->get_pending_spaces(); ?></strong></p>
|
||||
</div>
|
||||
<br class='clear'/>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<p><em><?php _e('No responses yet!', 'events-manager')?></em></p>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div id='major-publishing-actions'>
|
||||
<div id='publishing-action'>
|
||||
<a id='printable' href='<?php echo $EM_Event->get_bookings_url(); ?>'><?php _e('manage bookings','events-manager')?></a><br />
|
||||
<a target='_blank' href='<?php echo EM_ADMIN_URL ."&page=events-manager-bookings&action=bookings_report&event_id=".$EM_Event->event_id ?>'><?php _e('printable view','events-manager')?></a>
|
||||
<?php if( locate_template('plugins/events-manager/templates/csv-event-bookings.php', false) ): ?>
|
||||
<br /><a href='<?php echo EM_ADMIN_URL ."&page=events-manager-bookings&action=export_csv&event_id=".$EM_Event->event_id ?>'><?php _e('export csv','events-manager')?></a>
|
||||
<?php endif; ?>
|
||||
<?php do_action('em_admin_event_booking_options'); ?>
|
||||
<br class='clear'/>
|
||||
</div>
|
||||
<br class='clear'/>
|
||||
</div>
|
||||
</div>
|
109
plugins/events-manager/forms/event/bookings-ticket-form.php
Normal file
109
plugins/events-manager/forms/event/bookings-ticket-form.php
Normal file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/*
|
||||
* Used for both multiple and single tickets. $col_count will always be 1 in single ticket mode, and be a unique number for each ticket starting from 1
|
||||
* This form should have $EM_Ticket and $col_count available globally.
|
||||
*/
|
||||
global $col_count, $EM_Ticket;
|
||||
$col_count = absint($col_count); //now we know it's a number
|
||||
?>
|
||||
<div class="em-ticket-form">
|
||||
<input type="hidden" name="em_tickets[<?php echo $col_count; ?>][ticket_id]" class="ticket_id" value="<?php echo esc_attr($EM_Ticket->ticket_id) ?>" />
|
||||
<div class="em-ticket-form-main">
|
||||
<div class="ticket-name">
|
||||
<label title="<?php esc_attr_e('Enter a ticket name.','events-manager'); ?>"><?php esc_html_e('Name','events-manager') ?></label>
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_name]" value="<?php echo esc_attr($EM_Ticket->ticket_name) ?>" class="ticket_name" />
|
||||
</div>
|
||||
<div class="ticket-description">
|
||||
<label><?php esc_html_e('Description','events-manager') ?></label>
|
||||
<textarea name="em_tickets[<?php echo $col_count; ?>][ticket_description]" class="ticket_description"><?php echo esc_html(wp_unslash($EM_Ticket->ticket_description)) ?></textarea>
|
||||
</div>
|
||||
<div class="ticket-price"><label><?php esc_html_e('Price','events-manager') ?></label><input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_price]" class="ticket_price" value="<?php echo esc_attr($EM_Ticket->get_price_precise()) ?>" /></div>
|
||||
<div class="ticket-spaces">
|
||||
<label title="<?php esc_attr_e('Enter a maximum number of spaces (required).','events-manager'); ?>"><?php esc_html_e('Spaces','events-manager') ?></label>
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_spaces]" value="<?php echo esc_attr($EM_Ticket->ticket_spaces) ?>" class="ticket_spaces" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="em-ticket-form-advanced" style="display:none;">
|
||||
<div class="ticket-spaces ticket-spaces-min">
|
||||
<label title="<?php esc_attr_e('Leave either blank for no upper/lower limit.','events-manager'); ?>"><?php echo esc_html_x('At least','spaces per booking','events-manager');?></label>
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_min]" value="<?php echo esc_attr($EM_Ticket->ticket_min) ?>" class="ticket_min" />
|
||||
<?php esc_html_e('spaces per booking', 'events-manager')?>
|
||||
</div>
|
||||
<div class="ticket-spaces ticket-spaces-max">
|
||||
<label title="<?php esc_attr_e('Leave either blank for no upper/lower limit.','events-manager'); ?>"><?php echo esc_html_x('At most','spaces per booking', 'events-manager'); ?></label>
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_max]" value="<?php echo esc_attr($EM_Ticket->ticket_max) ?>" class="ticket_max" />
|
||||
<?php esc_html_e('spaces per booking', 'events-manager')?>
|
||||
</div>
|
||||
<div class="ticket-dates em-time-range em-date-range">
|
||||
<div class="ticket-dates-from">
|
||||
<label title="<?php esc_attr_e('Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit.','events-manager'); ?>">
|
||||
<?php esc_html_e('Available from','events-manager') ?>
|
||||
</label>
|
||||
<div class="ticket-dates-from-normal">
|
||||
<input type="text" name="ticket_start_pub" class="em-date-input-loc em-date-start" />
|
||||
<input type="hidden" name="em_tickets[<?php echo $col_count; ?>][ticket_start]" class="em-date-input ticket_start" value="<?php echo ( !empty($EM_Ticket->ticket_start) ) ? date("Y-m-d", $EM_Ticket->start_timestamp):''; ?>" />
|
||||
</div>
|
||||
<div class="ticket-dates-from-recurring">
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_start_recurring_days]" size="3" value="<?php if( !empty($EM_Ticket->ticket_meta['recurrences']) && is_numeric($EM_Ticket->ticket_meta['recurrences']['start_days'])) echo absint($EM_Ticket->ticket_meta['recurrences']['start_days']); ?>" />
|
||||
<?php esc_html_e('day(s)','events-manager'); ?>
|
||||
<select name="em_tickets[<?php echo $col_count; ?>][ticket_start_recurring_when]" class="ticket-dates-from-recurring-when">
|
||||
<option value="before" <?php if( !empty($EM_Ticket->ticket_meta['recurrences']['start_days']) && $EM_Ticket->ticket_meta['recurrences']['start_days'] <= 0) echo 'selected="selected"'; ?>><?php echo esc_html(sprintf(_x('%s the event starts','before or after','events-manager'),__('Before','events-manager'))); ?></option>
|
||||
<option value="after" <?php if( !empty($EM_Ticket->ticket_meta['recurrences']['start_days']) && $EM_Ticket->ticket_meta['recurrences']['start_days'] > 0) echo 'selected="selected"'; ?>><?php echo esc_html(sprintf(_x('%s the event starts','before or after','events-manager'),__('After','events-manager'))); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
<?php echo esc_html_x('at', 'time','events-manager'); ?>
|
||||
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="em_tickets[<?php echo $col_count; ?>][ticket_start_time]" value="<?php echo ( !empty($EM_Ticket->ticket_start) ) ? date( em_get_hour_format(), $EM_Ticket->start_timestamp):''; ?>" />
|
||||
</div>
|
||||
<div class="ticket-dates-to">
|
||||
<label title="<?php esc_attr_e('Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit.','events-manager'); ?>">
|
||||
<?php esc_html_e('Available until','events-manager') ?>
|
||||
</label>
|
||||
<div class="ticket-dates-to-normal">
|
||||
<input type="text" name="ticket_end_pub" class="em-date-input-loc em-date-end" />
|
||||
<input type="hidden" name="em_tickets[<?php echo $col_count; ?>][ticket_end]" class="em-date-input ticket_end" value="<?php echo ( !empty($EM_Ticket->ticket_end) ) ? date("Y-m-d", $EM_Ticket->end_timestamp):''; ?>" />
|
||||
</div>
|
||||
<div class="ticket-dates-to-recurring">
|
||||
<input type="text" name="em_tickets[<?php echo $col_count; ?>][ticket_end_recurring_days]" size="3" value="<?php if( !empty($EM_Ticket->ticket_meta['recurrences']['end_days']) ) echo absint($EM_Ticket->ticket_meta['recurrences']['end_days']); ?>" />
|
||||
<?php esc_html_e('day(s)','events-manager'); ?>
|
||||
<select name="em_tickets[<?php echo $col_count; ?>][ticket_end_recurring_when]" class="ticket-dates-to-recurring-when">
|
||||
<option value="before" <?php if( !empty($EM_Ticket->ticket_meta['recurrences']['end_days']) && $EM_Ticket->ticket_meta['recurrences']['end_days'] <= 0) echo 'selected="selected"'; ?>><?php echo esc_html(sprintf(_x('%s the event starts','before or after','events-manager'),__('Before','events-manager'))); ?></option>
|
||||
<option value="after" <?php if( !empty($EM_Ticket->ticket_meta['recurrences']['end_days']) && $EM_Ticket->ticket_meta['recurrences']['end_days'] > 0) echo 'selected="selected"'; ?>><?php echo esc_html(sprintf(_x('%s the event starts','before or after','events-manager'),__('After','events-manager'))); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
<?php echo esc_html_x('at', 'time','events-manager'); ?>
|
||||
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="em_tickets[<?php echo $col_count; ?>][ticket_end_time]" value="<?php echo ( !empty($EM_Ticket->ticket_end) ) ? date( em_get_hour_format(), $EM_Ticket->end_timestamp):''; ?>" />
|
||||
</div>
|
||||
</div>
|
||||
<?php if( !get_option('dbem_bookings_tickets_single') || count($EM_Ticket->get_event()->get_tickets()->tickets) > 1 ): ?>
|
||||
<div class="ticket-required">
|
||||
<label title="<?php esc_attr_e('If checked every booking must select one or the minimum number of this ticket.','events-manager'); ?>"><?php esc_html_e('Required?','events-manager') ?></label>
|
||||
<input type="checkbox" value="1" name="em_tickets[<?php echo $col_count; ?>][ticket_required]" <?php if($EM_Ticket->ticket_required) echo 'checked="checked"'; ?> class="ticket_required" />
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="ticket-type">
|
||||
<label><?php esc_html_e('Available for','events-manager') ?></label>
|
||||
<select name="em_tickets[<?php echo $col_count; ?>][ticket_type]" class="ticket_type">
|
||||
<option value=""><?php _e('Everyone','events-manager'); ?></option>
|
||||
<option value="members" <?php if($EM_Ticket->ticket_members) echo 'selected="selected"'; ?>><?php esc_html_e('Logged In Users','events-manager'); ?></option>
|
||||
<option value="guests" <?php if($EM_Ticket->ticket_guests) echo 'selected="selected"'; ?>><?php esc_html_e('Guest Users','events-manager'); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="ticket-roles" <?php if( !$EM_Ticket->ticket_members ): ?>style="display:none;"<?php endif; ?>>
|
||||
<label><?php _e('Restrict to','events-manager'); ?></label>
|
||||
<div>
|
||||
<?php
|
||||
$WP_Roles = new WP_Roles();
|
||||
foreach($WP_Roles->roles as $role => $role_data){ /* @var $WP_Role WP_Role */
|
||||
?>
|
||||
<input type="checkbox" name="em_tickets[<?php echo $col_count; ?>][ticket_members_roles][]" value="<?php echo esc_attr($role); ?>" <?php if( in_array($role, $EM_Ticket->ticket_members_roles) ) echo 'checked="checked"' ?> class="ticket_members_roles" /> <?php echo esc_html($role_data['name']); ?><br />
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php do_action('em_ticket_edit_form_fields', $col_count, $EM_Ticket); //do not delete, add your extra fields this way, remember to save them too! ?>
|
||||
</div>
|
||||
<div class="ticket-options">
|
||||
<a href="#" class="ticket-options-advanced show"><span class="show-advanced"><?php esc_html_e('Show Advanced Options','events-manager'); ?></span><span class="hide-advanced" style="display:none;"><?php esc_html_e('Hide Advanced Options','events-manager'); ?></span></a>
|
||||
</div>
|
||||
</div>
|
200
plugins/events-manager/forms/event/bookings.php
Normal file
200
plugins/events-manager/forms/event/bookings.php
Normal file
@ -0,0 +1,200 @@
|
||||
<?php
|
||||
global $EM_Event, $post, $allowedposttags, $EM_Ticket, $col_count;
|
||||
$reschedule_warnings = !empty($EM_Event->event_id) && $EM_Event->is_recurring() && $EM_Event->event_rsvp;
|
||||
?>
|
||||
<div id="event-rsvp-box">
|
||||
<input id="event-rsvp" name='event_rsvp' value='1' type='checkbox' <?php echo ($EM_Event->event_rsvp) ? 'checked="checked"' : ''; ?> />
|
||||
|
||||
<?php _e ( 'Enable registration for this event', 'events-manager')?>
|
||||
</div>
|
||||
<div id="event-rsvp-options" style="<?php echo ($EM_Event->event_rsvp) ? '':'display:none;' ?>">
|
||||
<?php
|
||||
do_action('em_events_admin_bookings_header', $EM_Event);
|
||||
//get tickets here and if there are none, create a blank ticket
|
||||
$EM_Tickets = $EM_Event->get_tickets();
|
||||
if( count($EM_Tickets->tickets) == 0 ){
|
||||
$EM_Tickets->tickets[] = new EM_Ticket();
|
||||
$delete_temp_ticket = true;
|
||||
}
|
||||
?>
|
||||
<div class="event-rsvp-options-tickets <?php if( $reschedule_warnings ) echo 'em-recurrence-reschedule'; ?>">
|
||||
<?php
|
||||
//output title
|
||||
if( get_option('dbem_bookings_tickets_single') && count($EM_Tickets->tickets) == 1 ){
|
||||
?>
|
||||
<h4><?php esc_html_e('Ticket Options','events-manager'); ?></h4>
|
||||
<?php
|
||||
}else{
|
||||
?>
|
||||
<h4><?php esc_html_e('Tickets','events-manager'); ?></h4>
|
||||
<?php
|
||||
}
|
||||
//If this event is a recurring template, we need to warn the user that editing tickets will delete previous bookings
|
||||
if( $reschedule_warnings ){
|
||||
?>
|
||||
<div class="recurrence-reschedule-warning">
|
||||
<p><?php esc_html_e( 'Modifications to event tickets will cause all bookings to individual recurrences of this event to be deleted.', 'events-manager'); ?></p>
|
||||
<p>
|
||||
<a href="<?php echo esc_url( add_query_arg(array('scope'=>'all', 'recurrence_id'=>$EM_Event->event_id), em_get_events_admin_url()) ); ?>">
|
||||
<strong><?php esc_html_e('You can edit individual recurrences and disassociate them with this recurring event.', 'events-manager'); ?></strong>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<div id="em-tickets-form" class="em-tickets-form<?php if( $reschedule_warnings && empty($_REQUEST['recreate_tickets']) ) echo ' reschedule-hidden' ?>">
|
||||
<?php
|
||||
//output ticket options
|
||||
if( get_option('dbem_bookings_tickets_single') && count($EM_Tickets->tickets) == 1 ){
|
||||
$col_count = 1;
|
||||
$EM_Ticket = $EM_Tickets->get_first();
|
||||
include( em_locate_template('forms/ticket-form.php') ); //in future we'll be accessing forms/event/bookings-ticket-form.php directly
|
||||
}else{
|
||||
?>
|
||||
<p><em><?php esc_html_e('You can have single or multiple tickets, where certain tickets become available under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc.', 'events-manager'); ?> <?php esc_html_e('Basic HTML is allowed in ticket labels and descriptions.','events-manager'); ?></em></p>
|
||||
<table class="form-table">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<th colspan="2"><?php esc_html_e('Ticket Name','events-manager'); ?></th>
|
||||
<th><?php esc_html_e('Price','events-manager'); ?></th>
|
||||
<th><?php esc_html_e('Min/Max','events-manager'); ?></th>
|
||||
<th><?php esc_html_e('Start/End','events-manager'); ?></th>
|
||||
<th><?php esc_html_e('Avail. Spaces','events-manager'); ?></th>
|
||||
<th><?php esc_html_e('Booked Spaces','events-manager'); ?></th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr valign="top">
|
||||
<td colspan="8">
|
||||
<a href="#" id="em-tickets-add"><?php esc_html_e('Add new ticket','events-manager'); ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<?php
|
||||
$EM_Ticket = new EM_Ticket();
|
||||
$EM_Ticket->event_id = $EM_Event->event_id;
|
||||
array_unshift($EM_Tickets->tickets, $EM_Ticket); //prepend template ticket for JS
|
||||
$col_count = 0;
|
||||
foreach( $EM_Tickets->tickets as $EM_Ticket){
|
||||
/* @var $EM_Ticket EM_Ticket */
|
||||
?>
|
||||
<tbody id="em-ticket-<?php echo $col_count ?>" <?php if( $col_count == 0 ) echo 'style="display:none;"' ?>>
|
||||
<tr class="em-tickets-row">
|
||||
<td class="ticket-status"><span class="<?php if($EM_Ticket->ticket_id && $EM_Ticket->is_available(true, true)){ echo 'ticket_on'; }elseif($EM_Ticket->ticket_id > 0){ echo 'ticket_off'; }else{ echo 'ticket_new'; } ?>"></span></td>
|
||||
<td class="ticket-name">
|
||||
<span class="ticket_name"><?php if($EM_Ticket->ticket_members) echo '* ';?><?php echo wp_kses_data($EM_Ticket->ticket_name); ?></span>
|
||||
<div class="ticket_description"><?php echo wp_kses($EM_Ticket->ticket_description,$allowedposttags); ?></div>
|
||||
<div class="ticket-actions">
|
||||
<a href="#" class="ticket-actions-edit"><?php esc_html_e('Edit','events-manager'); ?></a>
|
||||
<?php if( count($EM_Ticket->get_bookings()->bookings) == 0 ): ?>
|
||||
| <a href="<?php bloginfo('wpurl'); ?>/wp-load.php" class="ticket-actions-delete"><?php esc_html_e('Delete','events-manager'); ?></a>
|
||||
<?php else: ?>
|
||||
| <a href="<?php echo esc_url(add_query_arg('ticket_id', $EM_Ticket->ticket_id, $EM_Event->get_bookings_url())); ?>"><?php esc_html_e('View Bookings','events-manager'); ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="ticket-price">
|
||||
<span class="ticket_price"><?php echo ($EM_Ticket->ticket_price) ? esc_html($EM_Ticket->get_price_precise()) : esc_html__('Free','events-manager'); ?></span>
|
||||
</td>
|
||||
<td class="ticket-limit">
|
||||
<span class="ticket_min">
|
||||
<?php echo ( !empty($EM_Ticket->ticket_min) ) ? esc_html($EM_Ticket->ticket_min):'-'; ?>
|
||||
</span> /
|
||||
<span class="ticket_max"><?php echo ( !empty($EM_Ticket->ticket_max) ) ? esc_html($EM_Ticket->ticket_max):'-'; ?></span>
|
||||
</td>
|
||||
<td class="ticket-time">
|
||||
<span class="ticket_start ticket-dates-from-normal"><?php echo ( !empty($EM_Ticket->ticket_start) ) ? date(get_option('dbem_date_format'), $EM_Ticket->start_timestamp):''; ?></span>
|
||||
<span class="ticket_start_recurring_days ticket-dates-from-recurring"><?php if( !empty($EM_Ticket->ticket_meta['recurrences']) ) echo $EM_Ticket->ticket_meta['recurrences']['start_days']; ?></span>
|
||||
<span class="ticket_start_recurring_days_text ticket-dates-from-recurring <?php if( !empty($EM_Ticket->ticket_meta['recurrences']) && !is_numeric($EM_Ticket->ticket_meta['recurrences']['start_days']) ) echo 'hidden'; ?>"><?php _e('day(s)','events-manager'); ?></span>
|
||||
<span class="ticket_start_time"><?php echo ( !empty($EM_Ticket->ticket_start) ) ? date( em_get_hour_format(), $EM_Ticket->start_timestamp):''; ?></span>
|
||||
<br />
|
||||
<span class="ticket_end ticket-dates-from-normal"><?php echo ( !empty($EM_Ticket->ticket_end) ) ? date(get_option('dbem_date_format'), $EM_Ticket->end_timestamp):''; ?></span>
|
||||
<span class="ticket_end_recurring_days ticket-dates-from-recurring"><?php if( !empty($EM_Ticket->ticket_meta['recurrences']) ) echo $EM_Ticket->ticket_meta['recurrences']['end_days']; ?></span>
|
||||
<span class="ticket_end_recurring_days_text ticket-dates-from-recurring <?php if( !empty($EM_Ticket->ticket_meta['recurrences']) && !is_numeric($EM_Ticket->ticket_meta['recurrences']['end_days']) ) echo 'hidden'; ?>"><?php _e('day(s)','events-manager'); ?></span>
|
||||
<span class="ticket_end_time"><?php echo ( !empty($EM_Ticket->ticket_end) ) ? date( em_get_hour_format(), $EM_Ticket->end_timestamp):''; ?></span>
|
||||
</td>
|
||||
<td class="ticket-qty">
|
||||
<span class="ticket_available_spaces"><?php echo $EM_Ticket->get_available_spaces(); ?></span>/
|
||||
<span class="ticket_spaces"><?php echo $EM_Ticket->get_spaces() ? $EM_Ticket->get_spaces() : '-'; ?></span>
|
||||
</td>
|
||||
<td class="ticket-booked-spaces">
|
||||
<span class="ticket_booked_spaces"><?php echo $EM_Ticket->get_booked_spaces(); ?></span>
|
||||
</td>
|
||||
<?php do_action('em_event_edit_ticket_td', $EM_Ticket); ?>
|
||||
</tr>
|
||||
<tr class="em-tickets-row-form" style="display:none;">
|
||||
<td colspan="<?php echo apply_filters('em_event_edit_ticket_td_colspan', 7); ?>">
|
||||
<?php include( em_locate_template('forms/event/bookings-ticket-form.php')); ?>
|
||||
<div class="em-ticket-form-actions">
|
||||
<button type="button" class="ticket-actions-edited"><?php esc_html_e('Close Ticket Editor','events-manager')?></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<?php
|
||||
$col_count++;
|
||||
}
|
||||
array_shift($EM_Tickets->tickets);
|
||||
?>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php if( $reschedule_warnings ): //If this event is a recurring template, we need to warn the user that editing tickets will delete previous bookings ?>
|
||||
<div class="recurrence-reschedule-buttons">
|
||||
<a href="<?php echo esc_url(add_query_arg('recreate_tickets', null)); ?>" class="button-secondary em-button em-reschedule-cancel<?php if( empty($_REQUEST['recreate_tickets']) ) echo ' reschedule-hidden'; ?>" data-target=".em-tickets-form">
|
||||
<?php esc_html_e('Cancel Ticket Recreation', 'events-manager'); ?>
|
||||
</a>
|
||||
<a href="<?php echo esc_url(add_query_arg('recreate_tickets', '1')); ?>" class="em-reschedule-trigger em-button button-secondary<?php if( !empty($_REQUEST['recreate_tickets']) ) echo ' reschedule-hidden'; ?>" data-target=".em-tickets-form">
|
||||
<?php esc_html_e('Modify Recurring Event Tickets ', 'events-manager'); ?>
|
||||
</a>
|
||||
<input type="hidden" name="event_recreate_tickets" class="em-reschedule-value" value="<?php echo empty($_REQUEST['recreate_tickets']) ? 0:1 ?>" />
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div id="em-booking-options" class="em-booking-options">
|
||||
<?php if( !get_option('dbem_bookings_tickets_single') || count($EM_Ticket->get_event()->get_tickets()->tickets) > 1 ): ?>
|
||||
<h4><?php esc_html_e('Event Options','events-manager'); ?></h4>
|
||||
<p>
|
||||
<label><?php esc_html_e('Total Spaces','events-manager'); ?></label>
|
||||
<input type="text" name="event_spaces" value="<?php if( $EM_Event->event_spaces > 0 ){ echo $EM_Event->event_spaces; } ?>" /><br />
|
||||
<em><?php esc_html_e('Individual tickets with remaining spaces will not be available if total booking spaces reach this limit. Leave blank for no limit.','events-manager'); ?></em>
|
||||
</p>
|
||||
<p>
|
||||
<label><?php esc_html_e('Maximum Spaces Per Booking','events-manager'); ?></label>
|
||||
<input type="text" name="event_rsvp_spaces" value="<?php if( $EM_Event->event_rsvp_spaces > 0 ){ echo $EM_Event->event_rsvp_spaces; } ?>" /><br />
|
||||
<em><?php esc_html_e('If set, the total number of spaces for a single booking to this event cannot exceed this amount.','events-manager'); ?><?php esc_html_e('Leave blank for no limit.','events-manager'); ?></em>
|
||||
</p>
|
||||
<p>
|
||||
<label><?php esc_html_e('Booking Cut-Off Date','events-manager'); ?></label>
|
||||
<span class="em-booking-date-normal">
|
||||
<span class="em-date-single">
|
||||
<input id="em-bookings-date-loc" class="em-date-input-loc" type="text" />
|
||||
<input id="em-bookings-date" class="em-date-input" type="hidden" name="event_rsvp_date" value="<?php echo $EM_Event->event_rsvp_date; ?>" />
|
||||
</span>
|
||||
</span>
|
||||
<span class="em-booking-date-recurring">
|
||||
<input type="text" name="recurrence_rsvp_days" size="3" value="<?php echo absint($EM_Event->recurrence_rsvp_days); ?>" />
|
||||
<?php _e('day(s)','events-manager'); ?>
|
||||
<select name="recurrence_rsvp_days_when">
|
||||
<option value="before" <?php if( !empty($EM_Event->recurrence_rsvp_days) && $EM_Event->recurrence_rsvp_days <= 0) echo 'selected="selected"'; ?>><?php echo sprintf(_x('%s the event starts','before or after','events-manager'),__('Before','events-manager')); ?></option>
|
||||
<option value="after" <?php if( !empty($EM_Event->recurrence_rsvp_days) && $EM_Event->recurrence_rsvp_days > 0) echo 'selected="selected"'; ?>><?php echo sprintf(_x('%s the event starts','before or after','events-manager'),__('After','events-manager')); ?></option>
|
||||
</select>
|
||||
<?php _e('at','events-manager'); ?>
|
||||
</span>
|
||||
<input type="text" name="event_rsvp_time" class="em-time-input" maxlength="8" size="8" value="<?php echo date( em_get_hour_format(), $EM_Event->rsvp_end ); ?>" />
|
||||
<br />
|
||||
<em><?php esc_html_e('This is the definite date after which bookings will be closed for this event, regardless of individual ticket settings above. Default value will be the event start date.','events-manager'); ?></em>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php
|
||||
if( !empty($delete_temp_ticket) ){
|
||||
array_pop($EM_Tickets->tickets);
|
||||
}
|
||||
do_action('em_events_admin_bookings_footer', $EM_Event);
|
||||
?>
|
||||
</div>
|
23
plugins/events-manager/forms/event/categories-public.php
Normal file
23
plugins/events-manager/forms/event/categories-public.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is called by templates/forms/location-editor.php to display fields for uploading images on your event form on your website. This does not affect the admin featured image section.
|
||||
* You can override this file by copying it to /wp-content/themes/yourtheme/plugins/events-manager/forms/event/ and editing it there.
|
||||
*/
|
||||
global $EM_Event;
|
||||
/* @var $EM_Event EM_Event */
|
||||
$categories = EM_Categories::get(array('orderby'=>'name','hide_empty'=>0));
|
||||
?>
|
||||
<?php if( count($categories) > 0 ): ?>
|
||||
<div class="event-categories">
|
||||
<!-- START Categories -->
|
||||
<label for="event_categories[]"><?php _e ( 'Category:', 'events-manager'); ?></label>
|
||||
<select name="event_categories[]" multiple size="10">
|
||||
<?php
|
||||
$selected = $EM_Event->get_categories()->get_ids();
|
||||
$walker = new EM_Walker_CategoryMultiselect();
|
||||
$args_em = array( 'hide_empty' => 0, 'name' => 'event_categories[]', 'hierarchical' => true, 'id' => EM_TAXONOMY_CATEGORY, 'taxonomy' => EM_TAXONOMY_CATEGORY, 'selected' => $selected, 'walker'=> $walker);
|
||||
echo walk_category_dropdown_tree($categories, 0, $args_em);
|
||||
?></select>
|
||||
<!-- END Categories -->
|
||||
</div>
|
||||
<?php endif; ?>
|
20
plugins/events-manager/forms/event/featured-image-public.php
Normal file
20
plugins/events-manager/forms/event/featured-image-public.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is called by templates/forms/location-editor.php to display fields for uploading images on your event form on your website. This does not affect the admin featured image section.
|
||||
* You can override this file by copying it to /wp-content/themes/yourtheme/plugins/events-manager/forms/event/ and editing it there.
|
||||
*/
|
||||
global $EM_Event;
|
||||
/* @var $EM_Event EM_Event */
|
||||
?>
|
||||
<p id="event-image-img">
|
||||
<?php if ($EM_Event->get_image_url() != '') : ?>
|
||||
<img src='<?php echo $EM_Event->get_image_url('medium'); ?>' alt='<?php echo $EM_Event->event_name ?>'/>
|
||||
<?php else : ?>
|
||||
<?php _e('No image uploaded for this event yet', 'events-manager') ?>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<label for='event_image'><?php _e('Upload/change picture', 'events-manager') ?></label> <input id='event-image' name='event_image' id='event_image' type='file' size='40' />
|
||||
<br />
|
||||
<?php if ($EM_Event->get_image_url() != '') : ?>
|
||||
<label for='event_image_delete'><?php _e('Delete Image?', 'events-manager') ?></label> <input id='event-image-delete' name='event_image_delete' id='event_image_delete' type='checkbox' value='1' />
|
||||
<?php endif; ?>
|
48
plugins/events-manager/forms/event/group.php
Normal file
48
plugins/events-manager/forms/event/group.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
global $EM_Event;
|
||||
if( !function_exists('bp_is_active') || !bp_is_active('groups') ) return false;
|
||||
$user_groups = array();
|
||||
$group_data = groups_get_user_groups(get_current_user_id());
|
||||
if( !is_super_admin() ){
|
||||
foreach( $group_data['groups'] as $group_id ){
|
||||
if( groups_is_user_admin(get_current_user_id(), $group_id) ){
|
||||
$user_groups[] = groups_get_group( array('group_id'=>$group_id));
|
||||
}
|
||||
}
|
||||
$group_count = count($user_groups);
|
||||
}else{
|
||||
$groups = groups_get_groups(array('show_hidden'=>true, 'per_page'=>0));
|
||||
$user_groups = $groups['groups'];
|
||||
$group_count = $groups['total'];
|
||||
}
|
||||
if( count($user_groups) > 0 ){
|
||||
?>
|
||||
<p>
|
||||
<select name="group_id">
|
||||
<option value=""><?php _e('Not a Group Event', 'events-manager'); ?></option>
|
||||
<?php
|
||||
//in case user isn't a group mod, but can edit other users' events
|
||||
if( !empty($EM_Event->group_id) && !in_array($EM_Event->group_id, $group_data['groups']) ){
|
||||
$other_group = groups_get_group( array('group_id'=>$EM_Event->group_id));
|
||||
?>
|
||||
<option value="<?php echo $other_group->id; ?>" selected="selected"><?php echo $other_group->name; ?></option>
|
||||
<?php
|
||||
}
|
||||
//show user groups
|
||||
foreach($user_groups as $BP_Group){
|
||||
?>
|
||||
<option value="<?php echo $BP_Group->id; ?>" <?php echo ($BP_Group->id == $EM_Event->group_id) ? 'selected="selected"':''; ?>><?php echo $BP_Group->name; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<br />
|
||||
<em><?php _e ( 'Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking.', 'events-manager')?></em>
|
||||
</p>
|
||||
<?php if( is_super_admin() ): ?>
|
||||
<p><em><?php _e ( 'As a site admin, you see all group events, users will only be able to choose groups they are admins of.', 'events-manager')?></em></p>
|
||||
<?php endif;
|
||||
|
||||
}else{
|
||||
?><p><em><?php _e('No groups defined yet.','events-manager'); ?></em></p><?php
|
||||
}
|
128
plugins/events-manager/forms/event/location.php
Normal file
128
plugins/events-manager/forms/event/location.php
Normal file
@ -0,0 +1,128 @@
|
||||
<?php
|
||||
global $EM_Event;
|
||||
$required = apply_filters('em_required_html','<i>*</i>');
|
||||
?>
|
||||
<?php if( !get_option('dbem_require_location') && !get_option('dbem_use_select_for_locations') ): ?>
|
||||
<div class="em-location-data-nolocation">
|
||||
<p>
|
||||
<input type="checkbox" name="no_location" id="no-location" value="1" <?php if( $EM_Event->location_id === '0' || $EM_Event->location_id === 0 ) echo 'checked="checked"'; ?> />
|
||||
<?php _e('This event does not have a physical location.','events-manager'); ?>
|
||||
</p>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
$('#no-location').change(function(){
|
||||
if( $('#no-location').is(':checked') ){
|
||||
$('#em-location-data').hide();
|
||||
}else{
|
||||
$('#em-location-data').show();
|
||||
}
|
||||
}).trigger('change');
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div id="em-location-data" class="em-location-data">
|
||||
<div id="location_coordinates" style='display: none;'>
|
||||
<input id='location-latitude' name='location_latitude' type='text' value='<?php echo esc_attr($EM_Event->get_location()->location_latitude); ?>' size='15' />
|
||||
<input id='location-longitude' name='location_longitude' type='text' value='<?php echo esc_attr($EM_Event->get_location()->location_longitude); ?>' size='15' />
|
||||
</div>
|
||||
<?php if( get_option('dbem_use_select_for_locations') || !$EM_Event->can_manage('edit_locations','edit_others_locations') ) : ?>
|
||||
<table class="em-location-data">
|
||||
<tr class="em-location-data-select">
|
||||
<th><?php esc_html_e('Location:','events-manager') ?> </th>
|
||||
<td>
|
||||
<select name="location_id" id='location-select-id' size="1">
|
||||
<?php if(!get_option('dbem_require_location',true)): ?><option value="0"><?php esc_html_e('No Location','events-manager'); ?></option><?php endif; ?>
|
||||
<?php
|
||||
$ddm_args = array('blog'=>false, 'private'=>$EM_Event->can_manage('read_private_locations'));
|
||||
$ddm_args['owner'] = (is_user_logged_in() && !current_user_can('read_others_locations')) ? get_current_user_id() : false;
|
||||
$locations = EM_Locations::get($ddm_args);
|
||||
$selected_location = !empty($EM_Event->location_id) || !empty($EM_Event->event_id) ? $EM_Event->location_id:get_option('dbem_default_location');
|
||||
foreach($locations as $EM_Location) {
|
||||
$selected = ($selected_location == $EM_Location->location_id) ? "selected='selected' " : '';
|
||||
if( $selected ) $found_location = true;
|
||||
?>
|
||||
<option value="<?php echo esc_attr($EM_Location->location_id) ?>" title="<?php echo esc_attr("{$EM_Location->location_latitude},{$EM_Location->location_longitude}"); ?>" <?php echo $selected ?>><?php echo esc_html($EM_Location->location_name); ?></option>
|
||||
<?php
|
||||
}
|
||||
if( empty($found_location) && !empty($EM_Event->location_id) ){
|
||||
$EM_Location = $EM_Event->get_location();
|
||||
if( $EM_Location->post_id ){
|
||||
?>
|
||||
<option value="<?php echo esc_attr($EM_Location->location_id) ?>" title="<?php echo esc_attr("{$EM_Location->location_latitude},{$EM_Location->location_longitude}"); ?>" selected="selected"><?php echo esc_html($EM_Location->location_name); ?></option>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php else : ?>
|
||||
<table class="em-location-data">
|
||||
<?php
|
||||
global $EM_Location;
|
||||
if( $EM_Event->location_id !== 0 ){
|
||||
$EM_Location = $EM_Event->get_location();
|
||||
}elseif(get_option('dbem_default_location') > 0){
|
||||
$EM_Location = em_get_location(get_option('dbem_default_location'));
|
||||
}else{
|
||||
$EM_Location = new EM_Location();
|
||||
}
|
||||
?>
|
||||
<tr class="em-location-data-name">
|
||||
<th><?php _e ( 'Location Name:', 'events-manager')?></th>
|
||||
<td>
|
||||
<input id='location-id' name='location_id' type='hidden' value='<?php echo esc_attr($EM_Location->location_id); ?>' size='15' />
|
||||
<input id="location-name" type="text" name="location_name" value="<?php echo esc_attr($EM_Location->location_name, ENT_QUOTES); ?>" /><?php echo $required; ?>
|
||||
<br />
|
||||
<em id="em-location-search-tip"><?php esc_html_e( 'Create a location or start typing to search a previously created location.', 'events-manager')?></em>
|
||||
<em id="em-location-reset" style="display:none;"><?php esc_html_e('You cannot edit saved locations here.', 'events-manager'); ?> <a href="#"><?php esc_html_e('Reset this form to create a location or search again.', 'events-manager')?></a></em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-address">
|
||||
<th><?php _e ( 'Address:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-address" type="text" name="location_address" value="<?php echo esc_attr($EM_Location->location_address); ; ?>" /><?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-town">
|
||||
<th><?php _e ( 'City/Town:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-town" type="text" name="location_town" value="<?php echo esc_attr($EM_Location->location_town); ?>" /><?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-state">
|
||||
<th><?php _e ( 'State/County:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-state" type="text" name="location_state" value="<?php echo esc_attr($EM_Location->location_state); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-postcode">
|
||||
<th><?php _e ( 'Postcode:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-postcode" type="text" name="location_postcode" value="<?php echo esc_attr($EM_Location->location_postcode); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-region">
|
||||
<th><?php _e ( 'Region:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-region" type="text" name="location_region" value="<?php echo esc_attr($EM_Location->location_region); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-country">
|
||||
<th><?php _e ( 'Country:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<select id="location-country" name="location_country">
|
||||
<option value="0" <?php echo ( $EM_Location->location_country == '' && $EM_Location->location_id == '' && get_option('dbem_location_default_country') == '' ) ? 'selected="selected"':''; ?>><?php _e('none selected','events-manager'); ?></option>
|
||||
<?php foreach(em_get_countries() as $country_key => $country_name): ?>
|
||||
<option value="<?php echo esc_attr($country_key); ?>" <?php echo ( $EM_Location->location_country == $country_key || ($EM_Location->location_country == '' && $EM_Location->location_id == '' && get_option('dbem_location_default_country')==$country_key) ) ? 'selected="selected"':''; ?>><?php echo esc_html($country_name); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select><?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
<?php if ( get_option( 'dbem_gmap_is_active' ) ) em_locate_template('forms/map-container.php',true); ?>
|
||||
<br style="clear:both;" />
|
||||
</div>
|
92
plugins/events-manager/forms/event/recurring-when.php
Normal file
92
plugins/events-manager/forms/event/recurring-when.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/* Used by the admin area to display recurring event time-related information - edit with caution */
|
||||
global $EM_Event;
|
||||
$days_names = em_get_days_names();
|
||||
$hours_format = em_get_hour_format();
|
||||
$classes = array();
|
||||
?>
|
||||
<div id="em-form-recurrence" class="event-form-recurrence event-form-when">
|
||||
<p class="em-time-range">
|
||||
<?php _e('Events start from','events-manager'); ?>
|
||||
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="event_start_time" value="<?php echo date( $hours_format, $EM_Event->start ); ?>" />
|
||||
<?php _e('to','events-manager'); ?>
|
||||
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="event_end_time" value="<?php echo date( $hours_format, $EM_Event->end ); ?>" />
|
||||
<?php _e('All day','events-manager'); ?> <input type="checkbox" class="em-time-allday" name="event_all_day" id="em-time-all-day" value="1" <?php if(!empty($EM_Event->event_all_day)) echo 'checked="checked"'; ?> />
|
||||
</p>
|
||||
<div class="<?php if( !empty($EM_Event->event_id) ) echo 'em-recurrence-reschedule'; ?>">
|
||||
<?php if( !empty($EM_Event->event_id) ): ?>
|
||||
<div class="recurrence-reschedule-warning">
|
||||
<p><em><?php echo sprintf(esc_html__('Current Recurrence Pattern: %s', 'events-manager'), $EM_Event->get_recurrence_description()); ?></em></p>
|
||||
<p><strong><?php esc_html_e( 'Modifications to event dates will cause all recurrences of this event to be deleted and recreated, previous bookings will be deleted.', 'events-manager'); ?></strong></p>
|
||||
<p>
|
||||
<a href="<?php echo esc_url( add_query_arg(array('scope'=>'all', 'recurrence_id'=>$EM_Event->event_id), em_get_events_admin_url()) ); ?>">
|
||||
<strong><?php esc_html_e('You can edit individual recurrences and disassociate them with this recurring event.', 'events-manager'); ?></strong>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="event-form-when-wrap <?php if( !empty($EM_Event->event_id) && empty($_REQUEST['reschedule']) ) echo 'reschedule-hidden'; ?>">
|
||||
<?php _e ( 'This event repeats', 'events-manager'); ?>
|
||||
<select id="recurrence-frequency" name="recurrence_freq">
|
||||
<?php
|
||||
$freq_options = array ("daily" => __ ( 'Daily', 'events-manager'), "weekly" => __ ( 'Weekly', 'events-manager'), "monthly" => __ ( 'Monthly', 'events-manager'), 'yearly' => __('Yearly','events-manager') );
|
||||
em_option_items ( $freq_options, $EM_Event->recurrence_freq );
|
||||
?>
|
||||
</select>
|
||||
<?php _e ( 'every', 'events-manager')?>
|
||||
<input id="recurrence-interval" name='recurrence_interval' size='2' value='<?php echo $EM_Event->recurrence_interval ; ?>' />
|
||||
<span class='interval-desc' id="interval-daily-singular"><?php _e ( 'day', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-daily-plural"><?php _e ( 'days', 'events-manager') ?></span>
|
||||
<span class='interval-desc' id="interval-weekly-singular"><?php _e ( 'week on', 'events-manager'); ?></span>
|
||||
<span class='interval-desc' id="interval-weekly-plural"><?php _e ( 'weeks on', 'events-manager'); ?></span>
|
||||
<span class='interval-desc' id="interval-monthly-singular"><?php _e ( 'month on the', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-monthly-plural"><?php _e ( 'months on the', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-yearly-singular"><?php _e ( 'year', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-yearly-plural"><?php _e ( 'years', 'events-manager') ?></span>
|
||||
<p class="alternate-selector" id="weekly-selector">
|
||||
<?php
|
||||
$saved_bydays = ($EM_Event->is_recurring() && $EM_Event->recurrence_byday != '' ) ? explode ( ",", $EM_Event->recurrence_byday ) : array();
|
||||
em_checkbox_items ( 'recurrence_bydays[]', $days_names, $saved_bydays );
|
||||
?>
|
||||
</p>
|
||||
<p class="alternate-selector" id="monthly-selector" style="display:inline;">
|
||||
<select id="monthly-modifier" name="recurrence_byweekno">
|
||||
<?php
|
||||
$weekno_options = array ("1" => __ ( 'first', 'events-manager'), '2' => __ ( 'second', 'events-manager'), '3' => __ ( 'third', 'events-manager'), '4' => __ ( 'fourth', 'events-manager'), '5' => __ ( 'fifth', 'events-manager'), '-1' => __ ( 'last', 'events-manager') );
|
||||
em_option_items ( $weekno_options, $EM_Event->recurrence_byweekno );
|
||||
?>
|
||||
</select>
|
||||
<select id="recurrence-weekday" name="recurrence_byday">
|
||||
<?php em_option_items ( $days_names, $EM_Event->recurrence_byday ); ?>
|
||||
</select>
|
||||
<?php _e('of each month','events-manager'); ?>
|
||||
|
||||
</p>
|
||||
<div class="event-form-recurrence-when">
|
||||
<p class="em-date-range">
|
||||
<?php _e ( 'Recurrences span from ', 'events-manager'); ?>
|
||||
<input class="em-date-start em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_start_date" value="<?php echo $EM_Event->event_start_date ?>" />
|
||||
<?php _e('to','events-manager'); ?>
|
||||
<input class="em-date-end em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_end_date" value="<?php echo $EM_Event->event_end_date ?>" />
|
||||
</p>
|
||||
<p class="em-duration-range">
|
||||
<?php echo sprintf(__('Each event spans %s day(s)','events-manager'), '<input id="end-days" type="text" size="8" maxlength="8" name="recurrence_days" value="'. $EM_Event->recurrence_days .'" />'); ?>
|
||||
</p>
|
||||
<p class="em-range-description"><em><?php _e( 'For a recurring event, a one day event will be created on each recurring date within this date range.', 'events-manager'); ?></em></p>
|
||||
</div>
|
||||
</div>
|
||||
<?php if( !empty($EM_Event->event_id) ): ?>
|
||||
<div class="recurrence-reschedule-buttons">
|
||||
<a href="<?php echo esc_url(add_query_arg('reschedule', null)); ?>" class="button-secondary em-button em-reschedule-cancel<?php if( empty($_REQUEST['reschedule']) ) echo ' reschedule-hidden'; ?>" data-target=".event-form-when-wrap">
|
||||
<?php esc_html_e('Cancel Reschedule', 'events-manager'); ?>
|
||||
</a>
|
||||
<a href="<?php echo esc_url(add_query_arg('reschedule', '1')); ?>" class="em-reschedule-trigger em-button button-secondary<?php if( !empty($_REQUEST['reschedule']) ) echo ' reschedule-hidden'; ?>" data-target=".event-form-when-wrap">
|
||||
<?php esc_html_e('Reschedule Recurring Event', 'events-manager'); ?>
|
||||
</a>
|
||||
<input type="hidden" name="event_reschedule" class="em-reschedule-value" value="<?php echo empty($_REQUEST['reschedule']) ? 0:1 ?>" />
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
88
plugins/events-manager/forms/event/when-with-recurring.php
Normal file
88
plugins/events-manager/forms/event/when-with-recurring.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/* Used by the buddypress and front-end editors to display event time-related information */
|
||||
global $EM_Event;
|
||||
$days_names = em_get_days_names();
|
||||
$hours_format = em_get_hour_format();
|
||||
$admin_recurring = is_admin() && $EM_Event->is_recurring();
|
||||
?>
|
||||
<!-- START recurrence postbox -->
|
||||
<div id="em-form-with-recurrence" class="event-form-with-recurrence event-form-when">
|
||||
<p><?php _e('This is a recurring event.', 'events-manager'); ?> <input type="checkbox" id="em-recurrence-checkbox" name="recurring" value="1" <?php if($EM_Event->is_recurring()) echo 'checked' ?> /></p>
|
||||
<p class="em-date-range">
|
||||
<span class="em-recurring-text"><?php _e ( 'Recurrences span from ', 'events-manager'); ?></span>
|
||||
<span class="em-event-text"><?php _e ( 'From ', 'events-manager'); ?></span>
|
||||
<input class="em-date-start em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_start_date" value="<?php echo $EM_Event->event_start_date ?>" />
|
||||
<span class="em-recurring-text"><?php _e('to','events-manager'); ?></span>
|
||||
<span class="em-event-text"><?php _e('to','events-manager'); ?></span>
|
||||
<input class="em-date-end em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_end_date" value="<?php echo $EM_Event->event_end_date ?>" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="em-recurring-text"><?php _e('Events start from','events-manager'); ?></span>
|
||||
<span class="em-event-text"><?php _e('Event starts at','events-manager'); ?></span>
|
||||
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="event_start_time" value="<?php echo date( $hours_format, $EM_Event->start ); ?>" />
|
||||
<?php _e('to','events-manager'); ?>
|
||||
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="event_end_time" value="<?php echo date( $hours_format, $EM_Event->end ); ?>" />
|
||||
<?php _e('All day','events-manager'); ?> <input type="checkbox" class="em-time-allday" name="event_all_day" id="em-time-all-day" value="1" <?php if(!empty($EM_Event->event_all_day)) echo 'checked="checked"'; ?> />
|
||||
</p>
|
||||
<div class="em-recurring-text">
|
||||
<p>
|
||||
<?php _e ( 'This event repeats', 'events-manager'); ?>
|
||||
<select id="recurrence-frequency" name="recurrence_freq">
|
||||
<?php
|
||||
$freq_options = array ("daily" => __ ( 'Daily', 'events-manager'), "weekly" => __ ( 'Weekly', 'events-manager'), "monthly" => __ ( 'Monthly', 'events-manager'), 'yearly' => __('Yearly','events-manager') );
|
||||
em_option_items ( $freq_options, $EM_Event->recurrence_freq );
|
||||
?>
|
||||
</select>
|
||||
<?php _e ( 'every', 'events-manager')?>
|
||||
<input id="recurrence-interval" name='recurrence_interval' size='2' value='<?php echo $EM_Event->recurrence_interval ; ?>' />
|
||||
<span class='interval-desc' id="interval-daily-singular"><?php _e ( 'day', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-daily-plural"><?php _e ( 'days', 'events-manager') ?></span>
|
||||
<span class='interval-desc' id="interval-weekly-singular"><?php _e ( 'week on', 'events-manager'); ?></span>
|
||||
<span class='interval-desc' id="interval-weekly-plural"><?php _e ( 'weeks on', 'events-manager'); ?></span>
|
||||
<span class='interval-desc' id="interval-monthly-singular"><?php _e ( 'month on the', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-monthly-plural"><?php _e ( 'months on the', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-yearly-singular"><?php _e ( 'year', 'events-manager')?></span>
|
||||
<span class='interval-desc' id="interval-yearly-plural"><?php _e ( 'years', 'events-manager') ?></span>
|
||||
</p>
|
||||
<p class="alternate-selector" id="weekly-selector">
|
||||
<?php
|
||||
$saved_bydays = ($EM_Event->is_recurring()) ? explode ( ",", $EM_Event->recurrence_byday ) : array();
|
||||
em_checkbox_items ( 'recurrence_bydays[]', $days_names, $saved_bydays );
|
||||
?>
|
||||
</p>
|
||||
<p class="alternate-selector" id="monthly-selector" style="display:inline;">
|
||||
<select id="monthly-modifier" name="recurrence_byweekno">
|
||||
<?php
|
||||
$weekno_options = array ("1" => __ ( 'first', 'events-manager'), '2' => __ ( 'second', 'events-manager'), '3' => __ ( 'third', 'events-manager'), '4' => __ ( 'fourth', 'events-manager'), '-1' => __ ( 'last', 'events-manager') );
|
||||
em_option_items ( $weekno_options, $EM_Event->recurrence_byweekno );
|
||||
?>
|
||||
</select>
|
||||
<select id="recurrence-weekday" name="recurrence_byday">
|
||||
<?php em_option_items ( $days_names, $EM_Event->recurrence_byday ); ?>
|
||||
</select>
|
||||
<?php _e('of each month','events-manager'); ?>
|
||||
</p>
|
||||
<p class="em-duration-range">
|
||||
<?php echo sprintf(__('Each event spans %s day(s)','events-manager'), '<input id="end-days" type="text" size="8" maxlength="8" name="recurrence_days" value="'. $EM_Event->recurrence_days .'" />'); ?>
|
||||
</p>
|
||||
<p class="em-range-description"><em><?php _e( 'For a recurring event, a one day event will be created on each recurring date within this date range.', 'events-manager'); ?></em></p>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
jQuery(document).ready( function($) {
|
||||
$('#em-recurrence-checkbox').change(function(){
|
||||
if( $('#em-recurrence-checkbox').is(':checked') ){
|
||||
$('.em-recurring-text').show();
|
||||
$('.em-event-text').hide();
|
||||
}else{
|
||||
$('.em-recurring-text').hide();
|
||||
$('.em-event-text').show();
|
||||
}
|
||||
});
|
||||
$('#em-recurrence-checkbox').trigger('change');
|
||||
});
|
||||
//]]>
|
||||
</script>
|
||||
</div>
|
28
plugins/events-manager/forms/event/when.php
Normal file
28
plugins/events-manager/forms/event/when.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
global $EM_Event, $post;
|
||||
$hours_format = em_get_hour_format();
|
||||
$required = apply_filters('em_required_html','<i>*</i>');
|
||||
?>
|
||||
<div class="event-form-when" id="em-form-when">
|
||||
<p class="em-date-range">
|
||||
<?php _e ( 'From ', 'events-manager'); ?>
|
||||
<input class="em-date-start em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_start_date" value="<?php echo $EM_Event->event_start_date ?>" />
|
||||
<?php _e('to','events-manager'); ?>
|
||||
<input class="em-date-end em-date-input-loc" type="text" />
|
||||
<input class="em-date-input" type="hidden" name="event_end_date" value="<?php echo $EM_Event->event_end_date ?>" />
|
||||
</p>
|
||||
<p class="em-time-range">
|
||||
<span class="em-event-text"><?php _e('Event starts at','events-manager'); ?></span>
|
||||
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="event_start_time" value="<?php echo date( $hours_format, $EM_Event->start ); ?>" />
|
||||
<?php _e('to','events-manager'); ?>
|
||||
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="event_end_time" value="<?php echo date( $hours_format, $EM_Event->end ); ?>" />
|
||||
<?php _e('All day','events-manager'); ?> <input type="checkbox" class="em-time-all-day" name="event_all_day" id="em-time-all-day" value="1" <?php if(!empty($EM_Event->event_all_day)) echo 'checked="checked"'; ?> />
|
||||
</p>
|
||||
<span id='event-date-explanation'>
|
||||
<?php _e( 'This event spans every day between the beginning and end date, with start/end times applying to each day.', 'events-manager'); ?>
|
||||
</span>
|
||||
</div>
|
||||
<?php if( false && get_option('dbem_recurrence_enabled') && $EM_Event->is_recurrence() ) : //in future, we could enable this and then offer a detach option alongside, which resets the recurrence id and removes the attachment to the recurrence set ?>
|
||||
<input type="hidden" name="recurrence_id" value="<?php echo $EM_Event->recurrence_id; ?>" />
|
||||
<?php endif;
|
70
plugins/events-manager/forms/location-editor.php
Normal file
70
plugins/events-manager/forms/location-editor.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/* WARNING! This file may change in the near future as we intend to add features to the location editor. If at all possible, try making customizations using CSS, jQuery, or using our hooks and filters. - 2012-02-14 */
|
||||
/*
|
||||
* To ensure compatability, it is recommended you maintain class, id and form name attributes, unless you now what you're doing.
|
||||
* You also must keep the _wpnonce hidden field in this form too.
|
||||
*/
|
||||
global $EM_Location, $EM_Notices;
|
||||
//check that user can access this page
|
||||
if( is_object($EM_Location) && !$EM_Location->can_manage('edit_locations','edit_others_locations') ){
|
||||
?>
|
||||
<div class="wrap"><h2><?php esc_html_e('Unauthorized Access','events-manager'); ?></h2><p><?php echo sprintf(__('You do not have the rights to manage this %s.','events-manager'),__('location','events-manager')); ?></p></div>
|
||||
<?php
|
||||
return false;
|
||||
}elseif( !is_object($EM_Location) ){
|
||||
$EM_Location = new EM_Location();
|
||||
}
|
||||
if(!is_admin()) echo $EM_Notices;
|
||||
?>
|
||||
<form enctype='multipart/form-data' id='location-form' method='post' action='<?php echo esc_url(add_query_arg(array('success'=>null))); ?>'>
|
||||
<input type='hidden' name='action' value='location_save' />
|
||||
<input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('location_save'); ?>' />
|
||||
<input type='hidden' name='location_id' value='<?php echo $EM_Location->location_id ?>'/>
|
||||
|
||||
<?php do_action('em_front_location_form_header'); ?>
|
||||
<h3 class="location-form-name"><?php esc_html_e( 'Location Name', 'events-manager'); ?></h3>
|
||||
<div class="inside location-form-name">
|
||||
<input name='location_name' id='location-name' type='text' value='<?php echo esc_attr($EM_Location->location_name, ENT_QUOTES); ?>' size='40' />
|
||||
<br />
|
||||
<?php esc_html_e('The name of the location', 'events-manager') ?>
|
||||
</div>
|
||||
|
||||
<h3 class="location-form-where"><?php esc_html_e( 'Location', 'events-manager'); ?></h3>
|
||||
<div class="inside location-form-where">
|
||||
<?php em_locate_template('forms/location/where.php','events-manager'); ?>
|
||||
</div>
|
||||
|
||||
<h3 class="location-form-details"><?php esc_html_e( 'Details', 'events-manager'); ?></h3>
|
||||
<div class="inside location-form-details">
|
||||
<?php if( get_option('dbem_events_form_editor') && function_exists('wp_editor') ): ?>
|
||||
<?php wp_editor($EM_Location->post_content, 'em-editor-content', array('textarea_name'=>'content') ); ?>
|
||||
<?php else: ?>
|
||||
<textarea name="content" rows="10" style="width:100%"><?php echo $EM_Location->post_content; ?></textarea>
|
||||
<br />
|
||||
<?php esc_html_e( 'Details about the location.', 'events-manager')?> <?php esc_html_e( 'HTML Allowed.', 'events-manager')?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
|
||||
<?php if(get_option('dbem_location_attributes_enabled')){ em_locate_template('forms/location/attributes-public.php',true); } ?>
|
||||
|
||||
<?php if( $EM_Location->can_manage('upload_event_images','upload_event_images') ): ?>
|
||||
<h3 class="location-form-image"><?php esc_html_e( 'Location Image', 'events-manager'); ?></h3>
|
||||
<div class="inside location-form-image" style="padding:10px;">
|
||||
<?php em_locate_template('forms/location/featured-image-public.php',true); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php do_action('em_front_location_form_footer'); ?>
|
||||
|
||||
<?php if( !empty($_REQUEST['redirect_to']) ): ?>
|
||||
<input type="hidden" name="redirect_to" value="<?php echo esc_attr($_REQUEST['redirect_to']); ?>" />
|
||||
<?php endif; ?>
|
||||
<p class='submit'>
|
||||
<?php if( empty($EM_Location->location_id) ): ?>
|
||||
<input type='submit' class='button-primary' value='<?php echo esc_attr(sprintf( __('Submit %s','events-manager'), __('Location','events-manager') )); ?>' />
|
||||
<?php else: ?>
|
||||
<input type='submit' class='button-primary' value='<?php echo esc_attr(sprintf( __('Update %s','events-manager'), __('Location','events-manager') )); ?>' />
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
</form>
|
30
plugins/events-manager/forms/location/attributes-public.php
Normal file
30
plugins/events-manager/forms/location/attributes-public.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is called by templates/forms/location-editor.php to display attribute fields on your location form on your website.
|
||||
* You can override this file by copying it to /wp-content/themes/yourtheme/plugins/events-manager/forms/location/ and editing it there.
|
||||
*/
|
||||
global $EM_Location;
|
||||
/* @var $EM_Location EM_Location */
|
||||
$attributes = em_get_attributes(true); //lattributes only
|
||||
$has_deprecated = false;
|
||||
?>
|
||||
<?php if( count( $attributes['names'] ) > 0 ) : ?>
|
||||
<?php foreach( $attributes['names'] as $name) : ?>
|
||||
<div class="location-attributes">
|
||||
<label for="em_attributes[<?php echo $name ?>]"><?php echo $name ?></label>
|
||||
<?php if( count($attributes['values'][$name]) > 1 ): ?>
|
||||
<select name="em_attributes[<?php echo $name ?>]">
|
||||
<?php foreach($attributes['values'][$name] as $attribute_val): ?>
|
||||
<?php if( is_array($EM_Location->location_attributes) && array_key_exists($name, $EM_Location->location_attributes) && $EM_Location->location_attributes[$name]==$attribute_val ): ?>
|
||||
<option selected="selected"><?php echo $attribute_val; ?></option>
|
||||
<?php else: ?>
|
||||
<option><?php echo $attribute_val; ?></option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php else: ?>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo array_key_exists($name, $EM_Location->location_attributes) ? esc_attr($EM_Location->location_attributes[$name], ENT_QUOTES):''; ?>" />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
89
plugins/events-manager/forms/location/attributes.php
Normal file
89
plugins/events-manager/forms/location/attributes.php
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
global $EM_Location;
|
||||
$attributes = em_get_attributes(true); //get Lattributes
|
||||
$has_deprecated = false;
|
||||
?>
|
||||
<div id="location-attributes">
|
||||
<?php if( !empty($attributes['names']) && count( $attributes['names'] ) > 0 ) : ?>
|
||||
<table class="form-table">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<td><strong>Attribute Name</strong></td>
|
||||
<td><strong>Value</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="mtm_body">
|
||||
<?php
|
||||
$count = 1;
|
||||
foreach( $attributes['names'] as $name){
|
||||
?>
|
||||
<tr valign="top" id="em_attribute_<?php echo $count ?>">
|
||||
<td scope="row"><?php echo $name ?></td>
|
||||
<td>
|
||||
<?php if( count($attributes['values'][$name]) > 1 ): ?>
|
||||
<select name="em_attributes[<?php echo $name ?>]">
|
||||
<?php foreach($attributes['values'][$name] as $attribute_val): ?>
|
||||
<?php if( array_key_exists($name, $EM_Location->location_attributes) && $EM_Location->location_attributes[$name]==$attribute_val ): ?>
|
||||
<option selected="selected"><?php echo $attribute_val; ?></option>
|
||||
<?php else: ?>
|
||||
<option><?php echo $attribute_val; ?></option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php else: ?>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo array_key_exists($name, $EM_Location->location_attributes) ? esc_attr($EM_Location->location_attributes[$name], ENT_QUOTES):''; ?>" />
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
if($count == 1){
|
||||
?>
|
||||
<tr><td colspan="2"><?php echo sprintf(__("You don't have any custom attributes defined in any of your Locations Manager template settings. Please add them the <a href='%s'>settings page</a>",'events-manager'),EM_ADMIN_URL ."&page=locations-manager-options"); ?></td></tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if( count(array_diff(array_keys($EM_Location->location_attributes), $attributes['names'])) > 0 ): ?>
|
||||
<p><strong><?php _e('Deprecated Attributes', 'events-manager')?></strong></p>
|
||||
<p><em><?php _e("If you see any attributes under here, that means they're not used in Locations Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these deprecated attributes, give it a blank value and save.",'events-manager') ?></em></p>
|
||||
<table class="form-table">
|
||||
<thead>
|
||||
<tr valign="top">
|
||||
<td><strong>Attribute Name</strong></td>
|
||||
<td><strong>Value</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="mtm_body">
|
||||
<?php
|
||||
if( is_array($EM_Location->location_attributes) and count($EM_Location->location_attributes) > 0){
|
||||
foreach( $EM_Location->location_attributes as $name => $value){
|
||||
if( is_array($value) ) $value = serialize($value);
|
||||
if( !in_array($name, $attributes['names']) ){
|
||||
?>
|
||||
<tr valign="top" id="em_attribute_<?php echo $count ?>">
|
||||
<td scope="row"><?php echo $name ?></td>
|
||||
<td>
|
||||
<input type="text" name="em_attributes[<?php echo $name ?>]" value="<?php echo esc_attr($value, ENT_QUOTES); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
<?php else : ?>
|
||||
<p>
|
||||
<?php _e('In order to use attributes, you must define some in your templates, otherwise they\'ll never show. Go to Events > Settings > General to add attribute placeholders.', 'events-manager'); ?>
|
||||
</p>
|
||||
<script>
|
||||
jQuery(document).ready(function($){ $('#location_attributes').addClass('closed'); });
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
</div>
|
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is called by templates/forms/location-editor.php to display fields for uploading images on your location form on your website. This does not affect the admin featured image section.
|
||||
* You can override this file by copying it to /wp-content/themes/yourtheme/plugins/events-manager/forms/location/ and editing it there.
|
||||
*/
|
||||
global $EM_Location;
|
||||
/* @var $EM_Location EM_Location */
|
||||
?>
|
||||
<p id="location-image-img">
|
||||
<?php if ($EM_Location->get_image_url() != '') : ?>
|
||||
<img src='<?php echo $EM_Location->get_image_url('medium'); ?>' alt='<?php echo $EM_Location->location_name ?>'/>
|
||||
<?php else : ?>
|
||||
<?php _e('No image uploaded for this location yet', 'events-manager') ?>
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
<label for='location_image'><?php _e('Upload/change picture', 'events-manager') ?></label> <input id='location-image' name='location_image' id='location_image' type='file' size='40' />
|
||||
<br />
|
||||
<?php if ($EM_Location->get_image_url() != '') : ?>
|
||||
<label for='location_image_delete'><?php _e('Delete Image?', 'events-manager') ?></label> <input id='location-image-delete' name='location_image_delete' id='location_image_delete' type='checkbox' value='1' />
|
||||
<?php endif; ?>
|
58
plugins/events-manager/forms/location/where.php
Normal file
58
plugins/events-manager/forms/location/where.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
global $EM_Location, $post;
|
||||
$required = apply_filters('em_required_html','<i>*</i>');
|
||||
?>
|
||||
<?php if ( get_option( 'dbem_gmap_is_active' ) ): ?>
|
||||
<p class="em-location-data-maps-tip"><?php _e("If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please <a href='http://maps.google.com'>try it on maps.google.com</a> by adding all the fields below separated by commas.",'events-manager')?></p>
|
||||
<?php endif; ?>
|
||||
<div id="em-location-data" class="em-location-data">
|
||||
<table class="em-location-data">
|
||||
<tr class="em-location-data-address">
|
||||
<th><?php _e ( 'Address:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-address" type="text" name="location_address" value="<?php echo esc_attr($EM_Location->location_address, ENT_QUOTES); ; ?>" /> <?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-town">
|
||||
<th><?php _e ( 'City/Town:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-town" type="text" name="location_town" value="<?php echo esc_attr($EM_Location->location_town, ENT_QUOTES); ?>" /> <?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-state">
|
||||
<th><?php _e ( 'State/County:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-state" type="text" name="location_state" value="<?php echo esc_attr($EM_Location->location_state, ENT_QUOTES); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-postcode">
|
||||
<th><?php _e ( 'Postcode:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-postcode" type="text" name="location_postcode" value="<?php echo esc_attr($EM_Location->location_postcode, ENT_QUOTES); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-region">
|
||||
<th><?php _e ( 'Region:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<input id="location-region" type="text" name="location_region" value="<?php echo esc_attr($EM_Location->location_region, ENT_QUOTES); ?>" />
|
||||
<input id="location-region-wpnonce" type="hidden" value="<?php echo wp_create_nonce('search_regions'); ?>" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="em-location-data-country">
|
||||
<th><?php _e ( 'Country:', 'events-manager')?> </th>
|
||||
<td>
|
||||
<select id="location-country" name="location_country">
|
||||
<?php foreach(em_get_countries(__('none selected','events-manager')) as $country_key => $country_name): ?>
|
||||
<option value="<?php echo $country_key; ?>" <?php echo ( $EM_Location->location_country === $country_key || ($EM_Location->location_country == '' && $EM_Location->location_id == '' && get_option('dbem_location_default_country')==$country_key) ) ? 'selected="selected"':''; ?>><?php echo $country_name; ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select> <?php echo $required; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php if ( get_option( 'dbem_gmap_is_active' ) ) em_locate_template('forms/map-container.php',true); ?>
|
||||
<br style="clear:both; " />
|
||||
<div id="location_coordinates" style='display: none;'>
|
||||
<input id='location-latitude' name='location_latitude' type='text' value='<?php echo $EM_Location->location_latitude; ?>' size='15' />
|
||||
<input id='location-longitude' name='location_longitude' type='text' value='<?php echo $EM_Location->location_longitude; ?>' size='15' />
|
||||
</div>
|
||||
</div>
|
6
plugins/events-manager/forms/map-container.php
Normal file
6
plugins/events-manager/forms/map-container.php
Normal file
@ -0,0 +1,6 @@
|
||||
<div class="em-location-map-container">
|
||||
<div id='em-map-404' class="em-location-map-404">
|
||||
<p><em><?php _e ( 'Location not found', 'events-manager'); ?></em></p>
|
||||
</div>
|
||||
<div id='em-map' class="em-location-map-content" style='display: none;'></div>
|
||||
</div>
|
13
plugins/events-manager/forms/readme.txt
Normal file
13
plugins/events-manager/forms/readme.txt
Normal file
@ -0,0 +1,13 @@
|
||||
This folder contains specific forms used throughout EM.
|
||||
|
||||
CAREFUL!! If you do override these files, make sure you keep form IDs, actions, filters and other php code of that nature.
|
||||
Doing this could prevent the form from working properly.
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/forms/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
3
plugins/events-manager/forms/ticket-form.php
Normal file
3
plugins/events-manager/forms/ticket-form.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
//DEPRECATED, MODIFY THE INCLUDED TEMPLATE INSTEAD
|
||||
em_locate_template('forms/event/bookings-ticket-form.php', true);
|
2
plugins/events-manager/forms/tickets-form.php
Normal file
2
plugins/events-manager/forms/tickets-form.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
//DEPRECATED, now only using event/bookings-ticket-form.php
|
20
plugins/events-manager/placeholders/attendees.php
Normal file
20
plugins/events-manager/placeholders/attendees.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$people = array();
|
||||
$EM_Bookings = $EM_Event->get_bookings();
|
||||
if( count($EM_Bookings->bookings) > 0 ){
|
||||
?>
|
||||
<ul class="event-attendees">
|
||||
<?php
|
||||
foreach( $EM_Bookings as $EM_Booking){ /* @var $EM_Booking EM_Booking */
|
||||
if($EM_Booking->booking_status == 1 && !in_array($EM_Booking->get_person()->ID, $people) ){
|
||||
$people[] = $EM_Booking->get_person()->ID;
|
||||
echo '<li>'. get_avatar($EM_Booking->get_person()->ID, 50) .'</li>';
|
||||
}elseif($EM_Booking->booking_status == 1 && $EM_Booking->is_no_user() ){
|
||||
echo '<li>'. get_avatar($EM_Booking->get_person()->ID, 50) .'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
20
plugins/events-manager/placeholders/attendeeslist.php
Normal file
20
plugins/events-manager/placeholders/attendeeslist.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$people = array();
|
||||
$EM_Bookings = $EM_Event->get_bookings();
|
||||
if( count($EM_Bookings->bookings) > 0 ){
|
||||
?>
|
||||
<ul class="event-attendees">
|
||||
<?php
|
||||
foreach( $EM_Bookings as $EM_Booking){ /* @var $EM_Booking EM_Booking */
|
||||
if($EM_Booking->booking_status == 1 && !in_array($EM_Booking->get_person()->ID, $people) ){
|
||||
$people[] = $EM_Booking->get_person()->ID;
|
||||
echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>';
|
||||
}elseif($EM_Booking->booking_status == 1 && $EM_Booking->is_no_user() ){
|
||||
echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
20
plugins/events-manager/placeholders/attendeespendinglist.php
Normal file
20
plugins/events-manager/placeholders/attendeespendinglist.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$people = array();
|
||||
$EM_Bookings = $EM_Event->get_bookings();
|
||||
if( count($EM_Bookings->bookings) > 0 ){
|
||||
?>
|
||||
<ul class="event-attendees">
|
||||
<?php
|
||||
foreach( $EM_Bookings as $EM_Booking){ /* @var $EM_Booking EM_Booking */
|
||||
if( $EM_Booking->is_pending() && !in_array($EM_Booking->get_person()->ID, $people) ){
|
||||
$people[] = $EM_Booking->get_person()->ID;
|
||||
echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>';
|
||||
}elseif( $EM_Booking->is_pending() && $EM_Booking->is_no_user() ){
|
||||
echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
34
plugins/events-manager/placeholders/bookingbutton.php
Normal file
34
plugins/events-manager/placeholders/bookingbutton.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*
|
||||
* You can override this by copying this file to wp-content/themesyourthemefolder/plugins/events-manager/placeholders/ and modifying it however you need.
|
||||
* There are a few variables made available to you:
|
||||
*
|
||||
* $EM_Event - EM_Event object
|
||||
*/
|
||||
$notice_full = get_option('dbem_booking_button_msg_full');
|
||||
$button_text = get_option('dbem_booking_button_msg_book');
|
||||
$button_already_booked = get_option('dbem_booking_button_msg_already_booked');
|
||||
$button_closed = get_option('dbem_booking_button_msg_closed');
|
||||
$button_cancel = get_option('dbem_booking_button_msg_cancel');
|
||||
/* @var $EM_Event EM_Event */
|
||||
?>
|
||||
<?php
|
||||
if( is_user_logged_in() ){ //only show this to logged in users
|
||||
ob_start();
|
||||
$EM_Booking = $EM_Event->get_bookings()->has_booking();
|
||||
if( is_object($EM_Booking) && $EM_Booking->booking_status != 3 && get_option('dbem_bookings_user_cancellation') ){
|
||||
?><a id="em-cancel-button_<?php echo $EM_Booking->booking_id; ?>_<?php echo wp_create_nonce('booking_cancel'); ?>" class="button em-cancel-button" href="#"><?php echo $button_cancel; ?></a><?php
|
||||
}elseif( $EM_Event->get_bookings()->is_open() ){
|
||||
if( !is_object($EM_Booking) ){
|
||||
?><a id="em-booking-button_<?php echo $EM_Event->event_id; ?>_<?php echo wp_create_nonce('booking_add_one'); ?>" class="button em-booking-button" href="#"><?php echo $button_text; ?></a><?php
|
||||
}else{
|
||||
?><span class="em-booked-button"><?php echo $button_already_booked ?></span><?php
|
||||
}
|
||||
}elseif( $EM_Event->get_bookings()->get_available_spaces() <= 0 ){
|
||||
?><span class="em-full-button"><?php echo $notice_full ?></span><?php
|
||||
}else{
|
||||
?><span class="em-closed-button"><?php echo $button_closed ?></span><?php
|
||||
}
|
||||
echo apply_filters( 'em_booking_button', ob_get_clean(), $EM_Event );
|
||||
};
|
||||
?>
|
108
plugins/events-manager/placeholders/bookingform.php
Normal file
108
plugins/events-manager/placeholders/bookingform.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/*
|
||||
* This is where the booking form is generated.
|
||||
* For non-advanced users, It's SERIOUSLY NOT recommended you edit this form directly if avoidable, as you can change booking form settings in various less obtrusive and upgrade-safe ways:
|
||||
* - check your booking form options panel in the Booking Options tab in your settings.
|
||||
* - use CSS or jQuery to change the look of your booking forms
|
||||
* - edit the files in the forms/bookingform folder individually instead of this file, to make it more upgrade-safe
|
||||
* - hook into WP action/filters below to modify/generate information
|
||||
* Again, even if you're an advanced user, consider NOT editing this form and using other methods instead.
|
||||
*/
|
||||
|
||||
/* @var $EM_Event EM_Event */
|
||||
global $EM_Notices;
|
||||
//count tickets and available tickets
|
||||
$tickets_count = count($EM_Event->get_bookings()->get_tickets()->tickets);
|
||||
$available_tickets_count = count($EM_Event->get_bookings()->get_available_tickets());
|
||||
//decide whether user can book, event is open for bookings etc.
|
||||
$can_book = is_user_logged_in() || (get_option('dbem_bookings_anonymous') && !is_user_logged_in());
|
||||
$is_open = $EM_Event->get_bookings()->is_open(); //whether there are any available tickets right now
|
||||
$show_tickets = true;
|
||||
//if user is logged out, check for member tickets that might be available, since we should ask them to log in instead of saying 'bookings closed'
|
||||
if( !$is_open && !is_user_logged_in() && $EM_Event->get_bookings()->is_open(true) ){
|
||||
$is_open = true;
|
||||
$can_book = false;
|
||||
$show_tickets = get_option('dbem_bookings_tickets_show_unavailable') && get_option('dbem_bookings_tickets_show_member_tickets');
|
||||
}
|
||||
?>
|
||||
<div id="em-booking" class="em-booking <?php if( get_option('dbem_css_rsvp') ) echo 'css-booking'; ?>">
|
||||
<?php
|
||||
// We are firstly checking if the user has already booked a ticket at this event, if so offer a link to view their bookings.
|
||||
$EM_Booking = $EM_Event->get_bookings()->has_booking();
|
||||
?>
|
||||
<?php if( is_object($EM_Booking) && !get_option('dbem_bookings_double') ): //Double bookings not allowed ?>
|
||||
<p>
|
||||
<?php echo get_option('dbem_bookings_form_msg_attending'); ?>
|
||||
<a href="<?php echo em_get_my_bookings_url(); ?>"><?php echo get_option('dbem_bookings_form_msg_bookings_link'); ?></a>
|
||||
</p>
|
||||
<?php elseif( !$EM_Event->event_rsvp ): //bookings not enabled ?>
|
||||
<p><?php echo get_option('dbem_bookings_form_msg_disabled'); ?></p>
|
||||
<?php elseif( $EM_Event->get_bookings()->get_available_spaces() <= 0 ): ?>
|
||||
<p><?php echo get_option('dbem_bookings_form_msg_full'); ?></p>
|
||||
<?php elseif( !$is_open ): //event has started ?>
|
||||
<p><?php echo get_option('dbem_bookings_form_msg_closed'); ?></p>
|
||||
<?php else: ?>
|
||||
<?php echo $EM_Notices; ?>
|
||||
<?php if( $tickets_count > 0) : ?>
|
||||
<?php //Tickets exist, so we show a booking form. ?>
|
||||
<form class="em-booking-form" name='booking-form' method='post' action='<?php echo apply_filters('em_booking_form_action_url',''); ?>#em-booking'>
|
||||
<input type='hidden' name='action' value='booking_add'/>
|
||||
<input type='hidden' name='event_id' value='<?php echo $EM_Event->get_bookings()->event_id; ?>'/>
|
||||
<input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('booking_add'); ?>'/>
|
||||
<?php
|
||||
// Tickets Form
|
||||
if( $show_tickets && ($can_book || get_option('dbem_bookings_tickets_show_loggedout')) && ($tickets_count > 1 || get_option('dbem_bookings_tickets_single_form')) ){ //show if more than 1 ticket, or if in forced ticket list view mode
|
||||
do_action('em_booking_form_before_tickets', $EM_Event); //do not delete
|
||||
//Show multiple tickets form to user, or single ticket list if settings enable this
|
||||
//If logged out, can be allowed to see this in settings witout the register form
|
||||
em_locate_template('forms/bookingform/tickets-list.php',true, array('EM_Event'=>$EM_Event));
|
||||
do_action('em_booking_form_after_tickets', $EM_Event); //do not delete
|
||||
$show_tickets = false;
|
||||
}
|
||||
?>
|
||||
<?php if( $can_book ): ?>
|
||||
<div class='em-booking-form-details'>
|
||||
<?php
|
||||
if( $show_tickets && $available_tickets_count == 1 && !get_option('dbem_bookings_tickets_single_form') ){
|
||||
do_action('em_booking_form_before_tickets', $EM_Event); //do not delete
|
||||
//show single ticket form, only necessary to show to users able to book (or guests if enabled)
|
||||
$EM_Ticket = $EM_Event->get_bookings()->get_available_tickets()->get_first();
|
||||
em_locate_template('forms/bookingform/ticket-single.php',true, array('EM_Event'=>$EM_Event, 'EM_Ticket'=>$EM_Ticket));
|
||||
do_action('em_booking_form_after_tickets', $EM_Event); //do not delete
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
do_action('em_booking_form_before_user_details', $EM_Event);
|
||||
if( has_action('em_booking_form_custom') ){
|
||||
//Pro Custom Booking Form. You can create your own custom form by hooking into this action and setting the option above to true
|
||||
do_action('em_booking_form_custom', $EM_Event); //do not delete
|
||||
}else{
|
||||
//If you just want to modify booking form fields, you could do so here
|
||||
em_locate_template('forms/bookingform/booking-fields.php',true, array('EM_Event'=>$EM_Event));
|
||||
}
|
||||
do_action('em_booking_form_after_user_details', $EM_Event);
|
||||
?>
|
||||
<?php do_action('em_booking_form_footer', $EM_Event); //do not delete ?>
|
||||
<div class="em-booking-buttons">
|
||||
<?php if( preg_match('/https?:\/\//',get_option('dbem_bookings_submit_button')) ): //Settings have an image url (we assume). Use it here as the button.?>
|
||||
<input type="image" src="<?php echo get_option('dbem_bookings_submit_button'); ?>" class="em-booking-submit" id="em-booking-submit" />
|
||||
<?php else: //Display normal submit button ?>
|
||||
<input type="submit" class="em-booking-submit" id="em-booking-submit" value="<?php echo esc_attr(get_option('dbem_bookings_submit_button')); ?>" />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php do_action('em_booking_form_footer_after_buttons', $EM_Event); //do not delete ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p class="em-booking-form-details"><?php echo get_option('dbem_booking_feedback_log_in'); ?></p>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
<?php
|
||||
if( !is_user_logged_in() && get_option('dbem_bookings_login_form') ){
|
||||
//User is not logged in, show login form (enabled on settings page)
|
||||
em_locate_template('forms/bookingform/login.php',true, array('EM_Event'=>$EM_Event));
|
||||
}
|
||||
?>
|
||||
<br class="clear" style="clear:left;" />
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
14
plugins/events-manager/placeholders/categories.php
Normal file
14
plugins/events-manager/placeholders/categories.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$count_cats = count($EM_Event->get_categories()->categories) > 0;
|
||||
if( $count_cats > 0 ){
|
||||
?>
|
||||
<ul class="event-categories">
|
||||
<?php foreach($EM_Event->get_categories() as $EM_Category): ?>
|
||||
<li><?php echo $EM_Category->output("#_CATEGORYLINK"); ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php
|
||||
}else{
|
||||
echo get_option ( 'dbem_no_categories_message' );
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$count_cats = count($EM_Event->get_categories()->categories) > 0;
|
||||
if( $count_cats > 0 ){
|
||||
$one_image = false;
|
||||
?>
|
||||
<ul class="event-categories-images">
|
||||
<?php foreach($EM_Event->get_categories() as $EM_Category): /* @var $EM_Category EM_Category */ ?>
|
||||
<?php if( $EM_Category->get_image_url() != '' ): ?>
|
||||
<li><?php echo $EM_Category->output('<a href="#_CATEGORYURL" title="#_CATEGORYNAME">#_CATEGORYIMAGE</a>'); $one_image = true; ?></li>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php if (!$one_image): ?>
|
||||
<li><?php echo get_option ( 'dbem_no_categories_message' ); ?></li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
<?php
|
||||
}else{
|
||||
echo get_option ( 'dbem_no_categories_message' );
|
||||
}
|
12
plugins/events-manager/placeholders/eventtags.php
Normal file
12
plugins/events-manager/placeholders/eventtags.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/* @var $EM_Event EM_Event */
|
||||
$tags = get_the_terms($EM_Event->post_id, EM_TAXONOMY_TAG);
|
||||
if( is_array($tags) && count($tags) > 0 ){
|
||||
$tags_list = array();
|
||||
foreach($tags as $tag){
|
||||
$link = get_term_link($tag->slug, EM_TAXONOMY_TAG);
|
||||
if ( is_wp_error($link) ) $link = '';
|
||||
$tags_list[] = '<a href="'. $link .'">'. $tag->name .'</a>';
|
||||
}
|
||||
echo implode(', ', $tags_list);
|
||||
}
|
36
plugins/events-manager/placeholders/locationmap.php
Normal file
36
plugins/events-manager/placeholders/locationmap.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/*
|
||||
* This file contains the HTML generated for a single location Google map. You can copy this file to yourthemefolder/plugins/events/templates and modify it in an upgrade-safe manner.
|
||||
*
|
||||
* There is one argument passed to you, which is the $args variable. This contains the arguments you could pass into shortcodes, template tags or functions like EM_Events::get().
|
||||
*
|
||||
* In this template, we encode the $args array into JSON for javascript to easily parse and request the locations from the server via AJAX.
|
||||
*/
|
||||
/* @var $EM_Location EM_Location */
|
||||
if ( get_option('dbem_gmap_is_active') && ( is_object($EM_Location) && $EM_Location->location_latitude != 0 && $EM_Location->location_longitude != 0 ) ) {
|
||||
//get dimensions with px or % added in
|
||||
$width = (!empty($args['width'])) ? $args['width']:get_option('dbem_map_default_width','400px');
|
||||
$width = preg_match('/(px)|%/', $width) ? $width:$width.'px';
|
||||
$height = (!empty($args['height'])) ? $args['height']:get_option('dbem_map_default_height','300px');
|
||||
$height = preg_match('/(px)|%/', $height) ? $height:$height.'px';
|
||||
//assign random number for element id reference
|
||||
$rand = substr(md5(rand().rand()),0,5);
|
||||
?>
|
||||
<div class="em-location-map-container" style='position:relative; background: #CDCDCD; width: <?php echo $width ?>; height: <?php echo $height ?>;'>
|
||||
<div class='em-location-map' id='em-location-map-<?php echo $rand ?>' style="width: 100%; height: 100%;">
|
||||
<?php _e('Loading Map....', 'events-manager'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='em-location-map-info' id='em-location-map-info-<?php echo $rand ?>' style="display:none; visibility:hidden;">
|
||||
<div class="em-map-balloon" style="font-size:12px;">
|
||||
<div class="em-map-balloon-content" ><?php echo $EM_Location->output(get_option('dbem_location_baloon_format')); ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='em-location-map-coords' id='em-location-map-coords-<?php echo $rand ?>' style="display:none; visibility:hidden;">
|
||||
<span class="lat"><?php echo $EM_Location->location_latitude; ?></span>
|
||||
<span class="lng"><?php echo $EM_Location->location_longitude; ?></span>
|
||||
</div>
|
||||
<?php
|
||||
}elseif( is_object($EM_Location) && $EM_Location->location_latitude == 0 && $EM_Location->location_longitude == 0 ){
|
||||
echo '<i>'. __('Map Unavailable', 'events-manager') .'</i>';
|
||||
}
|
12
plugins/events-manager/placeholders/readme.txt
Normal file
12
plugins/events-manager/placeholders/readme.txt
Normal file
@ -0,0 +1,12 @@
|
||||
This folder has files containing some of the more complex placeholders output information.
|
||||
|
||||
Files in this folder are loaded automatically by the corresponding object and make certain variables available to them (see individual files for examples).
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/placeholders/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
16
plugins/events-manager/readme.txt
Normal file
16
plugins/events-manager/readme.txt
Normal file
@ -0,0 +1,16 @@
|
||||
This folder has files containing various templates which events manager uses to output its information.
|
||||
|
||||
Almost every aspect of the public interface (and some parts of the admin interface!) can be modified. Please individual folders for more information
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to "wp-content/themes/yourtheme/plugins/events-manager/filepath within this folder/" and edit as needed.
|
||||
|
||||
For example:
|
||||
|
||||
copy templates/events-single.php
|
||||
|
||||
to wp-content/themes/yourtheme/plugins/events-manager/templates/events-single.php
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
180
plugins/events-manager/tables/events.php
Normal file
180
plugins/events-manager/tables/events.php
Normal file
@ -0,0 +1,180 @@
|
||||
<?php
|
||||
//TODO Simplify panel for events, use form flags to detect certain actions (e.g. submitted, etc)
|
||||
global $wpdb, $bp, $EM_Notices;
|
||||
/* @var $args array */
|
||||
/* @var $EM_Events array */
|
||||
/* @var $events_count int */
|
||||
/* @var $future_count int */
|
||||
/* @var $past_count int */
|
||||
/* @var $pending_count int */
|
||||
/* @var $url string */
|
||||
/* @var $show_add_new bool */
|
||||
/* @var $limit int */
|
||||
//add new button will only appear if called from em_event_admin template tag, or if the $show_add_new var is set
|
||||
?>
|
||||
<div class="em-events-admin-list">
|
||||
<?php
|
||||
echo $EM_Notices;
|
||||
if(!empty($show_add_new) && current_user_can('edit_events')) echo '<a class="em-button button add-new-h2" href="'.em_add_get_params($_SERVER['REQUEST_URI'],array('action'=>'edit','scope'=>null,'status'=>null,'event_id'=>null, 'success'=>null)).'">'.__('Add New','events-manager').'</a>';
|
||||
?>
|
||||
<form id="posts-filter" action="" method="get">
|
||||
<div class="subsubsub">
|
||||
<?php $default_params = array('scope'=>null,'status'=>null,'em_search'=>null,'pno'=>null); //template for cleaning the link for each view below ?>
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], $default_params + array('view'=>'future')); ?>' <?php echo ( !isset($_GET['view']) ) ? 'class="current"':''; ?>><?php _e ( 'Upcoming', 'events-manager'); ?> <span class="count">(<?php echo $future_count; ?>)</span></a> |
|
||||
<?php if( $pending_count > 0 ): ?>
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], $default_params + array('view'=>'pending')); ?>' <?php echo ( isset($_GET['view']) && $_GET['view'] == 'pending' ) ? 'class="current"':''; ?>><?php _e ( 'Pending', 'events-manager'); ?> <span class="count">(<?php echo $pending_count; ?>)</span></a> |
|
||||
<?php endif; ?>
|
||||
<?php if( $draft_count > 0 ): ?>
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], $default_params + array('view'=>'draft')); ?>' <?php echo ( isset($_GET['view']) && $_GET['view'] == 'draft' ) ? 'class="current"':''; ?>><?php _e ( 'Draft', 'events-manager'); ?> <span class="count">(<?php echo $draft_count; ?>)</span></a> |
|
||||
<?php endif; ?>
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], $default_params + array('view'=>'past')); ?>' <?php echo ( isset($_GET['view']) && $_GET['view'] == 'past' ) ? 'class="current"':''; ?>><?php _e ( 'Past Events', 'events-manager'); ?> <span class="count">(<?php echo $past_count; ?>)</span></a>
|
||||
</div>
|
||||
<p class="search-box">
|
||||
<label class="screen-reader-text" for="post-search-input"><?php _e('Search Events','events-manager'); ?>:</label>
|
||||
<input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_REQUEST['em_search'])) ? esc_attr($_REQUEST['em_search']):''; ?>" />
|
||||
<?php if( !empty($_REQUEST['view']) ): ?>
|
||||
<input type="hidden" name="view" value="<?php echo esc_attr($_REQUEST['view']); ?>" />
|
||||
<?php endif; ?>
|
||||
<input type="submit" value="<?php _e('Search Events','events-manager'); ?>" class="button" />
|
||||
</p>
|
||||
<div class="tablenav">
|
||||
<?php
|
||||
if ( $events_count >= $limit ) {
|
||||
$events_nav = em_admin_paginate( $events_count, $limit, $page);
|
||||
echo $events_nav;
|
||||
}
|
||||
?>
|
||||
<br class="clear" />
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if ( empty($EM_Events) ) {
|
||||
echo get_option ( 'dbem_no_events_message' );
|
||||
} else {
|
||||
?>
|
||||
|
||||
<table class="widefat events-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php /*
|
||||
<th class='manage-column column-cb check-column' scope='col'>
|
||||
<input class='select-all' type="checkbox" value='1' />
|
||||
</th>
|
||||
*/ ?>
|
||||
<th><?php _e ( 'Name', 'events-manager'); ?></th>
|
||||
<th> </th>
|
||||
<th><?php _e ( 'Location', 'events-manager'); ?></th>
|
||||
<th colspan="2"><?php _e ( 'Date and time', 'events-manager'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$rowno = 0;
|
||||
foreach ( $EM_Events as $EM_Event ) {
|
||||
/* @var $EM_Event EM_Event */
|
||||
$rowno++;
|
||||
$class = ($rowno % 2) ? 'alternate' : '';
|
||||
// FIXME set to american
|
||||
$localised_start_date = date_i18n(get_option('dbem_date_format'), $EM_Event->start);
|
||||
$localised_end_date = date_i18n(get_option('dbem_date_format'), $EM_Event->end);
|
||||
$style = "";
|
||||
$today = current_time('timestamp');
|
||||
$location_summary = "<b>" . esc_html($EM_Event->get_location()->location_name) . "</b><br/>" . esc_html($EM_Event->get_location()->location_address) . " - " . esc_html($EM_Event->get_location()->location_town);
|
||||
|
||||
if ($EM_Event->start < $today && $EM_Event->end < $today){
|
||||
$class .= " past";
|
||||
}
|
||||
//Check pending approval events
|
||||
if ( !$EM_Event->get_status() ){
|
||||
$class .= " pending";
|
||||
}
|
||||
?>
|
||||
<tr class="event <?php echo trim($class); ?>" <?php echo $style; ?> id="event_<?php echo $EM_Event->event_id ?>">
|
||||
<?php /*
|
||||
<td>
|
||||
<input type='checkbox' class='row-selector' value='<?php echo $EM_Event->event_id; ?>' name='events[]' />
|
||||
</td>
|
||||
*/ ?>
|
||||
<td>
|
||||
<strong>
|
||||
<?php echo esc_html($EM_Event->event_name); ?>
|
||||
<!--<a class="row-title" href="<?php echo esc_url($EM_Event->get_edit_url()); ?>"><?php echo esc_html($EM_Event->event_name); ?></a>-->
|
||||
</strong>
|
||||
<?php
|
||||
if( get_option('dbem_rsvp_enabled') == 1 && $EM_Event->event_rsvp == 1 ){
|
||||
?>
|
||||
<br/>
|
||||
<a href="<?php echo $EM_Event->get_bookings_url(); ?>"><?php esc_html_e("Bookings",'events-manager'); ?></a> –
|
||||
<?php esc_html_e("Booked",'events-manager'); ?>: <?php echo $EM_Event->get_bookings()->get_booked_spaces()."/".$EM_Event->get_spaces(); ?>
|
||||
<?php if( get_option('dbem_bookings_approval') == 1 ): ?>
|
||||
| <?php _e("Pending",'events-manager') ?>: <?php echo $EM_Event->get_bookings()->get_pending_spaces(); ?>
|
||||
<?php endif;
|
||||
}
|
||||
?>
|
||||
<div class="row-actions">
|
||||
<?php if( current_user_can('delete_events')) : ?>
|
||||
<span class="trash"><a href="<?php echo esc_url(add_query_arg(array('action'=>'event_delete', 'event_id'=>$EM_Event->event_id, '_wpnonce'=> wp_create_nonce('event_delete_'.$EM_Event->event_id)))); ?>" class="em-event-delete"><?php _e('Delete','events-manager'); ?></a></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="<?php echo $EM_Event->duplicate_url(); ?>" title="<?php _e ( 'Duplicate this event', 'events-manager'); ?>">
|
||||
<strong>+</strong>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $location_summary; ?>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<?php echo $localised_start_date; ?>
|
||||
<?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?>
|
||||
<br />
|
||||
<?php
|
||||
if(!$EM_Event->event_all_day){
|
||||
echo date_i18n(get_option('time_format'), $EM_Event->start) . " - " . date_i18n(get_option('time_format'), $EM_Event->end);
|
||||
}else{
|
||||
echo get_option('dbem_event_all_day_message');
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
if ( $EM_Event->is_recurrence() ) {
|
||||
$recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','events-manager');
|
||||
?>
|
||||
<strong>
|
||||
<?php echo $EM_Event->get_recurrence_description(); ?> <br />
|
||||
<a href="<?php echo esc_url($EM_Event->get_edit_reschedule_url()); ?>"><?php _e ( 'Edit Recurring Events', 'events-manager'); ?></a>
|
||||
<?php if( current_user_can('delete_events')) : ?>
|
||||
<span class="trash"><a href="<?php echo esc_url(add_query_arg(array('action'=>'event_delete', 'event_id'=>$EM_Event->recurrence_id, '_wpnonce'=> wp_create_nonce('event_delete_'.$EM_Event->recurrence_id)))); ?>" class="em-event-rec-delete" onclick ="if( !confirm('<?php echo $recurrence_delete_confirm; ?>') ){ return false; }"><?php _e('Delete','events-manager'); ?></a></span>
|
||||
<?php endif; ?>
|
||||
</strong>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php
|
||||
} // end of table
|
||||
?>
|
||||
<div class='tablenav'>
|
||||
<div class="alignleft actions">
|
||||
<br class='clear' />
|
||||
</div>
|
||||
<?php if ( $events_count >= $limit ) : ?>
|
||||
<div class="tablenav-pages">
|
||||
<?php
|
||||
echo $events_nav;
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<br class='clear' />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
94
plugins/events-manager/tables/locations.php
Normal file
94
plugins/events-manager/tables/locations.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
global $wpdb, $EM_Notices;
|
||||
//add new button will only appear if called from em_location_admin template tag, or if the $show_add_new var is set
|
||||
if(!empty($show_add_new) && current_user_can('edit_locations')) echo '<a class="em-button button add-new-h2" href="'.em_add_get_params($_SERVER['REQUEST_URI'],array('action'=>'edit','scope'=>null,'status'=>null,'location_id'=>null)).'">'.__('Add New','events-manager').'</a>';
|
||||
?>
|
||||
<div class="em-locations-admin-list">
|
||||
<?php if(!is_admin()) echo $EM_Notices; ?>
|
||||
<form id='locations-filter' method='post' action=''>
|
||||
<input type='hidden' name='pno' value='<?php echo esc_attr($page) ?>' />
|
||||
<div class="subsubsub">
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], array('view'=>null, 'pno'=>null)); ?>' <?php echo ( empty($_REQUEST['view']) ) ? 'class="current"':''; ?>><?php echo sprintf( __( 'My %s', 'events-manager'), __('Locations','events-manager')); ?> <span class="count">(<?php echo $locations_mine_count; ?>)</span></a>
|
||||
<?php if( current_user_can('read_others_locations') ): ?>
|
||||
|
|
||||
<a href='<?php echo em_add_get_params($_SERVER['REQUEST_URI'], array('view'=>'others', 'pno'=>null)); ?>' <?php echo ( !empty($_REQUEST['view']) && $_REQUEST['view'] == 'others' ) ? 'class="current"':''; ?>><?php echo sprintf( __( 'All %s', 'events-manager'), __('Locations','events-manager')); ?><span class="count">(<?php echo $locations_all_count; ?>)</span></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php if ( $locations_count > 0 ) : ?>
|
||||
<div class='tablenav'>
|
||||
<?php if( (empty($_REQUEST['view']) && current_user_can('delete_events')) || (!empty($_REQUEST['view']) && $_REQUEST['view'] == 'others' && current_user_can('delete_others_events')) ): ?>
|
||||
<div class="alignleft actions">
|
||||
<select name="action">
|
||||
<option value="" selected="selected"><?php _e ( 'Bulk Actions', 'events-manager'); ?></option>
|
||||
<?php if( empty($_REQUEST['view']) && current_user_can('delete_events') ) : ?>
|
||||
<option value="location_delete"><?php _e ( 'Delete selected','events-manager'); ?></option>
|
||||
<?php endif; ?>
|
||||
</select>
|
||||
<input type="submit" value="<?php _e ( 'Apply' ); ?>" id="doaction2" class="button-secondary action" />
|
||||
</div>
|
||||
<?php else: $hide_checkboxes = true; /* @todo this and the first condition of this if statement will need to change when other bulk actions are added */ ?>
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
if ( $locations_count >= $limit ) {
|
||||
$locations_nav = em_admin_paginate( $locations_count, $limit, $page );
|
||||
echo $locations_nav;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class='widefat'>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php if(empty($hide_checkboxes)): ?>
|
||||
<th class='manage-column column-cb check-column' scope='col'><input type='checkbox' class='select-all' value='1'/></th>
|
||||
<?php endif; ?>
|
||||
<th><?php _e('Name', 'events-manager') ?></th>
|
||||
<th><?php _e('Address', 'events-manager') ?></th>
|
||||
<th><?php _e('State', 'events-manager') ?></th>
|
||||
<th><?php _e('Country', 'events-manager') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<?php if(empty($hide_checkboxes)): ?>
|
||||
<th class='manage-column column-cb check-column' scope='col'><input type='checkbox' class='select-all' value='1'/></th>
|
||||
<?php endif; ?>
|
||||
<th><?php _e('Name', 'events-manager') ?></th>
|
||||
<th><?php _e('Address', 'events-manager') ?></th>
|
||||
<th><?php _e('State', 'events-manager') ?></th>
|
||||
<th><?php _e('Country', 'events-manager') ?></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<?php $rowno = 0; ?>
|
||||
<?php foreach ($locations as $EM_Location) : ?>
|
||||
<?php
|
||||
$class = ($rowno % 2) ? 'alternate' : '';
|
||||
$rowno++;
|
||||
?>
|
||||
<tr class="<?php echo $class; ?>">
|
||||
<?php if(empty($hide_checkboxes)): ?>
|
||||
<td><input type='checkbox' class ='row-selector' value='<?php echo $EM_Location->location_id ?>' name='locations[]'/></td>
|
||||
<?php endif; ?>
|
||||
<td>
|
||||
<?php if( $EM_Location->can_manage('edit_events','edit_others_events') ): ?>
|
||||
<a href='<?php echo esc_url($EM_Location->get_edit_url()); ?>'><?php echo esc_html($EM_Location->location_name); ?></a>
|
||||
<?php else: ?>
|
||||
<strong><?php echo esc_html($EM_Location->location_name) ?></strong> -
|
||||
<a href='<?php echo $EM_Location->output('#_LOCATIONURL'); ?>'><?php esc_html_e('View') ?></a>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td><?php echo esc_html(implode(', ', array($EM_Location->location_address,$EM_Location->location_town,$EM_Location->location_postcode))); ?></td>
|
||||
<td><?php echo esc_html($EM_Location->location_state) ?></td>
|
||||
<td><?php echo $EM_Location->get_country() ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<br class="clear" />
|
||||
<p><?php esc_html_e('No locations have been inserted yet!', 'events-manager') ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( !empty($locations_nav) ) echo $locations_nav; ?>
|
||||
</form>
|
||||
</div>
|
10
plugins/events-manager/tables/readme.txt
Normal file
10
plugins/events-manager/tables/readme.txt
Normal file
@ -0,0 +1,10 @@
|
||||
This folder has files containing table output layouts, such as event and location admin tables for the public pages.
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/tables/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/*
|
||||
* This page displays a printable view of bookings for a single event.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* Here you can assume that $EM_Event is globally available with the right EM_Event object.
|
||||
*/
|
||||
global $EM_Event;
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
||||
<title><?php echo sprintf(__('Bookings for %s','events-manager'), $EM_Event->name); ?></title>
|
||||
<link rel="stylesheet" href="<?php echo bloginfo('wpurl') ?>/wp-content/plugins/events-manager/includes/css/events_manager.css" type="text/css" media="screen" />
|
||||
</head>
|
||||
<body id="printable">
|
||||
<div id="container">
|
||||
<h1><?php echo sprintf(__('Bookings for %s','events-manager'), $EM_Event->name); ?></h1>
|
||||
<p><?php echo $EM_Event->output("#d #M #Y"); ?></p>
|
||||
<p><?php echo $EM_Event->output("#_LOCATION, #_ADDRESS, #_TOWN"); ?></p>
|
||||
<h2><?php _e('Bookings data', 'events-manager');?></h2>
|
||||
<table id="bookings-table">
|
||||
<tr>
|
||||
<th scope='col'><?php _e('Name', 'events-manager')?></th>
|
||||
<th scope='col'><?php _e('E-mail', 'events-manager')?></th>
|
||||
<th scope='col'><?php _e('Phone number', 'events-manager')?></th>
|
||||
<th scope='col'><?php _e('Spaces', 'events-manager')?></th>
|
||||
<th scope='col'><?php _e('Comment', 'events-manager')?></th>
|
||||
</tr>
|
||||
<?php foreach($EM_Event->get_bookings()->bookings as $EM_Booking) {
|
||||
if( $EM_Booking->status == 1){
|
||||
?>
|
||||
<tr>
|
||||
|
||||
<td><?php echo $EM_Booking->person->get_name() ?></td>
|
||||
<td><?php echo $EM_Booking->person->user_email ?></td>
|
||||
<td><?php echo $EM_Booking->person->phone ?></td>
|
||||
<td class='spaces-number'><?php echo $EM_Booking->get_spaces() ?></td>
|
||||
<td><?php echo $EM_Booking->booking_comment ?></td>
|
||||
</tr>
|
||||
<?php }} ?>
|
||||
<tr id='booked-spaces'>
|
||||
<td colspan='3'> </td>
|
||||
<td class='total-label'><?php _e('Booked', 'events-manager')?>:</td>
|
||||
<td class='spaces-number'><?php echo $EM_Event->get_bookings()->get_booked_spaces(); ?></td>
|
||||
</tr>
|
||||
<tr id='available-spaces'>
|
||||
<td colspan='3'> </td>
|
||||
<td class='total-label'><?php _e('Available', 'events-manager')?>:</td>
|
||||
<td class='spaces-number'><?php echo $EM_Event->get_bookings()->get_available_spaces(); ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
20
plugins/events-manager/templates/calendar-day.php
Normal file
20
plugins/events-manager/templates/calendar-day.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Calendar day
|
||||
* This page displays a list of events or single event for a specific calendar day, called during the em_content() if this is an calendar day page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*
|
||||
*/
|
||||
$args['scope'] = $_REQUEST['calendar_day'];
|
||||
$events_count = EM_Events::count( apply_filters('em_content_calendar_day_args', $args) ); //Get events first, so we know how many there are in advance
|
||||
if ( $events_count > 1 || get_option('dbem_display_calendar_day_single') == 1 ) {
|
||||
em_locate_template('templates/events-list.php', true, array('args' => apply_filters('em_content_calendar_day_output_args', $args)) );
|
||||
} elseif( $events_count == 1 ) {
|
||||
$args['format'] = get_option('dbem_single_event_format');
|
||||
echo EM_Events::output(apply_filters('em_content_calendar_day_output_args', $args));
|
||||
} else {
|
||||
echo get_option('dbem_no_events_message');
|
||||
}
|
61
plugins/events-manager/templates/calendar-full.php
Normal file
61
plugins/events-manager/templates/calendar-full.php
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/*
|
||||
* This file contains the HTML generated for full calendars. You can copy this file to yourthemefolder/plugins/events-manager/templates and modify it in an upgrade-safe manner.
|
||||
*
|
||||
* There are two variables made available to you:
|
||||
*
|
||||
* $calendar - contains an array of information regarding the calendar and is used to generate the content
|
||||
* $args - the arguments passed to EM_Calendar::output()
|
||||
*
|
||||
* Note that leaving the class names for the previous/next links will keep the AJAX navigation working.
|
||||
*/
|
||||
$cal_count = count($calendar['cells']); //to prevent an extra tr
|
||||
$col_count = $tot_count = 1; //this counts collumns in the $calendar_array['cells'] array
|
||||
$col_max = count($calendar['row_headers']); //each time this collumn number is reached, we create a new collumn, the number of cells should divide evenly by the number of row_headers
|
||||
?>
|
||||
<table class="em-calendar fullcalendar">
|
||||
<thead>
|
||||
<tr>
|
||||
<td><a class="em-calnav full-link em-calnav-prev" href="<?php echo esc_url($calendar['links']['previous_url']); ?>"><<</a></td>
|
||||
<td class="month_name" colspan="5"><?php echo esc_html(date_i18n(get_option('dbem_full_calendar_month_format'), $calendar['month_start'])); ?></td>
|
||||
<td><a class="em-calnav full-link em-calnav-next" href="<?php echo esc_url($calendar['links']['next_url']); ?>">>></a></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="days-names">
|
||||
<td><?php echo implode('</td><td>',$calendar['row_headers']); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php
|
||||
foreach($calendar['cells'] as $date => $cell_data ){
|
||||
$class = ( !empty($cell_data['events']) && count($cell_data['events']) > 0 ) ? 'eventful':'eventless';
|
||||
if(!empty($cell_data['type'])){
|
||||
$class .= "-".$cell_data['type'];
|
||||
}
|
||||
//In some cases (particularly when long events are set to show here) long events and all day events are not shown in the right order. In these cases,
|
||||
//if you want to sort events cronologically on each day, including all day events at top and long events within the right times, add define('EM_CALENDAR_SORTTIME', true); to your wp-config.php file
|
||||
if( defined('EM_CALENDAR_SORTTIME') && EM_CALENDAR_SORTTIME ) ksort($cell_data['events']); //indexes are timestamps
|
||||
?>
|
||||
<td class="<?php echo esc_attr($class); ?>">
|
||||
<?php if( !empty($cell_data['events']) && count($cell_data['events']) > 0 ): ?>
|
||||
<a href="<?php echo esc_url($cell_data['link']); ?>" title="<?php echo esc_attr($cell_data['link_title']); ?>"><?php echo esc_html(date('j',$cell_data['date'])); ?></a>
|
||||
<ul>
|
||||
<?php echo EM_Events::output($cell_data['events'],array('format'=>get_option('dbem_full_calendar_event_format'))); ?>
|
||||
<?php if( $args['limit'] && $cell_data['events_count'] > $args['limit'] && get_option('dbem_display_calendar_events_limit_msg') != '' ): ?>
|
||||
<li><a href="<?php echo esc_url($cell_data['link']); ?>"><?php echo get_option('dbem_display_calendar_events_limit_msg'); ?></a></li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
<?php else:?>
|
||||
<?php echo esc_html(date('j',$cell_data['date'])); ?>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<?php
|
||||
//create a new row once we reach the end of a table collumn
|
||||
$col_count= ($col_count == $col_max ) ? 1 : $col_count+1;
|
||||
echo ($col_count == 1 && $tot_count < $cal_count) ? '</tr><tr>':'';
|
||||
$tot_count ++;
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
52
plugins/events-manager/templates/calendar-small.php
Normal file
52
plugins/events-manager/templates/calendar-small.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/*
|
||||
* This file contains the HTML generated for small calendars. You can copy this file to yourthemefolder/plugins/events-manager/templates and modify it in an upgrade-safe manner.
|
||||
*
|
||||
* There are two variables made available to you:
|
||||
*
|
||||
* $calendar - contains an array of information regarding the calendar and is used to generate the content
|
||||
* $args - the arguments passed to EM_Calendar::output()
|
||||
*
|
||||
* Note that leaving the class names for the previous/next links will keep the AJAX navigation working.
|
||||
*/
|
||||
?>
|
||||
<table class="em-calendar">
|
||||
<thead>
|
||||
<tr>
|
||||
<td><a class="em-calnav em-calnav-prev" href="<?php echo esc_url($calendar['links']['previous_url']); ?>" rel="nofollow"><<</a></td>
|
||||
<td class="month_name" colspan="5"><?php echo esc_html(date_i18n(get_option('dbem_small_calendar_month_format'), $calendar['month_start'])); ?></td>
|
||||
<td><a class="em-calnav em-calnav-next" href="<?php echo esc_url($calendar['links']['next_url']); ?>" rel="nofollow">>></a></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="days-names">
|
||||
<td><?php echo implode('</td><td>',$calendar['row_headers']); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php
|
||||
$cal_count = count($calendar['cells']);
|
||||
$col_count = $count = 1; //this counts collumns in the $calendar_array['cells'] array
|
||||
$col_max = count($calendar['row_headers']); //each time this collumn number is reached, we create a new collumn, the number of cells should divide evenly by the number of row_headers
|
||||
foreach($calendar['cells'] as $date => $cell_data ){
|
||||
$class = ( !empty($cell_data['events']) && count($cell_data['events']) > 0 ) ? 'eventful':'eventless';
|
||||
if(!empty($cell_data['type'])){
|
||||
$class .= "-".$cell_data['type'];
|
||||
}
|
||||
?>
|
||||
<td class="<?php echo esc_attr($class); ?>">
|
||||
<?php if( !empty($cell_data['events']) && count($cell_data['events']) > 0 ): ?>
|
||||
<a href="<?php echo esc_url($cell_data['link']); ?>" title="<?php echo esc_attr($cell_data['link_title']); ?>"><?php echo esc_html(date('j',$cell_data['date'])); ?></a>
|
||||
<?php else:?>
|
||||
<?php echo esc_html(date('j',$cell_data['date'])); ?>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<?php
|
||||
//create a new row once we reach the end of a table collumn
|
||||
$col_count= ($col_count == $col_max ) ? 1 : $col_count+1;
|
||||
echo ($col_count == 1 && $count < $cal_count) ? '</tr><tr>':'';
|
||||
$count ++;
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
17
plugins/events-manager/templates/categories-list.php
Normal file
17
plugins/events-manager/templates/categories-list.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Categories List Template
|
||||
* This page displays a list of locations, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display locations (or whatever) however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Categories::output()
|
||||
*
|
||||
*/
|
||||
$args = apply_filters('em_content_categories_args', $args);
|
||||
|
||||
if( get_option('dbem_css_catlist') ) echo "<div class='css-cats-list'>";
|
||||
|
||||
echo EM_Categories::output( $args );
|
||||
|
||||
if( get_option('dbem_css_catlist') ) echo "</div>";
|
12
plugins/events-manager/templates/category-single.php
Normal file
12
plugins/events-manager/templates/category-single.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/*
|
||||
* This page displays a single event, called during the em_content() if this is an event page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*/
|
||||
global $EM_Category;
|
||||
/* @var $EM_Category EM_Category */
|
||||
echo $EM_Category->output_single();
|
||||
?>
|
17
plugins/events-manager/templates/event-single.php
Normal file
17
plugins/events-manager/templates/event-single.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Remember that this file is only used if you have chosen to override event pages with formats in your event settings!
|
||||
* You can also override the single event page completely in any case (e.g. at a level where you can control sidebars etc.), as described here - http://codex.wordpress.org/Post_Types#Template_Files
|
||||
* Your file would be named single-event.php
|
||||
*/
|
||||
/*
|
||||
* This page displays a single event, called during the the_content filter if this is an event page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*/
|
||||
global $EM_Event;
|
||||
/* @var $EM_Event EM_Event */
|
||||
echo $EM_Event->output_single();
|
||||
?>
|
13
plugins/events-manager/templates/events-calendar.php
Normal file
13
plugins/events-manager/templates/events-calendar.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Events List Template
|
||||
* This page displays a list of events, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*
|
||||
*/
|
||||
$args['full'] = 1;
|
||||
$args['long_events'] = get_option('dbem_full_calendar_long_events');
|
||||
echo EM_Calendar::output( apply_filters('em_content_calendar_args', $args) );
|
17
plugins/events-manager/templates/events-list-grouped.php
Normal file
17
plugins/events-manager/templates/events-list-grouped.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Events List Template
|
||||
* This page displays a list of events, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*
|
||||
*/
|
||||
$args = apply_filters('em_content_events_args', $args);
|
||||
|
||||
if( get_option('dbem_css_evlist') ) echo "<div class='css-events-list'>";
|
||||
|
||||
echo EM_Events::output_grouped($args); //note we're grabbing the content, not em_get_events_list_grouped function
|
||||
|
||||
if( get_option('dbem_css_evlist') ) echo "</div>";
|
17
plugins/events-manager/templates/events-list.php
Normal file
17
plugins/events-manager/templates/events-list.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Events List Template
|
||||
* This page displays a list of events, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*
|
||||
*/
|
||||
$args = apply_filters('em_content_events_args', $args);
|
||||
print_r($args);
|
||||
if( get_option('dbem_css_evlist') ) echo "<div class='css-events-list'>";
|
||||
|
||||
echo EM_Events::output( $args );
|
||||
|
||||
if( get_option('dbem_css_evlist') ) echo "</div>";
|
69
plugins/events-manager/templates/events-search.php
Normal file
69
plugins/events-manager/templates/events-search.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/* WARNING!!! (2013-07-10) We intend to add a few more fields into this search form over the coming weeks/months.
|
||||
* Overriding shouldn't hinder functionality at all but these new search options won't appear on your form!
|
||||
*/
|
||||
/*
|
||||
* By modifying this in your theme folder within plugins/events-manager/templates/events-search.php, you can change the way the search form will look.
|
||||
* To ensure compatability, it is recommended you maintain class, id and form name attributes, unless you now what you're doing.
|
||||
* You also have an $args array available to you with search options passed on by your EM settings or shortcode
|
||||
*/
|
||||
$args = !empty($args) ? $args:array(); /* @var $args array */
|
||||
?>
|
||||
<div class="em-search-wrapper">
|
||||
<div class="em-events-search em-search <?php if( !empty($args['main_classes']) ) echo esc_attr(implode(' ', $args['main_classes'])); ?>">
|
||||
<form action="<?php echo !empty($args['search_url']) ? esc_url($args['search_url']) : EM_URI; ?>" method="post" class="em-events-search-form em-search-form">
|
||||
<input type="hidden" name="action" value="<?php echo esc_attr($args['search_action']); ?>" />
|
||||
<?php if( $args['show_main'] ): //show the 'main' search form ?>
|
||||
<div class="em-search-main">
|
||||
<?php do_action('em_template_events_search_form_header'); //hook in here to add extra fields, text etc. ?>
|
||||
<?php
|
||||
//search text
|
||||
if( !empty($args['search_term']) ) em_locate_template('templates/search/search.php',true,array('args'=>$args));
|
||||
if( !empty($args['search_geo']) ) em_locate_template('templates/search/geo.php',true,array('args'=>$args));
|
||||
?>
|
||||
<?php if( !empty($args['css']) ) : //show the button here if we're using the default styling, if you still want to use this and use custom CSS, then you have to override our rules ?>
|
||||
<button type="submit" class="em-search-submit loading">
|
||||
<?php //before you ask, this hack is necessary thanks to stupid IE7 ?>
|
||||
<!--[if IE 7]><span><![endif]-->
|
||||
<img src="<?php echo EM_DIR_URI; ?>includes/images/search-mag.png" alt="<?php esc_attr_e('Search', 'events-manager'); ?>" />
|
||||
<!--[if IE 7]></span><![endif]-->
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if( !empty($args['show_advanced']) ): //show advanced fields, collapesed if the main form is shown, inline if not ?>
|
||||
<div class="em-search-advanced" <?php if( !empty($args['advanced_hidden']) ) echo 'style="display:none"'; ?>>
|
||||
<?php
|
||||
//date range (scope)
|
||||
if( !empty($args['search_scope']) ) em_locate_template('templates/search/scope.php',true,array('args'=>$args));
|
||||
//categories
|
||||
if( get_option('dbem_categories_enabled') && !empty($args['search_categories']) ) em_locate_template('templates/search/categories.php',true,array('args'=>$args));
|
||||
//Location data
|
||||
em_locate_template('templates/search/location.php',true, array('args'=>$args));
|
||||
if( !empty($args['search_geo_units']) ) em_locate_template('templates/search/geo-units.php',true, array('args'=>$args));
|
||||
?>
|
||||
<?php do_action('em_template_events_search_form_footer'); //hook in here to add extra fields, text etc. ?>
|
||||
<?php if( !$args['show_main'] || empty($args['css']) ): //show button if it wasn't shown further up ?>
|
||||
<input type="submit" value="<?php echo esc_attr($args['search_button']); ?>" class="em-search-submit" />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if( !empty($args['advanced_hidden']) && !empty($args['show_advanced']) ): //show the advanced search toggle if advanced fields are collapsed ?>
|
||||
<div class="em-search-options">
|
||||
<a href="#" class="em-toggle" rel=".em-search-advanced:.em-search-form">
|
||||
<span class="hide-advanced" style="display:none;"><?php echo esc_html($args['search_text_hide']); ?></span>
|
||||
<span class="show-advanced"><?php echo esc_html($args['search_text_show']); ?></span>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if( (empty($args['show_advanced']) || empty($args['search_countries'])) && !empty($args['country']) ): //show country in hidden field for geo searching ?>
|
||||
<input type="hidden" name="country" value="<?php echo esc_attr($args['country']) ?>" />
|
||||
<?php endif; ?>
|
||||
<?php if( empty($args['show_advanced']) || empty($args['search_geo_units']) ): //show country in hidden field for geo searching ?>
|
||||
<?php if( !empty($args['near_distance']) ) : ?><input name="near_distance" type="hidden" value="<?php echo $args['near_distance']; ?>" /><?php endif; ?>
|
||||
<?php if( !empty($args['near_unit']) ) : ?><input name="near_unit" type="hidden" value="<?php echo $args['near_unit']; ?>" /><?php endif; ?>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
</div>
|
||||
<?php if( !empty($args['ajax']) ): ?><div class='em-search-ajax'></div><?php endif; ?>
|
||||
</div>
|
135
plugins/events-manager/templates/ical.php
Normal file
135
plugins/events-manager/templates/ical.php
Normal file
@ -0,0 +1,135 @@
|
||||
<?php
|
||||
//define and clean up formats for display
|
||||
$summary_format = str_replace ( ">", ">", str_replace ( "<", "<", get_option ( 'dbem_ical_description_format' ) ) );
|
||||
$description_format = str_replace ( ">", ">", str_replace ( "<", "<", get_option ( 'dbem_ical_real_description_format') ) );
|
||||
$location_format = str_replace ( ">", ">", str_replace ( "<", "<", get_option ( 'dbem_ical_location_format' ) ) );
|
||||
$parsed_url = parse_url(get_bloginfo('url'));
|
||||
$site_domain = preg_replace('/^www./', '', $parsed_url['host']);
|
||||
|
||||
//figure out limits
|
||||
$ical_limit = get_option('dbem_ical_limit');
|
||||
$page_limit = $ical_limit > 50 || !$ical_limit ? 50:$ical_limit; //set a limit of 50 to output at a time, unless overall limit is lower
|
||||
//get passed on $args and merge with defaults
|
||||
$args = !empty($args) ? $args:array(); /* @var $args array */
|
||||
$args = array_merge(array('limit'=>$page_limit, 'page'=>'1', 'owner'=>false, 'orderby'=>'event_start_date', 'scope' => get_option('dbem_ical_scope') ), $args);
|
||||
$args = apply_filters('em_calendar_template_args',$args);
|
||||
//get first round of events to show, we'll start adding more via the while loop
|
||||
$EM_Events = EM_Events::get( $args );
|
||||
|
||||
//calendar header
|
||||
$output = "BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//wp-events-plugin.com//".EM_VERSION."//EN";
|
||||
echo preg_replace("/([^\r])\n/", "$1\r\n", $output);
|
||||
|
||||
//loop through events
|
||||
$count = 0;
|
||||
while ( count($EM_Events) > 0 ){
|
||||
foreach ( $EM_Events as $EM_Event ) {
|
||||
/* @var $EM_Event EM_Event */
|
||||
if( $ical_limit != 0 && $count > $ical_limit ) break; //we've reached our maximum
|
||||
//calculate the times along with timezone offsets
|
||||
if($EM_Event->event_all_day){
|
||||
$dateStart = ';VALUE=DATE:'.date('Ymd',$EM_Event->start); //all day
|
||||
$dateEnd = ';VALUE=DATE:'.date('Ymd',$EM_Event->end + 86400); //add one day
|
||||
}else{
|
||||
$dateStart = ':'.get_gmt_from_date(date('Y-m-d H:i:s', $EM_Event->start), 'Ymd\THis\Z');
|
||||
$dateEnd = ':'.get_gmt_from_date(date('Y-m-d H:i:s', $EM_Event->end), 'Ymd\THis\Z');
|
||||
}
|
||||
if( !empty($EM_Event->event_date_modified) && $EM_Event->event_date_modified != '0000-00-00 00:00:00' ){
|
||||
$dateModified = get_gmt_from_date($EM_Event->event_date_modified, 'Ymd\THis\Z');
|
||||
}else{
|
||||
$dateModified = get_gmt_from_date($EM_Event->post_modified, 'Ymd\THis\Z');
|
||||
}
|
||||
|
||||
//formats
|
||||
$summary = em_mb_ical_wordwrap('SUMMARY:'.$EM_Event->output($summary_format,'ical'));
|
||||
$description = em_mb_ical_wordwrap('DESCRIPTION:'.$EM_Event->output($description_format,'ical'));
|
||||
$url = 'URL:'.$EM_Event->get_permalink();
|
||||
$url = wordwrap($url, 74, "\n ", true);
|
||||
$location = $geo = $apple_geo = $apple_location = $apple_location_title = $apple_structured_location = $categories = false;
|
||||
if( $EM_Event->location_id ){
|
||||
$location = em_mb_ical_wordwrap('LOCATION:'.$EM_Event->output($location_format, 'ical'));
|
||||
if( $EM_Event->get_location()->location_latitude || $EM_Event->get_location()->location_longitude ){
|
||||
$geo = 'GEO:'.$EM_Event->get_location()->location_latitude.";".$EM_Event->get_location()->location_longitude;
|
||||
}
|
||||
if( !defined('EM_ICAL_APPLE_STRUCT') || !EM_ICAL_APPLE_STRUCT ){
|
||||
$apple_location = $EM_Event->output('#_LOCATIONFULLLINE, #_LOCATIONCOUNTRY', 'ical');
|
||||
$apple_location_title = $EM_Event->output('#_LOCATIONNAME', 'ical');
|
||||
$apple_geo = !empty($geo) ? $EM_Event->get_location()->location_latitude.",".$EM_Event->get_location()->location_longitude:'0,0';
|
||||
$apple_structured_location = "X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS={$apple_location};X-APPLE-RADIUS=100;X-TITLE={$apple_location_title}:geo:{$apple_geo}";
|
||||
$apple_structured_location = str_replace('"', '\"', $apple_structured_location); //google chucks a wobbly with these on this line
|
||||
$apple_structured_location = em_mb_ical_wordwrap($apple_structured_location);
|
||||
}
|
||||
}
|
||||
$categories = array();
|
||||
foreach( $EM_Event->get_categories() as $EM_Category ){ /* @var EM_Category $EM_Category */
|
||||
$categories[] = $EM_Category->name;
|
||||
}
|
||||
$image = $EM_Event->get_image_url();
|
||||
|
||||
//create a UID, make it unique and update independent
|
||||
$UID = $EM_Event->event_id . '@' . $site_domain;
|
||||
if( is_multisite() ) $UID = absint($EM_Event->blog_id) . '-' . $UID;
|
||||
$UID = wordwrap("UID:".$UID, 74, "\r\n ", true);
|
||||
|
||||
//output ical item
|
||||
$output = "\r\n"."BEGIN:VEVENT
|
||||
{$UID}
|
||||
DTSTART{$dateStart}
|
||||
DTEND{$dateEnd}
|
||||
DTSTAMP:{$dateModified}
|
||||
{$url}
|
||||
{$summary}";
|
||||
//Description if available
|
||||
if( $description ){
|
||||
$output .= "\r\n" . $description;
|
||||
}
|
||||
//add featured image if exists
|
||||
if( $image ){
|
||||
$image = wordwrap("ATTACH;FMTTYPE=image/jpeg:".esc_url_raw($image), 74, "\n ", true);
|
||||
$output .= "
|
||||
{$image}";
|
||||
}
|
||||
//add categories if there are any
|
||||
if( !empty($categories) ){
|
||||
$categories = wordwrap("CATEGORIES:".implode(',', $categories), 74, "\n ", true);
|
||||
$output .= "
|
||||
{$categories}";
|
||||
}
|
||||
//Location if there is one
|
||||
if( $location ){
|
||||
$output .= "
|
||||
{$location}";
|
||||
//geo coordinates if they exist
|
||||
if( $geo ){
|
||||
$output .= "
|
||||
{$geo}";
|
||||
}
|
||||
//create apple-compatible feature for locations
|
||||
if( !empty($apple_structured_location) ){
|
||||
$output .= "
|
||||
{$apple_structured_location}";
|
||||
}
|
||||
}
|
||||
//end the event
|
||||
$output .= "
|
||||
END:VEVENT";
|
||||
|
||||
//clean up new lines, rinse and repeat
|
||||
echo preg_replace("/([^\r])\n/", "$1\r\n", $output);
|
||||
$count++;
|
||||
}
|
||||
if( $ical_limit != 0 && $count >= $ical_limit ){
|
||||
//we've reached our limit, or showing one event only
|
||||
break;
|
||||
}else{
|
||||
//get next page of results
|
||||
$args['page']++;
|
||||
$EM_Events = EM_Events::get( $args );
|
||||
}
|
||||
}
|
||||
|
||||
//calendar footer
|
||||
$output = "\r\n"."END:VCALENDAR";
|
||||
echo preg_replace("/([^\r])\n/", "$1\r\n", $output);
|
17
plugins/events-manager/templates/location-single.php
Normal file
17
plugins/events-manager/templates/location-single.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Remember that this file is only used if you have chosen to override location pages with formats in your events manager settings!
|
||||
* You can also override the single location page completely in any case (e.g. at a level where you can control sidebars etc.), as described here - http://codex.wordpress.org/Post_Types#Template_Files
|
||||
* Your file would be named single-location.php
|
||||
*/
|
||||
/*
|
||||
* This page displays a single event, called during the em_content() if this is an event page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*/
|
||||
global $EM_Location;
|
||||
/* @var $EM_Location EM_Location */
|
||||
echo $EM_Location->output_single();
|
||||
?>
|
17
plugins/events-manager/templates/locations-list.php
Normal file
17
plugins/events-manager/templates/locations-list.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Default Location List Template
|
||||
* This page displays a list of locations, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display locations (or whatever) however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Locations::output()
|
||||
*
|
||||
*/
|
||||
$args = apply_filters('em_content_locations_args', $args);
|
||||
|
||||
if( get_option('dbem_css_loclist') ) echo "<div class='css-locations-list'>";
|
||||
|
||||
echo EM_Locations::output( $args );
|
||||
|
||||
if( get_option('dbem_css_loclist') ) echo "</div>";
|
14
plugins/events-manager/templates/locations-search.php
Normal file
14
plugins/events-manager/templates/locations-search.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/* WARNING!!! (2013-07-10) We intend to add a few more fields into this search form over the coming weeks/months.
|
||||
* Overriding shouldn't hinder functionality at all but these new search options won't appear on your form!
|
||||
*/
|
||||
/*
|
||||
* By modifying this in your theme folder within plugins/events-manager/templates/events-search.php, you can change the way the search form will look.
|
||||
* To ensure compatability, it is recommended you maintain class, id and form name attributes, unless you now what you're doing.
|
||||
* You also have an $args array available to you with search options passed on by your EM settings or shortcode
|
||||
*/
|
||||
/* @var $args array */
|
||||
$args['search_action'] = 'search_locations';
|
||||
$args['search_url'] = get_option('dbem_locations_page') ? get_permalink(get_option('dbem_locations_page')):EM_URI;
|
||||
em_locate_template('templates/events-search.php', true, array('args'=>$args));
|
||||
?>
|
26
plugins/events-manager/templates/map-global.php
Normal file
26
plugins/events-manager/templates/map-global.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/*
|
||||
* This file contains the HTML generated for maps. You can copy this file to yourthemefolder/plugins/events/templates and modify it in an upgrade-safe manner.
|
||||
*
|
||||
* There is one argument passed to you, which is the $args variable. This contains the arguments you could pass into shortcodes, template tags or functions like EM_Events::get().
|
||||
*
|
||||
* In this template, we encode the $args array into JSON for javascript to easily parse and request the locations from the server via AJAX.
|
||||
*/
|
||||
|
||||
if (get_option('dbem_gmap_is_active') == '1') {
|
||||
?>
|
||||
<div class="em-location-map-container" style='position:relative; background: #CDCDCD; width: <?php echo $args['width'] ?>; height: <?php echo $args['height'] ?>;'>
|
||||
<div class='em-locations-map' id='em-locations-map-<?php echo $args['random_id']; ?>' style="width:100%; height:100%"><em><?php _e('Loading Map....', 'events-manager'); ?></em></div>
|
||||
<div class='em-locations-map-coords' id='em-locations-map-coords-<?php echo $args['random_id']; ?>' style="display:none; visibility:hidden;"><?php echo EM_Object::json_encode($args); ?></div>
|
||||
<?php if( !empty($map_json_style) ): ?>
|
||||
<script type="text/javascript">
|
||||
if( typeof EM == 'object'){
|
||||
if( typeof EM.google_map_id_styles != 'object' ) EM.google_map_id_styles = [];
|
||||
EM.google_map_id_styles['<?php echo $args['random_id']; ?>'] = <?php echo $map_json_style; ?>;
|
||||
}
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
97
plugins/events-manager/templates/my-bookings.php
Normal file
97
plugins/events-manager/templates/my-bookings.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?php do_action('em_template_my_bookings_header'); ?>
|
||||
<?php
|
||||
global $wpdb, $current_user, $EM_Notices, $EM_Person;
|
||||
if( is_user_logged_in() ):
|
||||
$EM_Person = new EM_Person( get_current_user_id() );
|
||||
$EM_Bookings = $EM_Person->get_bookings();
|
||||
$bookings_count = count($EM_Bookings->bookings);
|
||||
if($bookings_count > 0){
|
||||
//Get events here in one query to speed things up
|
||||
$event_ids = array();
|
||||
foreach($EM_Bookings as $EM_Booking){
|
||||
$event_ids[] = $EM_Booking->event_id;
|
||||
}
|
||||
}
|
||||
$limit = ( !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit
|
||||
$page = ( !empty($_GET['pno']) ) ? $_GET['pno']:1;
|
||||
$offset = ( $page > 1 ) ? ($page-1)*$limit : 0;
|
||||
echo $EM_Notices;
|
||||
?>
|
||||
<div class='em-my-bookings'>
|
||||
<?php if ( $bookings_count >= $limit ) : ?>
|
||||
<div class='tablenav'>
|
||||
<?php
|
||||
if ( $bookings_count >= $limit ) {
|
||||
$link = em_add_get_params($_SERVER['REQUEST_URI'], array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing
|
||||
$bookings_nav = em_paginate( $link, $bookings_count, $limit, $page);
|
||||
echo $bookings_nav;
|
||||
}
|
||||
?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="clear"></div>
|
||||
<?php if( $bookings_count > 0 ): ?>
|
||||
<div class='table-wrap'>
|
||||
<table id='dbem-bookings-table' class='widefat post fixed'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='manage-column' scope='col'><?php _e('Event', 'events-manager'); ?></th>
|
||||
<th class='manage-column' scope='col'><?php _e('Date', 'events-manager'); ?></th>
|
||||
<th class='manage-column' scope='col'><?php _e('Spaces', 'events-manager'); ?></th>
|
||||
<th class='manage-column' scope='col'><?php _e('Status', 'events-manager'); ?></th>
|
||||
<th class='manage-column' scope='col'> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$rowno = 0;
|
||||
$event_count = 0;
|
||||
$nonce = wp_create_nonce('booking_cancel');
|
||||
foreach ($EM_Bookings as $EM_Booking) {
|
||||
/* @var $EM_Booking EM_Booking */
|
||||
$EM_Event = $EM_Booking->get_event();
|
||||
if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) {
|
||||
$rowno++;
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $EM_Event->output("#_EVENTLINK"); ?></td>
|
||||
<td><?php echo date_i18n( get_option('dbem_date_format'), $EM_Event->start ); ?></td>
|
||||
<td><?php echo $EM_Booking->get_spaces() ?></td>
|
||||
<td>
|
||||
<?php echo $EM_Booking->get_status(); ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
$cancel_link = '';
|
||||
if( !in_array($EM_Booking->booking_status, array(2,3)) && get_option('dbem_bookings_user_cancellation') && $EM_Event->get_bookings()->has_open_time() ){
|
||||
$cancel_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'booking_cancel', 'booking_id'=>$EM_Booking->booking_id, '_wpnonce'=>$nonce));
|
||||
$cancel_link = '<a class="em-bookings-cancel" href="'.$cancel_url.'" onclick="if( !confirm(EM.booking_warning_cancel) ){ return false; }">'.__('Cancel','events-manager').'</a>';
|
||||
}
|
||||
echo apply_filters('em_my_bookings_booking_actions', $cancel_link, $EM_Booking);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
do_action('em_my_bookings_booking_loop',$EM_Booking);
|
||||
$event_count++;
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php _e('You do not have any bookings.', 'events-manager'); ?>
|
||||
<?php endif; ?>
|
||||
<?php if( !empty($bookings_nav) && $bookings_count >= $limit ) : ?>
|
||||
<div class='tablenav'>
|
||||
<?php echo $bookings_nav; ?>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php do_action('em_template_my_bookings_footer', $EM_Bookings); ?>
|
||||
<?php else: ?>
|
||||
<p><?php echo sprintf(__('Please <a href="%s">Log In</a> to view your bookings.','events-manager'),site_url('wp-login.php?redirect_to=' . urlencode(get_permalink()), 'login'))?></p>
|
||||
<?php endif; ?>
|
10
plugins/events-manager/templates/readme.txt
Normal file
10
plugins/events-manager/templates/readme.txt
Normal file
@ -0,0 +1,10 @@
|
||||
This folder has files containing various templates used by events manager. The file names are quite descriptive as to their functions.
|
||||
|
||||
Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly.
|
||||
|
||||
To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/templates/ and edit as needed.
|
||||
|
||||
If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there.
|
||||
|
||||
Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a
|
||||
reported bug, please keep this in mind when updating.
|
57
plugins/events-manager/templates/rss.php
Normal file
57
plugins/events-manager/templates/rss.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/*
|
||||
* RSS Page
|
||||
* This page handles the even RSS feed.
|
||||
* You can override this file by and copying it to yourthemefolder/plugins/events-manager/templates/ and modifying as necessary.
|
||||
*
|
||||
*/
|
||||
header ( "Content-type: application/rss+xml; charset=UTF-8" );
|
||||
echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
|
||||
?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title><?php echo esc_html(get_option ( 'dbem_rss_main_title' )); ?></title>
|
||||
<link><?php echo EM_URI; ?></link>
|
||||
<description><?php echo esc_html(get_option('dbem_rss_main_description')); ?></description>
|
||||
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
|
||||
<pubDate><?php echo date('D, d M Y H:i:s +0000', get_option('em_last_modified', current_time('timestamp',true))); ?></pubDate>
|
||||
<atom:link href="<?php echo esc_attr(EM_RSS_URI); ?>" rel="self" type="application/rss+xml" />
|
||||
<?php
|
||||
$description_format = str_replace ( ">", ">", str_replace ( "<", "<", get_option ( 'dbem_rss_description_format' ) ) );
|
||||
$rss_limit = get_option('dbem_rss_limit');
|
||||
$page_limit = $rss_limit > 50 || !$rss_limit ? 50 : $rss_limit; //set a limit of 50 to output at a time, unless overall limit is lower
|
||||
$args = !empty($args) ? $args:array(); /* @var $args array */
|
||||
$args = array_merge(array('scope'=>get_option('dbem_rss_scope'), 'owner'=>false, 'limit'=>$page_limit, 'page'=>1, 'order'=>get_option('dbem_rss_order'), 'orderby'=>get_option('dbem_rss_orderby')), $args);
|
||||
$args = apply_filters('em_rss_template_args',$args);
|
||||
$EM_Events = EM_Events::get( $args );
|
||||
$count = 0;
|
||||
while( count($EM_Events) > 0 ){
|
||||
foreach ( $EM_Events as $EM_Event ) {
|
||||
/* @var $EM_Event EM_Event */
|
||||
$description = $EM_Event->output( get_option ( 'dbem_rss_description_format' ), "rss");
|
||||
$description = ent2ncr(convert_chars($description)); //Some RSS filtering
|
||||
$event_url = $EM_Event->output('#_EVENTURL');
|
||||
?>
|
||||
<item>
|
||||
<title><?php echo $EM_Event->output( get_option('dbem_rss_title_format'), "rss" ); ?></title>
|
||||
<link><?php echo $event_url; ?></link>
|
||||
<guid><?php echo $event_url; ?></guid>
|
||||
<pubDate><?php echo get_gmt_from_date(date('Y-m-d H:i:s', $EM_Event->start), 'D, d M Y H:i:s +0000'); ?></pubDate>
|
||||
<description><![CDATA[<?php echo $description; ?>]]></description>
|
||||
</item>
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
if( $rss_limit != 0 && $count >= $rss_limit ){
|
||||
//we've reached our limit, or showing one event only
|
||||
break;
|
||||
}else{
|
||||
//get next page of results
|
||||
$args['page']++;
|
||||
$EM_Events = EM_Events::get( $args );
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
</channel>
|
||||
</rss>
|
23
plugins/events-manager/templates/search/categories.php
Normal file
23
plugins/events-manager/templates/search/categories.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START Category Search -->
|
||||
<div class="em-search-category em-search-field">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['category_label']); ?></span>
|
||||
<?php
|
||||
EM_Object::ms_global_switch(); //in case in global tables mode of MultiSite, grabs main site categories, if not using MS Global, nothing happens
|
||||
wp_dropdown_categories(array(
|
||||
'hide_empty' => 0,
|
||||
'orderby' =>'name',
|
||||
'name' => 'category',
|
||||
'hierarchical' => true,
|
||||
'taxonomy' => EM_TAXONOMY_CATEGORY,
|
||||
'selected' => $args['category'],
|
||||
'show_option_none' => $args['categories_label'],
|
||||
'option_none_value'=> 0,
|
||||
'class'=>'em-events-search-category'
|
||||
));
|
||||
EM_Object::ms_global_switch_back(); //if switched above, switch back
|
||||
?>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END Category Search -->
|
20
plugins/events-manager/templates/search/geo-units.php
Normal file
20
plugins/events-manager/templates/search/geo-units.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START Geo Units Search -->
|
||||
<div class="em-search-geo-units em-search-field" <?php if( empty($args['geo']) || empty($args['near']) ): ?>style="display:none;"<?php endif; /* show location fields if no geo search is made */ ?>>
|
||||
<label>
|
||||
<span><?php echo esc_html($args['geo_units_label']); ?></span>
|
||||
<select name="near_distance" class="em-search-geo-distance">
|
||||
<?php foreach( $args['geo_distance_values'] as $unit ) : ?>
|
||||
<option value="<?php echo $unit; ?>" <?php if($args['near_distance'] == $unit) echo 'selected="selected"' ?>><?php echo $unit; ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span class="screen-reader-text"><?php echo esc_html(__('distance units','events-manager')); ?></span>
|
||||
<select name="near_unit" class="em-search-geo-unit">
|
||||
<option value="mi">mi</option>
|
||||
<option value="km" <?php if($args['near_unit'] == 'km') echo 'selected="selected"' ?>>km</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END Geo Units Search -->
|
100
plugins/events-manager/templates/search/geo.js
Normal file
100
plugins/events-manager/templates/search/geo.js
Normal file
@ -0,0 +1,100 @@
|
||||
function em_geo_search_init(){
|
||||
jQuery('input.em-search-geo').each(function(i){
|
||||
var input = /** @type {HTMLInputElement} */ jQuery(this);
|
||||
var wrapper = input.closest('div.em-search-geo');
|
||||
var autocomplete = new google.maps.places.Autocomplete(input[0]);
|
||||
var geo_coords = wrapper.find("input.em-search-geo-coords");
|
||||
|
||||
var geo_field_status = function( status ){
|
||||
wrapper.data('status',status);
|
||||
var em_search = wrapper.closest('.em-search');
|
||||
if( status == 'on' ){
|
||||
wrapper.css('background-image', wrapper.css('background-image').replace('search-geo.png', 'search-geo-on.png').replace('search-geo-off.png', 'search-geo-on.png'));
|
||||
em_search.find('select.em-search-country option:first-child').prop('selected','selected').trigger('change');
|
||||
em_search.find('.em-search-location').slideUp();
|
||||
em_search.find('.em-search-geo-units').slideDown();
|
||||
}else{
|
||||
if( status == 'off' ){
|
||||
wrapper.css('background-image', wrapper.css('background-image').replace('search-geo.png', 'search-geo-off.png').replace('search-geo-on.png', 'search-geo-off.png'));
|
||||
}else{
|
||||
wrapper.css('background-image', wrapper.css('background-image').replace('search-geo-off.png', 'search-geo.png').replace('search-geo-on.png', 'search-geo.png'));
|
||||
}
|
||||
geo_coords.val('');
|
||||
em_search.find('.em-search-location').slideDown();
|
||||
em_search.find('.em-search-geo-units').slideUp();
|
||||
}
|
||||
};
|
||||
|
||||
var ac_listener = function( place ) {
|
||||
var place = autocomplete.getPlace();
|
||||
if( !place || !place.geometry ){ //place not found
|
||||
if( input.val() == '' || input.val() == EM.geo_placeholder ){
|
||||
geo_field_status(false);
|
||||
}else{
|
||||
if( wrapper.data('last-search') == input.val() ){
|
||||
geo_field_status('on');
|
||||
geo_coords.val( wrapper.data('last-coords') );
|
||||
return;
|
||||
}
|
||||
//do a nearest match suggestion as last resort
|
||||
if( input.val().length >= 2 ){
|
||||
geo_field_status(false);
|
||||
autocompleteService = new google.maps.places.AutocompleteService();
|
||||
autocompleteService.getPlacePredictions( {'input': input.val(), 'offset': input.val().length }, function listentoresult(list, status) {
|
||||
if(list != null && list.length != 0) {
|
||||
placesService = new google.maps.places.PlacesService(document.getElementById('em-search-geo-attr'));
|
||||
placesService.getDetails( {'reference': list[0].reference}, function detailsresult(detailsResult, placesServiceStatus) {
|
||||
//we have a match, ask the user
|
||||
wrapper.data('last-search', detailsResult.formatted_address );
|
||||
wrapper.data('last-coords', detailsResult.geometry.location.lat() + ',' + detailsResult.geometry.location.lng());
|
||||
if( input.val() == detailsResult.formatted_address || confirm(EM.geo_alert_guess.replace('%s', '"'+detailsResult.formatted_address+'"')) ){
|
||||
geo_coords.val( detailsResult.geometry.location.lat() + ',' + detailsResult.geometry.location.lng() );
|
||||
geo_field_status('on');
|
||||
input.val(detailsResult.formatted_address);
|
||||
}else{
|
||||
input.data('last-key',false);
|
||||
geo_field_status('off');
|
||||
}
|
||||
});
|
||||
}else{ geo_field_status('off'); }
|
||||
});
|
||||
}else{ geo_field_status('off'); }
|
||||
}
|
||||
wrapper.data('last-search', input.val() );
|
||||
wrapper.data('last-coords', geo_coords.val());
|
||||
return;
|
||||
}
|
||||
geo_coords.val( place.geometry.location.lat() + ',' + place.geometry.location.lng() );
|
||||
geo_field_status('on');
|
||||
wrapper.data('last-search', input.val() );
|
||||
wrapper.data('last-coords', geo_coords.val());
|
||||
};
|
||||
google.maps.event.addListener(autocomplete, 'place_changed', ac_listener);
|
||||
|
||||
if( geo_coords.val() != '' ){
|
||||
geo_field_status('on');
|
||||
wrapper.data('last-search', input.val() );
|
||||
wrapper.data('last-coords', geo_coords.val() );
|
||||
}
|
||||
input.keypress( function(e) {
|
||||
//if enter is pressed once during 'near' input, don't do anything so Google can select location, otherwise let behavior (form submittal) proceed
|
||||
if( e.which == 13 ) {
|
||||
if( input.data('last-key') != 13 || wrapper.data('status') != 'on' ){
|
||||
e.preventDefault();
|
||||
}
|
||||
}else{
|
||||
geo_field_status(false);
|
||||
}
|
||||
}).keyup( function(e) {
|
||||
if( this.value == '' ){ geo_field_status(false); }
|
||||
else if( wrapper.data('last-search') != this.value ){ geo_field_status('off'); }
|
||||
input.data('last-key', e.which);
|
||||
}).blur( function(e){ //create HTML 5 placeholder effect if not HTML 5
|
||||
if( this.value == '' && !('placeholder' in document.createElement('input')) ) this.value = EM.geo_placeholder;
|
||||
}).focus( function(e){
|
||||
if( this.value == EM.geo_placeholder ) this.value='';
|
||||
input.data('last-key', 13);
|
||||
}).attr('placeholder', EM.geo_placeholder);
|
||||
});
|
||||
}
|
||||
jQuery(document).bind('em_maps_loaded', function(){ em_geo_search_init(); });
|
23
plugins/events-manager/templates/search/geo.php
Normal file
23
plugins/events-manager/templates/search/geo.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START General Search -->
|
||||
<div class="em-search-geo em-search-field">
|
||||
<?php
|
||||
/* This general search will find matches within event_name, event_notes, and the location_name, address, town, state and country. */
|
||||
|
||||
?>
|
||||
<label>
|
||||
<span class="screen-reader-text"><?php echo esc_html($args['geo_label']); ?></span>
|
||||
<input type="text" name="geo" class="em-search-geo" value="<?php echo esc_attr($args['geo']); ?>"/>
|
||||
</label>
|
||||
<input type="hidden" name="near" class="em-search-geo-coords" value="<?php echo esc_attr($args['near']); ?>" />
|
||||
<div id="em-search-geo-attr" ></div>
|
||||
<script type="text/javascript">
|
||||
EM.geo_placeholder = '<?php echo esc_attr($args['geo_label']); ?>';
|
||||
EM.geo_alert_guess = '<?php esc_attr_e('We are going to use %s for searching.','events-manager'); ?> \n\n <?php esc_attr_e('If this is incorrect, click cancel and try a more specific address.','events-manager') ?>';
|
||||
<?php
|
||||
//include separately, which allows you to just modify the html or completely override the JS
|
||||
em_locate_template('templates/search/geo.js',true);
|
||||
?>
|
||||
</script>
|
||||
</div>
|
||||
<!-- END General Search -->
|
@ -0,0 +1,27 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START Country Search -->
|
||||
<div class="em-search-country em-search-field">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['country_label']); ?></span>
|
||||
<select name="country" class="em-search-country em-events-search-country">
|
||||
<option value=''><?php echo esc_html($args['countries_label']); ?></option>
|
||||
<?php
|
||||
//get the counties from locations table
|
||||
global $wpdb;
|
||||
$countries = em_get_countries();
|
||||
$em_countries = $wpdb->get_results("SELECT DISTINCT location_country FROM ".EM_LOCATIONS_TABLE." WHERE location_country IS NOT NULL AND location_country != '' AND location_status=1 ORDER BY location_country ASC", ARRAY_N);
|
||||
$ddm_countries = array();
|
||||
//filter out location countries so they're valid records (hence no sanitization)
|
||||
foreach($em_countries as $em_country){
|
||||
$ddm_countries[$em_country[0]] = $countries[$em_country[0]];
|
||||
}
|
||||
asort($ddm_countries);
|
||||
foreach( $ddm_countries as $country_code => $country_name ):
|
||||
//we're not using esc_ functions here because values are hard-coded within em_get_countries()
|
||||
?>
|
||||
<option value="<?php echo $country_code; ?>"<?php echo (!empty($args['country']) && $args['country'] == $country_code) ? ' selected="selected"':''; ?>><?php echo $country_name; ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END Country Search -->
|
24
plugins/events-manager/templates/search/location-regions.php
Normal file
24
plugins/events-manager/templates/search/location-regions.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START Region Search -->
|
||||
<div class="em-search-region em-search-field">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['region_label']); ?></span>
|
||||
<select name="region" class="em-search-region em-events-search-region">
|
||||
<option value=''><?php echo esc_html(get_option('dbem_search_form_regions_label')); ?></option>
|
||||
<?php
|
||||
global $wpdb;
|
||||
$em_states = $cond = array();
|
||||
if( !empty($args['country']) ) $cond[] = $wpdb->prepare("AND location_country=%s", $args['country']);
|
||||
if( !empty($cond) || empty($args['search_countries']) ){ //get specific country regions or all regions if no country fields exists
|
||||
$em_states = $wpdb->get_results("SELECT DISTINCT location_region FROM ".EM_LOCATIONS_TABLE." WHERE location_region IS NOT NULL AND location_region != '' AND location_status=1 ".implode(' ', $cond)." ORDER BY location_region", ARRAY_N);
|
||||
}
|
||||
foreach($em_states as $region){
|
||||
?>
|
||||
<option<?php echo (!empty($args['region']) && $args['region'] == $region[0]) ? ' selected="selected"':''; ?>><?php echo esc_html($region[0]); ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END Region Search -->
|
25
plugins/events-manager/templates/search/location-states.php
Normal file
25
plugins/events-manager/templates/search/location-states.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START State/County Search -->
|
||||
<div class="em-search-state em-search-field">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['state_label']); ?></span>
|
||||
<select name="state" class="em-search-state em-events-search-state">
|
||||
<option value=''><?php echo esc_html(get_option('dbem_search_form_states_label')); ?></option>
|
||||
<?php
|
||||
global $wpdb;
|
||||
$em_states = $cond = array();
|
||||
if( !empty($args['country']) ) $cond[] = $wpdb->prepare("AND location_country=%s", $args['country']);
|
||||
if( !empty($args['region']) ) $cond[] = $wpdb->prepare("AND location_region=%s", $args['region']);
|
||||
if( !empty($cond) || empty($args['search_countries']) ){ //get specific states, whether restricted by country/region or all states if no country field is displayed
|
||||
$em_states = $wpdb->get_results("SELECT DISTINCT location_state FROM ".EM_LOCATIONS_TABLE." WHERE location_state IS NOT NULL AND location_state != '' AND location_status=1 ".implode(' ', $cond)." ORDER BY location_state", ARRAY_N);
|
||||
}
|
||||
foreach($em_states as $state){
|
||||
?>
|
||||
<option<?php echo (!empty($args['state']) && $args['state'] == $state[0]) ? ' selected="selected"':''; ?>><?php echo esc_html($state[0]); ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END State/County Search -->
|
26
plugins/events-manager/templates/search/location-towns.php
Normal file
26
plugins/events-manager/templates/search/location-towns.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START City Search -->
|
||||
<div class="em-search-town em-search-field">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['town_label']); ?></span>
|
||||
<select name="town" class="em-search-town em-events-search-town">
|
||||
<option value=''><?php echo esc_html(get_option('dbem_search_form_towns_label')); ?></option>
|
||||
<?php
|
||||
global $wpdb;
|
||||
$em_towns = $cond = array();
|
||||
if( !empty($args['country']) ) $cond[] = $wpdb->prepare("AND location_country=%s", $args['country']);
|
||||
if( !empty($args['region']) ) $cond[] = $wpdb->prepare("AND location_region=%s", $args['region']);
|
||||
if( !empty($args['state']) ) $cond[] = $wpdb->prepare(" AND location_state=%s ", $args['state']);
|
||||
if( !empty($cond) || empty($args['search_countries']) ){ //get specific towns, whether restricted by country/region/state or all towns if no country field is displayed
|
||||
$em_towns = $wpdb->get_results("SELECT DISTINCT location_town FROM ".EM_LOCATIONS_TABLE." WHERE location_town IS NOT NULL AND location_town != '' AND location_status=1 ".implode(' ', $cond)." ORDER BY location_town", ARRAY_N);
|
||||
}
|
||||
foreach($em_towns as $town){
|
||||
?>
|
||||
<option<?php echo (!empty($args['town']) && $args['town'] == $town[0]) ? ' selected="selected"':''; ?>><?php echo esc_html($town[0]); ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<!-- END City Search -->
|
18
plugins/events-manager/templates/search/location.php
Normal file
18
plugins/events-manager/templates/search/location.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<div class="em-search-location" <?php if( !empty($args['search_geo']) && !empty($args['geo']) && !empty($args['near']) ): ?>style="display:none;"<?php endif; /* show location fields if no geo search is made */ ?>>
|
||||
<?php
|
||||
//figure out if we have a default country or one submitted via search
|
||||
if( !empty($args['search_countries']) ){
|
||||
em_locate_template('templates/search/location-countries.php',true,array('args'=>$args));
|
||||
}else{
|
||||
?><input type="hidden" name="country" value="<?php echo esc_attr($args['country']); ?>" /><?php
|
||||
}
|
||||
?>
|
||||
<div class="em-search-location-meta" <?php if( empty($args['country']) && !empty($args['search_countries']) ): ?>style="display:none;"<?php endif; /* show location meta if country field has value or not shown */ ?>>
|
||||
<?php
|
||||
if( !empty($args['search_regions']) ) em_locate_template('templates/search/location-regions.php',true,array('args'=>$args));
|
||||
if( !empty($args['search_states']) ) em_locate_template('templates/search/location-states.php',true,array('args'=>$args));
|
||||
if( !empty($args['search_towns']) ) em_locate_template('templates/search/location-towns.php',true,array('args'=>$args));
|
||||
?>
|
||||
</div>
|
||||
</div>
|
17
plugins/events-manager/templates/search/scope.php
Normal file
17
plugins/events-manager/templates/search/scope.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php $args = !empty($args) ? $args:array(); /* @var $args array */ ?>
|
||||
<!-- START Date Search -->
|
||||
<div class="em-search-scope em-search-field">
|
||||
<span class="em-search-scope em-events-search-dates em-date-range">
|
||||
<label>
|
||||
<span><?php echo esc_html($args['scope_label']); ?></span>
|
||||
<input type="text" class="em-date-input-loc em-date-start" />
|
||||
<input type="hidden" class="em-date-input" name="scope[0]" value="<?php echo esc_attr($args['scope'][0]); ?>" />
|
||||
</label>
|
||||
<label>
|
||||
<?php echo esc_html($args['scope_seperator']); ?>
|
||||
<input type="text" class="em-date-input-loc em-date-end" />
|
||||
<input type="hidden" class="em-date-input" name="scope[1]" value="<?php echo esc_attr($args['scope'][1]); ?>" />
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
<!-- END Date Search -->
|
15
plugins/events-manager/templates/search/search.php
Normal file
15
plugins/events-manager/templates/search/search.php
Normal file
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/* This general search will find matches within event_name, event_notes, and the location_name, address, town, state and country. */
|
||||
$args = !empty($args) ? $args:array(); /* @var $args array */
|
||||
?>
|
||||
<!-- START General Search -->
|
||||
<div class="em-search-text em-search-field">
|
||||
<script type="text/javascript">
|
||||
EM.search_term_placeholder = '<?php echo esc_attr($args['search_term_label']); ?>';
|
||||
</script>
|
||||
<label>
|
||||
<span class="screen-reader-text"><?php echo esc_html($args['search_term_label']); ?></span>
|
||||
<input type="text" name="em_search" class="em-events-search-text em-search-text" value="<?php echo esc_attr($args['search']); ?>" />
|
||||
</label>
|
||||
</div>
|
||||
<!-- END General Search -->
|
12
plugins/events-manager/templates/tag-single.php
Normal file
12
plugins/events-manager/templates/tag-single.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/*
|
||||
* This page displays a single event, called during the em_content() if this is an event page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display events however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Events::output()
|
||||
*/
|
||||
global $EM_Tag;
|
||||
/* @var $EM_Tag EM_Tag */
|
||||
echo $EM_Tag->output_single();
|
||||
?>
|
17
plugins/events-manager/templates/tags-list.php
Normal file
17
plugins/events-manager/templates/tags-list.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
/*
|
||||
* Default tags List Template
|
||||
* This page displays a list of locations, called during the em_content() if this is an events list page.
|
||||
* You can override the default display settings pages by copying this file to yourthemefolder/plugins/events-manager/templates/ and modifying it however you need.
|
||||
* You can display locations (or whatever) however you wish, there are a few variables made available to you:
|
||||
*
|
||||
* $args - the args passed onto EM_Locations::output()
|
||||
*
|
||||
*/
|
||||
$args = apply_filters('em_content_tags_args', $args);
|
||||
|
||||
if( get_option('dbem_css_taglist') ) echo "<div class='css-tags-list'>";
|
||||
|
||||
echo EM_Tags::output( $args );
|
||||
|
||||
if( get_option('dbem_css_taglist') ) echo "</div>";
|
62
style.css
Normal file
62
style.css
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
Theme Name: Leon Corre Theme
|
||||
Theme URI: https://yourwebsite.com
|
||||
Author: Your Name
|
||||
Author URI: https://yourwebsite.com
|
||||
Template: twentyseventeen
|
||||
Description: Child theme for Twenty Seventeen.
|
||||
Version: 0.1
|
||||
License: GNU General Public License v2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
Tags:
|
||||
Text Domain: twentyseventeen-child
|
||||
*/
|
||||
@import url('https://fonts.googleapis.com/css?family=Roboto|Roboto+Slab');
|
||||
|
||||
body,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
color: #333;
|
||||
/*font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;*/
|
||||
font-family:"Roboto Slab",arial !important;
|
||||
font-size: 15px;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.66;
|
||||
}
|
||||
|
||||
p {
|
||||
font-family:"Roboto",arial !important;
|
||||
text-align:justify !important;
|
||||
}
|
||||
|
||||
p.site-description {text-align:center !important;}
|
||||
select {width:100%;}
|
||||
|
||||
ul,
|
||||
ol {padding: 0 50px; }
|
||||
li {padding:5px;}
|
||||
.elementor-widget-heading .elementor-heading-title {color:#000 !important;}
|
||||
/*.wrap {padding:30px !important;}*/
|
||||
.page.page-one-column .entry-header, .twentyseventeen-front-page.page-one-column .entry-header, .archive.page-one-column:not(.has-sidebar) .page-header {margin-bottom:1em !important;}
|
||||
.custom-logo {width:200px !important;height:auto !important;max-height:1000px !important;}
|
||||
|
||||
.main-navigation a {color:#eee;}
|
||||
.main-navigation a:hover
|
||||
{ color:#fff;}
|
||||
.icon-arrow-right {color:#fff;}
|
||||
a, .page .panel-content .entry-title, .page-title, body.page:not(.twentyseventeen-front-page) .entry-title
|
||||
{color: #000000;
|
||||
font-family:"Libre Franklin", "Helvetica Neue", helvetica;
|
||||
}
|
||||
.elementor-divider-separator {border:2px solid #008000 !important;}
|
||||
strong {color:#008000;}
|
||||
button, input[type="button"], input[type="submit"]
|
||||
{background-color:#008000;}
|
||||
h2 {font-weight:500;color:#008000;}
|
||||
|
||||
.navigation-top {bottom:auto !important; top:0 !important; background-color:#008000; }
|
||||
|
||||
#post-16 .entry-header {display:none;}
|
32
template-parts/footer/footer-widgets.php
Normal file
32
template-parts/footer/footer-widgets.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays footer widgets if assigned
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<?php
|
||||
if ( is_active_sidebar( 'sidebar-2' ) ||
|
||||
is_active_sidebar( 'sidebar-3' ) ) :
|
||||
?>
|
||||
|
||||
<aside class="widget-area" role="complementary">
|
||||
<?php
|
||||
if ( is_active_sidebar( 'sidebar-2' ) ) { ?>
|
||||
<div class="widget-column footer-widget-1">
|
||||
<?php dynamic_sidebar( 'sidebar-2' ); ?>
|
||||
</div>
|
||||
<?php }
|
||||
if ( is_active_sidebar( 'sidebar-3' ) ) { ?>
|
||||
<div class="widget-column footer-widget-2">
|
||||
<?php dynamic_sidebar( 'sidebar-3' ); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</aside><!-- .widget-area -->
|
||||
|
||||
<?php endif; ?>
|
14
template-parts/footer/site-info.php
Normal file
14
template-parts/footer/site-info.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays footer site info
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
<div class="site-info">
|
||||
<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyseventeen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyseventeen' ), 'WordPress' ); ?></a>
|
||||
</div><!-- .site-info -->
|
20
template-parts/header/header-image.php
Normal file
20
template-parts/header/header-image.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays header media
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
<div class="custom-header">
|
||||
|
||||
<div class="custom-header-media">
|
||||
<?php the_custom_header_markup(); ?>
|
||||
</div>
|
||||
|
||||
<?php get_template_part( 'template-parts/header/site', 'branding' ); ?>
|
||||
|
||||
</div><!-- .custom-header -->
|
38
template-parts/header/site-branding.php
Normal file
38
template-parts/header/site-branding.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays header site branding
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
<div class="site-branding">
|
||||
<div class="wrap">
|
||||
<div class="site-branding-logo" style="text-align:center;">
|
||||
<?php the_custom_logo(); ?>
|
||||
</div>
|
||||
<div class="site-branding-text" style="text-align:center;width:100%;">
|
||||
<?php if ( is_front_page() ) : ?>
|
||||
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
|
||||
<?php else : ?>
|
||||
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
$description = get_bloginfo( 'description', 'display' );
|
||||
|
||||
if ( $description || is_customize_preview() ) :
|
||||
?>
|
||||
<p class="site-description"><?php echo $description; ?></p>
|
||||
<?php endif; ?>
|
||||
</div><!-- .site-branding-text -->
|
||||
|
||||
<?php if ( ( twentyseventeen_is_frontpage() || ( is_home() && is_front_page() ) ) && ! has_nav_menu( 'top' ) ) : ?>
|
||||
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll down to content', 'twentyseventeen' ); ?></span></a>
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- .wrap -->
|
||||
</div><!-- .site-branding -->
|
29
template-parts/navigation/navigation-top.php
Normal file
29
template-parts/navigation/navigation-top.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays top navigation
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
?>
|
||||
<nav id="site-navigation" class="main-navigation" role="navigation" aria-label="<?php esc_attr_e( 'Top Menu', 'twentyseventeen' ); ?>">
|
||||
<button class="menu-toggle" aria-controls="top-menu" aria-expanded="false">
|
||||
<?php
|
||||
echo twentyseventeen_get_svg( array( 'icon' => 'bars' ) );
|
||||
echo twentyseventeen_get_svg( array( 'icon' => 'close' ) );
|
||||
_e( 'Menu', 'twentyseventeen' );
|
||||
?>
|
||||
</button>
|
||||
|
||||
<?php wp_nav_menu( array(
|
||||
'theme_location' => 'top',
|
||||
'menu_id' => 'top-menu',
|
||||
) ); ?>
|
||||
|
||||
<?php if ( ( twentyseventeen_is_frontpage() || ( is_home() && is_front_page() ) ) && has_custom_header() ) : ?>
|
||||
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll down to content', 'twentyseventeen' ); ?></span></a>
|
||||
<?php endif; ?>
|
||||
</nav><!-- #site-navigation -->
|
79
template-parts/page/content-front-page-panels.php
Normal file
79
template-parts/page/content-front-page-panels.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* Template part for displaying pages on front page
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
global $twentyseventeencounter;
|
||||
|
||||
?>
|
||||
|
||||
<article id="panel<?php echo $twentyseventeencounter; ?>" <?php post_class( 'twentyseventeen-panel ' ); ?> >
|
||||
|
||||
<?php if ( has_post_thumbnail() ) :
|
||||
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'twentyseventeen-featured-image' );
|
||||
|
||||
// Calculate aspect ratio: h / w * 100%.
|
||||
$ratio = $thumbnail[2] / $thumbnail[1] * 100;
|
||||
?>
|
||||
|
||||
<div class="panel-image" style="background-image: url(<?php echo esc_url( $thumbnail[0] ); ?>);">
|
||||
<div class="panel-image-prop" style="padding-top: <?php echo esc_attr( $ratio ); ?>%"></div>
|
||||
</div><!-- .panel-image -->
|
||||
|
||||
<?php endif; ?>
|
||||
<span id="<?php echo get_post()->post_name; ?>" style="margin-bottom:20px;"></span>
|
||||
<div class="panel-content">
|
||||
<div class="wrap">
|
||||
<header class="entry-header">
|
||||
<?php the_title( '<h2 class="entry-title">', '</h2>' ); ?>
|
||||
|
||||
<?php twentyseventeen_edit_link( get_the_ID() ); ?>
|
||||
|
||||
</header><!-- .entry-header -->
|
||||
|
||||
<div class="entry-content">
|
||||
<?php
|
||||
/* translators: %s: Name of current post */
|
||||
the_content( sprintf(
|
||||
__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
|
||||
get_the_title()
|
||||
) );
|
||||
?>
|
||||
</div><!-- .entry-content -->
|
||||
|
||||
<?php
|
||||
// Show recent blog posts if is blog posts page (Note that get_option returns a string, so we're casting the result as an int).
|
||||
if ( get_the_ID() === (int) get_option( 'page_for_posts' ) ) : ?>
|
||||
|
||||
<?php // Show four most recent posts.
|
||||
$recent_posts = new WP_Query( array(
|
||||
'posts_per_page' => 3,
|
||||
'post_status' => 'publish',
|
||||
'ignore_sticky_posts' => true,
|
||||
'no_found_rows' => true,
|
||||
) );
|
||||
?>
|
||||
|
||||
<?php if ( $recent_posts->have_posts() ) : ?>
|
||||
|
||||
<div class="recent-posts">
|
||||
|
||||
<?php
|
||||
while ( $recent_posts->have_posts() ) : $recent_posts->the_post();
|
||||
get_template_part( 'template-parts/post/content', 'excerpt' );
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
?>
|
||||
</div><!-- .recent-posts -->
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- .wrap -->
|
||||
</div><!-- .panel-content -->
|
||||
|
||||
</article><!-- #post-## -->
|
53
template-parts/page/content-front-page.php
Normal file
53
template-parts/page/content-front-page.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* Displays content for front page
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class( 'twentyseventeen-panel ' ); ?> >
|
||||
|
||||
<?php if ( has_post_thumbnail() ) :
|
||||
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'twentyseventeen-featured-image' );
|
||||
|
||||
$post_thumbnail_id = get_post_thumbnail_id( $post->ID );
|
||||
|
||||
$thumbnail_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'twentyseventeen-featured-image' );
|
||||
|
||||
// Calculate aspect ratio: h / w * 100%.
|
||||
$ratio = $thumbnail_attributes[2] / $thumbnail_attributes[1] * 100;
|
||||
?>
|
||||
|
||||
<div class="panel-image" style="background-image: url(<?php echo esc_url( $thumbnail[0] ); ?>);">
|
||||
<div class="panel-image-prop" style="padding-top: <?php echo esc_attr( $ratio ); ?>%"></div>
|
||||
</div><!-- .panel-image -->
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="panel-content">
|
||||
<div class="wrap">
|
||||
<header class="entry-header" style="">
|
||||
<?php the_title( '<h2 class="entry-title">', '</h2>' ); ?>
|
||||
|
||||
<?php twentyseventeen_edit_link( get_the_ID() ); ?>
|
||||
|
||||
</header><!-- .entry-header -->
|
||||
|
||||
<div class="entry-content">
|
||||
<?php
|
||||
/* translators: %s: Name of current post */
|
||||
the_content( sprintf(
|
||||
__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
|
||||
get_the_title()
|
||||
) );
|
||||
?>
|
||||
</div><!-- .entry-content -->
|
||||
|
||||
</div><!-- .wrap -->
|
||||
</div><!-- .panel-content -->
|
||||
|
||||
</article><!-- #post-## -->
|
30
template-parts/page/content-page.php
Normal file
30
template-parts/page/content-page.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Template part for displaying page content in page.php
|
||||
*
|
||||
* @link https://codex.wordpress.org/Template_Hierarchy
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
|
||||
<header class="entry-header">
|
||||
<?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
|
||||
<?php twentyseventeen_edit_link( get_the_ID() ); ?>
|
||||
</header><!-- .entry-header -->
|
||||
<div class="entry-content">
|
||||
<?php
|
||||
the_content();
|
||||
|
||||
wp_link_pages( array(
|
||||
'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ),
|
||||
'after' => '</div>',
|
||||
) );
|
||||
?>
|
||||
</div><!-- .entry-content -->
|
||||
</article><!-- #post-## -->
|
105
template-parts/post/content-audio.php
Normal file
105
template-parts/post/content-audio.php
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* Template part for displaying audio posts
|
||||
*
|
||||
* @link https://codex.wordpress.org/Template_Hierarchy
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
|
||||
<?php
|
||||
if ( is_sticky() && is_home() ) {
|
||||
echo twentyseventeen_get_svg( array( 'icon' => 'thumb-tack' ) );
|
||||
}
|
||||
?>
|
||||
<header class="entry-header">
|
||||
<?php
|
||||
if ( 'post' === get_post_type() ) {
|
||||
echo '<div class="entry-meta">';
|
||||
if ( is_single() ) {
|
||||
twentyseventeen_posted_on();
|
||||
} else {
|
||||
echo twentyseventeen_time_link();
|
||||
twentyseventeen_edit_link();
|
||||
};
|
||||
echo '</div><!-- .entry-meta -->';
|
||||
};
|
||||
|
||||
if ( is_single() ) {
|
||||
the_title( '<h1 class="entry-title">', '</h1>' );
|
||||
} elseif ( is_front_page() && is_home() ) {
|
||||
the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' );
|
||||
} else {
|
||||
the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );
|
||||
}
|
||||
?>
|
||||
</header><!-- .entry-header -->
|
||||
|
||||
<?php
|
||||
$content = apply_filters( 'the_content', get_the_content() );
|
||||
$audio = false;
|
||||
|
||||
// Only get audio from the content if a playlist isn't present.
|
||||
if ( false === strpos( $content, 'wp-playlist-script' ) ) {
|
||||
$audio = get_media_embedded_in_content( $content, array( 'audio' ) );
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<?php if ( '' !== get_the_post_thumbnail() && ! is_single() ) : ?>
|
||||
<div class="post-thumbnail">
|
||||
<a href="<?php the_permalink(); ?>">
|
||||
<?php the_post_thumbnail( 'twentyseventeen-featured-image' ); ?>
|
||||
</a>
|
||||
</div><!-- .post-thumbnail -->
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="entry-content">
|
||||
|
||||
<?php
|
||||
if ( ! is_single() ) {
|
||||
|
||||
// If not a single post, highlight the audio file.
|
||||
if ( ! empty( $audio ) ) {
|
||||
foreach ( $audio as $audio_html ) {
|
||||
echo '<div class="entry-audio">';
|
||||
echo $audio_html;
|
||||
echo '</div><!-- .entry-audio -->';
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
if ( is_single() || empty( $audio ) ) {
|
||||
|
||||
/* translators: %s: Name of current post */
|
||||
the_content( sprintf(
|
||||
__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
|
||||
get_the_title()
|
||||
) );
|
||||
|
||||
wp_link_pages( array(
|
||||
'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ),
|
||||
'after' => '</div>',
|
||||
'link_before' => '<span class="page-number">',
|
||||
'link_after' => '</span>',
|
||||
) );
|
||||
|
||||
};
|
||||
?>
|
||||
|
||||
</div><!-- .entry-content -->
|
||||
|
||||
<?php
|
||||
if ( is_single() ) {
|
||||
twentyseventeen_entry_footer();
|
||||
}
|
||||
?>
|
||||
|
||||
</article><!-- #post-## -->
|
46
template-parts/post/content-excerpt.php
Normal file
46
template-parts/post/content-excerpt.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Template part for displaying posts with excerpts
|
||||
*
|
||||
* Used in Search Results and for Recent Posts in Front Page panels.
|
||||
*
|
||||
* @link https://codex.wordpress.org/Template_Hierarchy
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Twenty_Seventeen
|
||||
* @since 1.0
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
?>
|
||||
|
||||
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
|
||||
|
||||
<header class="entry-header">
|
||||
<?php if ( 'post' === get_post_type() ) : ?>
|
||||
<div class="entry-meta">
|
||||
<?php
|
||||
echo twentyseventeen_time_link();
|
||||
twentyseventeen_edit_link();
|
||||
?>
|
||||
</div><!-- .entry-meta -->
|
||||
<?php elseif ( 'page' === get_post_type() && get_edit_post_link() ) : ?>
|
||||
<div class="entry-meta">
|
||||
<?php twentyseventeen_edit_link(); ?>
|
||||
</div><!-- .entry-meta -->
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ( is_front_page() && ! is_home() ) {
|
||||
|
||||
// The excerpt is being displayed within a front page section, so it's a lower hierarchy than h2.
|
||||
the_title( sprintf( '<h3 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h3>' );
|
||||
} else {
|
||||
the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
|
||||
} ?>
|
||||
</header><!-- .entry-header -->
|
||||
|
||||
<div class="entry-summary">
|
||||
<?php the_excerpt(); ?>
|
||||
</div><!-- .entry-summary -->
|
||||
|
||||
</article><!-- #post-## -->
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user