http code and message for http response
|
@ -135,6 +135,11 @@ elseif( $Url->whereAmI()==='admin' ) {
|
||||||
// Set page 404 not found
|
// Set page 404 not found
|
||||||
if( $Url->notFound() ) {
|
if( $Url->notFound() ) {
|
||||||
$Url->setWhereAmI('page');
|
$Url->setWhereAmI('page');
|
||||||
|
$Url->setHttpCode(404);
|
||||||
|
|
||||||
$page = $Page = buildPage('error');
|
$page = $Page = buildPage('error');
|
||||||
|
if ($page===false) {
|
||||||
|
$page = buildErrorPage();
|
||||||
|
}
|
||||||
$pages[0] = $page;
|
$pages[0] = $page;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
<?php defined('BLUDIT') or die('Bludit CMS.');
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
// Page not found 404
|
header('HTTP/1.0 '.$Url->httpCode().' '.$Url->httpMessage());
|
||||||
if ($Url->notFound()) {
|
|
||||||
header('HTTP/1.0 404 Not Found');
|
|
||||||
}
|
|
||||||
|
|
|
@ -604,6 +604,11 @@ class dbPages extends dbJSON
|
||||||
return Text::firstCharUp($field).': '.$value;
|
return Text::firstCharUp($field).': '.$value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDBFields()
|
||||||
|
{
|
||||||
|
return $this->dbFields;
|
||||||
|
}
|
||||||
|
|
||||||
// ----- OLD
|
// ----- OLD
|
||||||
|
|
||||||
public function parentKeyList()
|
public function parentKeyList()
|
||||||
|
@ -667,6 +672,4 @@ class dbPages extends dbJSON
|
||||||
return $this->save();
|
return $this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -67,6 +67,17 @@ function reindexTags() {
|
||||||
return $dbTags->reindex();
|
return $dbTags->reindex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildErrorPage() {
|
||||||
|
global $dbPages;
|
||||||
|
global $Language;
|
||||||
|
|
||||||
|
$page = new Page(false);
|
||||||
|
$page->setField('title', 'Page not found');
|
||||||
|
$page->setField('content', $Language->get('installer-page-error-content'));
|
||||||
|
|
||||||
|
return $page;
|
||||||
|
}
|
||||||
|
|
||||||
function buildThePage() {
|
function buildThePage() {
|
||||||
global $Url;
|
global $Url;
|
||||||
global $page, $Page;
|
global $page, $Page;
|
||||||
|
@ -76,12 +87,12 @@ function buildThePage() {
|
||||||
|
|
||||||
// The page doesn't exist
|
// The page doesn't exist
|
||||||
if($page===false) {
|
if($page===false) {
|
||||||
$Url->setNotFound(true);
|
$Url->setNotFound();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// The page is not published
|
// The page is not published
|
||||||
elseif( $page->scheduled() || $page->draft() ) {
|
elseif( $page->scheduled() || $page->draft() ) {
|
||||||
$Url->setNotFound(true);
|
$Url->setNotFound();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +155,7 @@ function buildPagesFor($for, $categoryKey=false, $tagKey=false) {
|
||||||
|
|
||||||
// There are not items, invalid tag, invalid category, out of range, etc...
|
// There are not items, invalid tag, invalid category, out of range, etc...
|
||||||
if( $list===false ) {
|
if( $list===false ) {
|
||||||
$Url->setNotFound(true);
|
$Url->setNotFound();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ class Url
|
||||||
private $notFound;
|
private $notFound;
|
||||||
private $parameters;
|
private $parameters;
|
||||||
private $activeFilter;
|
private $activeFilter;
|
||||||
|
private $httpCode;
|
||||||
|
private $httpMessage;
|
||||||
|
|
||||||
function __construct()
|
function __construct()
|
||||||
{
|
{
|
||||||
|
@ -26,6 +28,8 @@ class Url
|
||||||
$this->slug = '';
|
$this->slug = '';
|
||||||
$this->filters = array();
|
$this->filters = array();
|
||||||
$this->activeFilter = '';
|
$this->activeFilter = '';
|
||||||
|
$this->httpCode = 200;
|
||||||
|
$this->httpMessage = 'OK';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filters change for different languages
|
// Filters change for different languages
|
||||||
|
@ -68,7 +72,7 @@ class Url
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setNotFound(true);
|
$this->setNotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -138,9 +142,31 @@ class Url
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setNotFound($error=true)
|
public function setNotFound()
|
||||||
{
|
{
|
||||||
$this->notFound = $error;
|
$this->notFound = true;
|
||||||
|
$this->httpCode = 404;
|
||||||
|
$this->httpMessage = 'Not Found';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function httpCode()
|
||||||
|
{
|
||||||
|
return $this->httpCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setHttpCode($code = 200)
|
||||||
|
{
|
||||||
|
$this->httpCode = $code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function httpMessage()
|
||||||
|
{
|
||||||
|
return $this->httpMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setHttpMessage($msg = 'OK')
|
||||||
|
{
|
||||||
|
$this->httpMessage = $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the slug after the $filter, the slug could be an empty string
|
// Returns the slug after the $filter, the slug could be an empty string
|
||||||
|
|
|
@ -0,0 +1,339 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
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".
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
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,
|
||||||
|
|
||||||
|
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,
|
||||||
|
|
||||||
|
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 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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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
|
||||||
|
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.
|
||||||
|
|
||||||
|
{description}
|
||||||
|
Copyright (C) {year} {fullname}
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
{signature of Ty Coon}, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This 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.
|
|
@ -0,0 +1,38 @@
|
||||||
|
![Lingonberry preview.](https://raw.githubusercontent.com/acrox999/lingonberry/master/preview.png)
|
||||||
|
|
||||||
|
*[Demo here.](http://www.iamnobuna.ga/)*
|
||||||
|
|
||||||
|
# Lingonberry
|
||||||
|
Lingonberry is a clean and simple theme for bloggers, with responsive design and beautiful typography.
|
||||||
|
|
||||||
|
Lingonberry is developed by Anders Norén. Ported to Bludit by Hakim Zulkufli.
|
||||||
|
# Keep it simple, stupid
|
||||||
|
Lingonberry’s got all the features you need, and none that you don’t. It’s designed to be easy to install, use and visit.
|
||||||
|
# Beautiful design
|
||||||
|
As the name implies, Lingonberry has a charming, simple and colorful visual style that is easy on the eyes (and on the loading times).
|
||||||
|
# Responsive & retina
|
||||||
|
Responsive design and high-resolution assets means that Lingonberry will scale gracefully and look great on all devices – big and small, retina and non-retina.
|
||||||
|
|
||||||
|
Licenses
|
||||||
|
--------
|
||||||
|
Font Awesome icons license : SIL Open Font License 1.1 http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL
|
||||||
|
|
||||||
|
Fitvids.js license : WTFPL http://www.wtfpl.net/
|
||||||
|
|
||||||
|
Flexslider 2 license : GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
Lato font license : SIL Open Font License, 1.1 http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL
|
||||||
|
|
||||||
|
Raleway font license : SIL Open Font License, 1.1 http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL
|
||||||
|
|
||||||
|
-------
|
||||||
|
|
||||||
|
Lingonberry WordPress Theme, Copyright 2015 Anders Norén
|
||||||
|
|
||||||
|
Lingonberry is distributed under the terms of the GNU GPL v2
|
||||||
|
|
||||||
|
Ported to Bludit by Hakim Zulkufli (@acrox999)
|
||||||
|
|
||||||
|
-------
|
||||||
|
|
||||||
|
NOTES: Does not support sidebar plugins. To customize or add links to the bottom widget bar, modify php/sidebar.php.
|
|
@ -0,0 +1,15 @@
|
||||||
|
/* Custom for Bludit */
|
||||||
|
|
||||||
|
.post-category {
|
||||||
|
margin: 0 0.1em;
|
||||||
|
padding: 0.3em 1em;
|
||||||
|
color: #fff;
|
||||||
|
background: #FF706C;
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.comment-respond {
|
||||||
|
display: block;
|
||||||
|
}
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1000 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,105 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="js" lang="<?php echo $Site->language() ?>">
|
||||||
|
|
||||||
|
<head profile="http://gmpg.org/xfn/11">
|
||||||
|
<?php include(PATH_THEME_PHP.'head.php') ?>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if( ($Url->whereAmI()=='home') || ($Url->whereAmI()=='tag') || ($Url->whereAmI()=='blog') )
|
||||||
|
{
|
||||||
|
echo '<body class="header-image fullwidth">';
|
||||||
|
}
|
||||||
|
elseif($Url->whereAmI()=='post')
|
||||||
|
{
|
||||||
|
echo '<body class="single single-post">';
|
||||||
|
}
|
||||||
|
elseif($Url->whereAmI()=='page')
|
||||||
|
{
|
||||||
|
echo '<body class="page page-template-default">';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Plugins Site Body Begin -->
|
||||||
|
<?php Theme::plugins('siteBodyBegin') ?>
|
||||||
|
|
||||||
|
<div class="navigation" >
|
||||||
|
<div class="navigation-inner section-inner">
|
||||||
|
<ul class="blog-menu">
|
||||||
|
<?php
|
||||||
|
$parents = $pagesParents[NO_PARENT_CHAR];
|
||||||
|
foreach($parents as $Parent) {
|
||||||
|
echo '<li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="'.$Parent->permalink().'">'.$Parent->title().'</a></li> ';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div> <!-- /navigation-inner -->
|
||||||
|
</div> <!-- /navigation -->
|
||||||
|
|
||||||
|
<div class="header section">
|
||||||
|
<div class="header-inner section-inner">
|
||||||
|
|
||||||
|
<a href="<?php echo $Site->url() ?>" rel="home" class="logo"><img src="<?php echo(HTML_PATH_UPLOADS_PROFILES.'/admin.png') ?>" alt="<?php echo $Site->title() ?>"></a>
|
||||||
|
|
||||||
|
<h1 class="blog-title">
|
||||||
|
<a href="<?php echo $Site->url() ?>" rel="home"><?php echo $Site->title() ?></a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div class="nav-toggle">
|
||||||
|
<div class="bar"></div>
|
||||||
|
<div class="bar"></div>
|
||||||
|
<div class="bar"></div>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div> <!-- /header section -->
|
||||||
|
</div> <!-- /header-inner section-inner -->
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if( ($Url->whereAmI()=='home') || ($Url->whereAmI()=='tag') || ($Url->whereAmI()=='blog') )
|
||||||
|
{
|
||||||
|
include(PATH_THEME_PHP.'home.php');
|
||||||
|
}
|
||||||
|
elseif($Url->whereAmI()=='post')
|
||||||
|
{
|
||||||
|
include(PATH_THEME_PHP.'post.php');
|
||||||
|
}
|
||||||
|
elseif($Url->whereAmI()=='page')
|
||||||
|
{
|
||||||
|
include(PATH_THEME_PHP.'page.php');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<?php include(PATH_THEME_PHP.'sidebar.php') ?>
|
||||||
|
|
||||||
|
<div class="credits section">
|
||||||
|
<div class="credits-inner section-inner">
|
||||||
|
|
||||||
|
<p class="credits-left">
|
||||||
|
<span><?php echo $Site->footer() ?></span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="credits-right">
|
||||||
|
<span>Lingonberry by <a href="http://www.andersnoren.se">Anders Noren</a> — </span><span>Ported by <a href="http://www.iamnobuna.ga">Hakim Zulkufli</a> — </span><a class="tothetop">Up ↑</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div> <!-- /credits-inner -->
|
||||||
|
</div> <!-- /credits -->
|
||||||
|
|
||||||
|
<!-- Plugins Site Body End -->
|
||||||
|
<?php Theme::plugins('siteBodyEnd') ?>
|
||||||
|
|
||||||
|
<!-- Javascript -->
|
||||||
|
<?php Theme::javascript(array(
|
||||||
|
'flexslider.min.js',
|
||||||
|
'global.js'
|
||||||
|
)); ?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* jQuery FlexSlider v2.1
|
||||||
|
* http://www.woothemes.com/flexslider/
|
||||||
|
*
|
||||||
|
* Copyright 2012 WooThemes
|
||||||
|
* Free to use under the GPLv2 license.
|
||||||
|
* http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
*
|
||||||
|
* Contributing author: Tyler Smith (@mbmufffin)
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function(d){d.flexslider=function(j,l){var a=d(j),c=d.extend({},d.flexslider.defaults,l),e=c.namespace,q="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,u=q?"touchend":"click",m="vertical"===c.direction,n=c.reverse,h=0<c.itemWidth,s="fade"===c.animation,t=""!==c.asNavFor,f={};d.data(j,"flexslider",a);f={init:function(){a.animating=!1;a.currentSlide=c.startAt;a.animatingTo=a.currentSlide;a.atEnd=0===a.currentSlide||a.currentSlide===a.last;a.containerSelector=c.selector.substr(0,
|
||||||
|
c.selector.search(" "));a.slides=d(c.selector,a);a.container=d(a.containerSelector,a);a.count=a.slides.length;a.syncExists=0<d(c.sync).length;"slide"===c.animation&&(c.animation="swing");a.prop=m?"top":"marginLeft";a.args={};a.manualPause=!1;var b=a,g;if(g=!c.video)if(g=!s)if(g=c.useCSS)a:{g=document.createElement("div");var p=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],e;for(e in p)if(void 0!==g.style[p[e]]){a.pfx=p[e].replace("Perspective","").toLowerCase();
|
||||||
|
a.prop="-"+a.pfx+"-transform";g=!0;break a}g=!1}b.transitions=g;""!==c.controlsContainer&&(a.controlsContainer=0<d(c.controlsContainer).length&&d(c.controlsContainer));""!==c.manualControls&&(a.manualControls=0<d(c.manualControls).length&&d(c.manualControls));c.randomize&&(a.slides.sort(function(){return Math.round(Math.random())-0.5}),a.container.empty().append(a.slides));a.doMath();t&&f.asNav.setup();a.setup("init");c.controlNav&&f.controlNav.setup();c.directionNav&&f.directionNav.setup();c.keyboard&&
|
||||||
|
(1===d(a.containerSelector).length||c.multipleKeyboard)&&d(document).bind("keyup",function(b){b=b.keyCode;if(!a.animating&&(39===b||37===b))b=39===b?a.getTarget("next"):37===b?a.getTarget("prev"):!1,a.flexAnimate(b,c.pauseOnAction)});c.mousewheel&&a.bind("mousewheel",function(b,g){b.preventDefault();var d=0>g?a.getTarget("next"):a.getTarget("prev");a.flexAnimate(d,c.pauseOnAction)});c.pausePlay&&f.pausePlay.setup();c.slideshow&&(c.pauseOnHover&&a.hover(function(){!a.manualPlay&&!a.manualPause&&a.pause()},
|
||||||
|
function(){!a.manualPause&&!a.manualPlay&&a.play()}),0<c.initDelay?setTimeout(a.play,c.initDelay):a.play());q&&c.touch&&f.touch();(!s||s&&c.smoothHeight)&&d(window).bind("resize focus",f.resize);setTimeout(function(){c.start(a)},200)},asNav:{setup:function(){a.asNav=!0;a.animatingTo=Math.floor(a.currentSlide/a.move);a.currentItem=a.currentSlide;a.slides.removeClass(e+"active-slide").eq(a.currentItem).addClass(e+"active-slide");a.slides.click(function(b){b.preventDefault();b=d(this);var g=b.index();
|
||||||
|
!d(c.asNavFor).data("flexslider").animating&&!b.hasClass("active")&&(a.direction=a.currentItem<g?"next":"prev",a.flexAnimate(g,c.pauseOnAction,!1,!0,!0))})}},controlNav:{setup:function(){a.manualControls?f.controlNav.setupManual():f.controlNav.setupPaging()},setupPaging:function(){var b=1,g;a.controlNavScaffold=d('<ol class="'+e+"control-nav "+e+("thumbnails"===c.controlNav?"control-thumbs":"control-paging")+'"></ol>');if(1<a.pagingCount)for(var p=0;p<a.pagingCount;p++)g="thumbnails"===c.controlNav?
|
||||||
|
'<img src="'+a.slides.eq(p).attr("data-thumb")+'"/>':"<a>"+b+"</a>",a.controlNavScaffold.append("<li>"+g+"</li>"),b++;a.controlsContainer?d(a.controlsContainer).append(a.controlNavScaffold):a.append(a.controlNavScaffold);f.controlNav.set();f.controlNav.active();a.controlNavScaffold.delegate("a, img",u,function(b){b.preventDefault();b=d(this);var g=a.controlNav.index(b);b.hasClass(e+"active")||(a.direction=g>a.currentSlide?"next":"prev",a.flexAnimate(g,c.pauseOnAction))});q&&a.controlNavScaffold.delegate("a",
|
||||||
|
"click touchstart",function(a){a.preventDefault()})},setupManual:function(){a.controlNav=a.manualControls;f.controlNav.active();a.controlNav.live(u,function(b){b.preventDefault();b=d(this);var g=a.controlNav.index(b);b.hasClass(e+"active")||(g>a.currentSlide?a.direction="next":a.direction="prev",a.flexAnimate(g,c.pauseOnAction))});q&&a.controlNav.live("click touchstart",function(a){a.preventDefault()})},set:function(){a.controlNav=d("."+e+"control-nav li "+("thumbnails"===c.controlNav?"img":"a"),
|
||||||
|
a.controlsContainer?a.controlsContainer:a)},active:function(){a.controlNav.removeClass(e+"active").eq(a.animatingTo).addClass(e+"active")},update:function(b,c){1<a.pagingCount&&"add"===b?a.controlNavScaffold.append(d("<li><a>"+a.count+"</a></li>")):1===a.pagingCount?a.controlNavScaffold.find("li").remove():a.controlNav.eq(c).closest("li").remove();f.controlNav.set();1<a.pagingCount&&a.pagingCount!==a.controlNav.length?a.update(c,b):f.controlNav.active()}},directionNav:{setup:function(){var b=d('<ul class="'+
|
||||||
|
e+'direction-nav"><li><a class="'+e+'prev" href="#">'+c.prevText+'</a></li><li><a class="'+e+'next" href="#">'+c.nextText+"</a></li></ul>");a.controlsContainer?(d(a.controlsContainer).append(b),a.directionNav=d("."+e+"direction-nav li a",a.controlsContainer)):(a.append(b),a.directionNav=d("."+e+"direction-nav li a",a));f.directionNav.update();a.directionNav.bind(u,function(b){b.preventDefault();b=d(this).hasClass(e+"next")?a.getTarget("next"):a.getTarget("prev");a.flexAnimate(b,c.pauseOnAction)});
|
||||||
|
q&&a.directionNav.bind("click touchstart",function(a){a.preventDefault()})},update:function(){var b=e+"disabled";1===a.pagingCount?a.directionNav.addClass(b):c.animationLoop?a.directionNav.removeClass(b):0===a.animatingTo?a.directionNav.removeClass(b).filter("."+e+"prev").addClass(b):a.animatingTo===a.last?a.directionNav.removeClass(b).filter("."+e+"next").addClass(b):a.directionNav.removeClass(b)}},pausePlay:{setup:function(){var b=d('<div class="'+e+'pauseplay"><a></a></div>');a.controlsContainer?
|
||||||
|
(a.controlsContainer.append(b),a.pausePlay=d("."+e+"pauseplay a",a.controlsContainer)):(a.append(b),a.pausePlay=d("."+e+"pauseplay a",a));f.pausePlay.update(c.slideshow?e+"pause":e+"play");a.pausePlay.bind(u,function(b){b.preventDefault();d(this).hasClass(e+"pause")?(a.manualPause=!0,a.manualPlay=!1,a.pause()):(a.manualPause=!1,a.manualPlay=!0,a.play())});q&&a.pausePlay.bind("click touchstart",function(a){a.preventDefault()})},update:function(b){"play"===b?a.pausePlay.removeClass(e+"pause").addClass(e+
|
||||||
|
"play").text(c.playText):a.pausePlay.removeClass(e+"play").addClass(e+"pause").text(c.pauseText)}},touch:function(){function b(b){k=m?d-b.touches[0].pageY:d-b.touches[0].pageX;q=m?Math.abs(k)<Math.abs(b.touches[0].pageX-e):Math.abs(k)<Math.abs(b.touches[0].pageY-e);if(!q||500<Number(new Date)-l)b.preventDefault(),!s&&a.transitions&&(c.animationLoop||(k/=0===a.currentSlide&&0>k||a.currentSlide===a.last&&0<k?Math.abs(k)/r+2:1),a.setProps(f+k,"setTouch"))}function g(){j.removeEventListener("touchmove",
|
||||||
|
b,!1);if(a.animatingTo===a.currentSlide&&!q&&null!==k){var h=n?-k:k,m=0<h?a.getTarget("next"):a.getTarget("prev");a.canAdvance(m)&&(550>Number(new Date)-l&&50<Math.abs(h)||Math.abs(h)>r/2)?a.flexAnimate(m,c.pauseOnAction):s||a.flexAnimate(a.currentSlide,c.pauseOnAction,!0)}j.removeEventListener("touchend",g,!1);f=k=e=d=null}var d,e,f,r,k,l,q=!1;j.addEventListener("touchstart",function(k){a.animating?k.preventDefault():1===k.touches.length&&(a.pause(),r=m?a.h:a.w,l=Number(new Date),f=h&&n&&a.animatingTo===
|
||||||
|
a.last?0:h&&n?a.limit-(a.itemW+c.itemMargin)*a.move*a.animatingTo:h&&a.currentSlide===a.last?a.limit:h?(a.itemW+c.itemMargin)*a.move*a.currentSlide:n?(a.last-a.currentSlide+a.cloneOffset)*r:(a.currentSlide+a.cloneOffset)*r,d=m?k.touches[0].pageY:k.touches[0].pageX,e=m?k.touches[0].pageX:k.touches[0].pageY,j.addEventListener("touchmove",b,!1),j.addEventListener("touchend",g,!1))},!1)},resize:function(){!a.animating&&a.is(":visible")&&(h||a.doMath(),s?f.smoothHeight():h?(a.slides.width(a.computedW),
|
||||||
|
a.update(a.pagingCount),a.setProps()):m?(a.viewport.height(a.h),a.setProps(a.h,"setTotal")):(c.smoothHeight&&f.smoothHeight(),a.newSlides.width(a.computedW),a.setProps(a.computedW,"setTotal")))},smoothHeight:function(b){if(!m||s){var c=s?a:a.viewport;b?c.animate({height:a.slides.eq(a.animatingTo).height()},b):c.height(a.slides.eq(a.animatingTo).height())}},sync:function(b){var g=d(c.sync).data("flexslider"),e=a.animatingTo;switch(b){case "animate":g.flexAnimate(e,c.pauseOnAction,!1,!0);break;case "play":!g.playing&&
|
||||||
|
!g.asNav&&g.play();break;case "pause":g.pause()}}};a.flexAnimate=function(b,g,p,j,l){t&&1===a.pagingCount&&(a.direction=a.currentItem<b?"next":"prev");if(!a.animating&&(a.canAdvance(b,l)||p)&&a.is(":visible")){if(t&&j)if(p=d(c.asNavFor).data("flexslider"),a.atEnd=0===b||b===a.count-1,p.flexAnimate(b,!0,!1,!0,l),a.direction=a.currentItem<b?"next":"prev",p.direction=a.direction,Math.ceil((b+1)/a.visible)-1!==a.currentSlide&&0!==b)a.currentItem=b,a.slides.removeClass(e+"active-slide").eq(b).addClass(e+
|
||||||
|
"active-slide"),b=Math.floor(b/a.visible);else return a.currentItem=b,a.slides.removeClass(e+"active-slide").eq(b).addClass(e+"active-slide"),!1;a.animating=!0;a.animatingTo=b;c.before(a);g&&a.pause();a.syncExists&&!l&&f.sync("animate");c.controlNav&&f.controlNav.active();h||a.slides.removeClass(e+"active-slide").eq(b).addClass(e+"active-slide");a.atEnd=0===b||b===a.last;c.directionNav&&f.directionNav.update();b===a.last&&(c.end(a),c.animationLoop||a.pause());if(s)q?(a.slides.eq(a.currentSlide).css({opacity:0,
|
||||||
|
zIndex:1}),a.slides.eq(b).css({opacity:1,zIndex:2}),a.slides.unbind("webkitTransitionEnd transitionend"),a.slides.eq(a.currentSlide).bind("webkitTransitionEnd transitionend",function(){c.after(a)}),a.animating=!1,a.currentSlide=a.animatingTo):(a.slides.eq(a.currentSlide).fadeOut(c.animationSpeed,c.easing),a.slides.eq(b).fadeIn(c.animationSpeed,c.easing,a.wrapup));else{var r=m?a.slides.filter(":first").height():a.computedW;h?(b=c.itemWidth>a.w?2*c.itemMargin:c.itemMargin,b=(a.itemW+b)*a.move*a.animatingTo,
|
||||||
|
b=b>a.limit&&1!==a.visible?a.limit:b):b=0===a.currentSlide&&b===a.count-1&&c.animationLoop&&"next"!==a.direction?n?(a.count+a.cloneOffset)*r:0:a.currentSlide===a.last&&0===b&&c.animationLoop&&"prev"!==a.direction?n?0:(a.count+1)*r:n?(a.count-1-b+a.cloneOffset)*r:(b+a.cloneOffset)*r;a.setProps(b,"",c.animationSpeed);if(a.transitions){if(!c.animationLoop||!a.atEnd)a.animating=!1,a.currentSlide=a.animatingTo;a.container.unbind("webkitTransitionEnd transitionend");a.container.bind("webkitTransitionEnd transitionend",
|
||||||
|
function(){a.wrapup(r)})}else a.container.animate(a.args,c.animationSpeed,c.easing,function(){a.wrapup(r)})}c.smoothHeight&&f.smoothHeight(c.animationSpeed)}};a.wrapup=function(b){!s&&!h&&(0===a.currentSlide&&a.animatingTo===a.last&&c.animationLoop?a.setProps(b,"jumpEnd"):a.currentSlide===a.last&&(0===a.animatingTo&&c.animationLoop)&&a.setProps(b,"jumpStart"));a.animating=!1;a.currentSlide=a.animatingTo;c.after(a)};a.animateSlides=function(){a.animating||a.flexAnimate(a.getTarget("next"))};a.pause=
|
||||||
|
function(){clearInterval(a.animatedSlides);a.playing=!1;c.pausePlay&&f.pausePlay.update("play");a.syncExists&&f.sync("pause")};a.play=function(){a.animatedSlides=setInterval(a.animateSlides,c.slideshowSpeed);a.playing=!0;c.pausePlay&&f.pausePlay.update("pause");a.syncExists&&f.sync("play")};a.canAdvance=function(b,g){var d=t?a.pagingCount-1:a.last;return g?!0:t&&a.currentItem===a.count-1&&0===b&&"prev"===a.direction?!0:t&&0===a.currentItem&&b===a.pagingCount-1&&"next"!==a.direction?!1:b===a.currentSlide&&
|
||||||
|
!t?!1:c.animationLoop?!0:a.atEnd&&0===a.currentSlide&&b===d&&"next"!==a.direction?!1:a.atEnd&&a.currentSlide===d&&0===b&&"next"===a.direction?!1:!0};a.getTarget=function(b){a.direction=b;return"next"===b?a.currentSlide===a.last?0:a.currentSlide+1:0===a.currentSlide?a.last:a.currentSlide-1};a.setProps=function(b,g,d){var e,f=b?b:(a.itemW+c.itemMargin)*a.move*a.animatingTo;e=-1*function(){if(h)return"setTouch"===g?b:n&&a.animatingTo===a.last?0:n?a.limit-(a.itemW+c.itemMargin)*a.move*a.animatingTo:a.animatingTo===
|
||||||
|
a.last?a.limit:f;switch(g){case "setTotal":return n?(a.count-1-a.currentSlide+a.cloneOffset)*b:(a.currentSlide+a.cloneOffset)*b;case "setTouch":return b;case "jumpEnd":return n?b:a.count*b;case "jumpStart":return n?a.count*b:b;default:return b}}()+"px";a.transitions&&(e=m?"translate3d(0,"+e+",0)":"translate3d("+e+",0,0)",d=void 0!==d?d/1E3+"s":"0s",a.container.css("-"+a.pfx+"-transition-duration",d));a.args[a.prop]=e;(a.transitions||void 0===d)&&a.container.css(a.args)};a.setup=function(b){if(s)a.slides.css({width:"100%",
|
||||||
|
"float":"left",marginRight:"-100%",position:"relative"}),"init"===b&&(q?a.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+c.animationSpeed/1E3+"s ease",zIndex:1}).eq(a.currentSlide).css({opacity:1,zIndex:2}):a.slides.eq(a.currentSlide).fadeIn(c.animationSpeed,c.easing)),c.smoothHeight&&f.smoothHeight();else{var g,p;"init"===b&&(a.viewport=d('<div class="'+e+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(a).append(a.container),a.cloneCount=0,a.cloneOffset=
|
||||||
|
0,n&&(p=d.makeArray(a.slides).reverse(),a.slides=d(p),a.container.empty().append(a.slides)));c.animationLoop&&!h&&(a.cloneCount=2,a.cloneOffset=1,"init"!==b&&a.container.find(".clone").remove(),a.container.append(a.slides.first().clone().addClass("clone")).prepend(a.slides.last().clone().addClass("clone")));a.newSlides=d(c.selector,a);g=n?a.count-1-a.currentSlide+a.cloneOffset:a.currentSlide+a.cloneOffset;m&&!h?(a.container.height(200*(a.count+a.cloneCount)+"%").css("position","absolute").width("100%"),
|
||||||
|
setTimeout(function(){a.newSlides.css({display:"block"});a.doMath();a.viewport.height(a.h);a.setProps(g*a.h,"init")},"init"===b?100:0)):(a.container.width(200*(a.count+a.cloneCount)+"%"),a.setProps(g*a.computedW,"init"),setTimeout(function(){a.doMath();a.newSlides.css({width:a.computedW,"float":"left",display:"block"});c.smoothHeight&&f.smoothHeight()},"init"===b?100:0))}h||a.slides.removeClass(e+"active-slide").eq(a.currentSlide).addClass(e+"active-slide")};a.doMath=function(){var b=a.slides.first(),
|
||||||
|
d=c.itemMargin,e=c.minItems,f=c.maxItems;a.w=a.width();a.h=b.height();a.boxPadding=b.outerWidth()-b.width();h?(a.itemT=c.itemWidth+d,a.minW=e?e*a.itemT:a.w,a.maxW=f?f*a.itemT:a.w,a.itemW=a.minW>a.w?(a.w-d*e)/e:a.maxW<a.w?(a.w-d*f)/f:c.itemWidth>a.w?a.w:c.itemWidth,a.visible=Math.floor(a.w/(a.itemW+d)),a.move=0<c.move&&c.move<a.visible?c.move:a.visible,a.pagingCount=Math.ceil((a.count-a.visible)/a.move+1),a.last=a.pagingCount-1,a.limit=1===a.pagingCount?0:c.itemWidth>a.w?(a.itemW+2*d)*a.count-a.w-
|
||||||
|
d:(a.itemW+d)*a.count-a.w-d):(a.itemW=a.w,a.pagingCount=a.count,a.last=a.count-1);a.computedW=a.itemW-a.boxPadding};a.update=function(b,d){a.doMath();h||(b<a.currentSlide?a.currentSlide+=1:b<=a.currentSlide&&0!==b&&(a.currentSlide-=1),a.animatingTo=a.currentSlide);if(c.controlNav&&!a.manualControls)if("add"===d&&!h||a.pagingCount>a.controlNav.length)f.controlNav.update("add");else if("remove"===d&&!h||a.pagingCount<a.controlNav.length)h&&a.currentSlide>a.last&&(a.currentSlide-=1,a.animatingTo-=1),
|
||||||
|
f.controlNav.update("remove",a.last);c.directionNav&&f.directionNav.update()};a.addSlide=function(b,e){var f=d(b);a.count+=1;a.last=a.count-1;m&&n?void 0!==e?a.slides.eq(a.count-e).after(f):a.container.prepend(f):void 0!==e?a.slides.eq(e).before(f):a.container.append(f);a.update(e,"add");a.slides=d(c.selector+":not(.clone)",a);a.setup();c.added(a)};a.removeSlide=function(b){var e=isNaN(b)?a.slides.index(d(b)):b;a.count-=1;a.last=a.count-1;isNaN(b)?d(b,a.slides).remove():m&&n?a.slides.eq(a.last).remove():
|
||||||
|
a.slides.eq(b).remove();a.doMath();a.update(e,"remove");a.slides=d(c.selector+":not(.clone)",a);a.setup();c.removed(a)};f.init()};d.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7E3,animationSpeed:600,initDelay:0,randomize:!1,pauseOnAction:!0,pauseOnHover:!1,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",
|
||||||
|
keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:0,maxItems:0,move:0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){}};d.fn.flexslider=function(j){void 0===j&&(j={});if("object"===typeof j)return this.each(function(){var a=d(this),c=a.find(j.selector?j.selector:".slides > li");1===c.length?(c.fadeIn(400),
|
||||||
|
j.start&&j.start(a)):void 0==a.data("flexslider")&&new d.flexslider(this,j)});var l=d(this).data("flexslider");switch(j){case "play":l.play();break;case "pause":l.pause();break;case "next":l.flexAnimate(l.getTarget("next"),!0);break;case "prev":case "previous":l.flexAnimate(l.getTarget("prev"),!0);break;default:"number"===typeof j&&l.flexAnimate(j,!0)}}})(jQuery);
|
|
@ -0,0 +1,58 @@
|
||||||
|
jQuery(document).ready(function($) {
|
||||||
|
|
||||||
|
|
||||||
|
// toggle blog-menu
|
||||||
|
$(".nav-toggle").on("click", function(){
|
||||||
|
$(this).toggleClass("active");
|
||||||
|
$(".navigation").slideToggle(function (){
|
||||||
|
$(".navigation").css('overflow', 'visible');
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Load Flexslider
|
||||||
|
$(".flexslider").flexslider({
|
||||||
|
animation: "slide",
|
||||||
|
controlNav: false,
|
||||||
|
prevText: "Prev",
|
||||||
|
nextText: "Next",
|
||||||
|
smoothHeight: true
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Smooth scroll to the top
|
||||||
|
$('.tothetop').click(function(){
|
||||||
|
$("html, body").animate({ scrollTop: 0 }, 500);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// resize videos after container
|
||||||
|
var vidSelector = "iframe, object, video";
|
||||||
|
var resizeVideo = function(sSel) {
|
||||||
|
$( sSel ).each(function() {
|
||||||
|
var $video = $(this),
|
||||||
|
$container = $video.parent(),
|
||||||
|
iTargetWidth = $container.width();
|
||||||
|
|
||||||
|
if ( !$video.attr("data-origwidth") ) {
|
||||||
|
$video.attr("data-origwidth", $video.attr("width"));
|
||||||
|
$video.attr("data-origheight", $video.attr("height"));
|
||||||
|
}
|
||||||
|
|
||||||
|
var ratio = iTargetWidth / $video.attr("data-origwidth");
|
||||||
|
|
||||||
|
$video.css("width", iTargetWidth + "px");
|
||||||
|
$video.css("height", ( $video.attr("data-origheight") * ratio ) + "px");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
resizeVideo(vidSelector);
|
||||||
|
|
||||||
|
$(window).resize(function() {
|
||||||
|
resizeVideo(vidSelector);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,521 @@
|
||||||
|
/*!
|
||||||
|
* jQuery Migrate - v1.2.1 - 2013-05-08
|
||||||
|
* https://github.com/jquery/jquery-migrate
|
||||||
|
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
|
||||||
|
*/
|
||||||
|
(function( jQuery, window, undefined ) {
|
||||||
|
// See http://bugs.jquery.com/ticket/13335
|
||||||
|
// "use strict";
|
||||||
|
|
||||||
|
|
||||||
|
var warnedAbout = {};
|
||||||
|
|
||||||
|
// List of warnings already given; public read only
|
||||||
|
jQuery.migrateWarnings = [];
|
||||||
|
|
||||||
|
// Set to true to prevent console output; migrateWarnings still maintained
|
||||||
|
// jQuery.migrateMute = false;
|
||||||
|
|
||||||
|
// Show a message on the console so devs know we're active
|
||||||
|
if ( !jQuery.migrateMute && window.console && window.console.log ) {
|
||||||
|
window.console.log("JQMIGRATE: Logging is active");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set to false to disable traces that appear with warnings
|
||||||
|
if ( jQuery.migrateTrace === undefined ) {
|
||||||
|
jQuery.migrateTrace = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forget any warnings we've already given; public
|
||||||
|
jQuery.migrateReset = function() {
|
||||||
|
warnedAbout = {};
|
||||||
|
jQuery.migrateWarnings.length = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
function migrateWarn( msg) {
|
||||||
|
var console = window.console;
|
||||||
|
if ( !warnedAbout[ msg ] ) {
|
||||||
|
warnedAbout[ msg ] = true;
|
||||||
|
jQuery.migrateWarnings.push( msg );
|
||||||
|
if ( console && console.warn && !jQuery.migrateMute ) {
|
||||||
|
console.warn( "JQMIGRATE: " + msg );
|
||||||
|
if ( jQuery.migrateTrace && console.trace ) {
|
||||||
|
console.trace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function migrateWarnProp( obj, prop, value, msg ) {
|
||||||
|
if ( Object.defineProperty ) {
|
||||||
|
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
|
||||||
|
// allow property to be overwritten in case some other plugin wants it
|
||||||
|
try {
|
||||||
|
Object.defineProperty( obj, prop, {
|
||||||
|
configurable: true,
|
||||||
|
enumerable: true,
|
||||||
|
get: function() {
|
||||||
|
migrateWarn( msg );
|
||||||
|
return value;
|
||||||
|
},
|
||||||
|
set: function( newValue ) {
|
||||||
|
migrateWarn( msg );
|
||||||
|
value = newValue;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
} catch( err ) {
|
||||||
|
// IE8 is a dope about Object.defineProperty, can't warn there
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Non-ES5 (or broken) browser; just set the property
|
||||||
|
jQuery._definePropertyBroken = true;
|
||||||
|
obj[ prop ] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( document.compatMode === "BackCompat" ) {
|
||||||
|
// jQuery has never supported or tested Quirks Mode
|
||||||
|
migrateWarn( "jQuery is not compatible with Quirks Mode" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
|
||||||
|
oldAttr = jQuery.attr,
|
||||||
|
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
|
||||||
|
function() { return null; },
|
||||||
|
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
|
||||||
|
function() { return undefined; },
|
||||||
|
rnoType = /^(?:input|button)$/i,
|
||||||
|
rnoAttrNodeType = /^[238]$/,
|
||||||
|
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
||||||
|
ruseDefault = /^(?:checked|selected)$/i;
|
||||||
|
|
||||||
|
// jQuery.attrFn
|
||||||
|
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
|
||||||
|
|
||||||
|
jQuery.attr = function( elem, name, value, pass ) {
|
||||||
|
var lowerName = name.toLowerCase(),
|
||||||
|
nType = elem && elem.nodeType;
|
||||||
|
|
||||||
|
if ( pass ) {
|
||||||
|
// Since pass is used internally, we only warn for new jQuery
|
||||||
|
// versions where there isn't a pass arg in the formal params
|
||||||
|
if ( oldAttr.length < 4 ) {
|
||||||
|
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
|
||||||
|
}
|
||||||
|
if ( elem && !rnoAttrNodeType.test( nType ) &&
|
||||||
|
(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
|
||||||
|
return jQuery( elem )[ name ]( value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
|
||||||
|
// for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
|
||||||
|
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
|
||||||
|
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore boolHook for boolean property/attribute synchronization
|
||||||
|
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
|
||||||
|
jQuery.attrHooks[ lowerName ] = {
|
||||||
|
get: function( elem, name ) {
|
||||||
|
// Align boolean attributes with corresponding properties
|
||||||
|
// Fall back to attribute presence where some booleans are not supported
|
||||||
|
var attrNode,
|
||||||
|
property = jQuery.prop( elem, name );
|
||||||
|
return property === true || typeof property !== "boolean" &&
|
||||||
|
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
|
||||||
|
|
||||||
|
name.toLowerCase() :
|
||||||
|
undefined;
|
||||||
|
},
|
||||||
|
set: function( elem, value, name ) {
|
||||||
|
var propName;
|
||||||
|
if ( value === false ) {
|
||||||
|
// Remove boolean attributes when set to false
|
||||||
|
jQuery.removeAttr( elem, name );
|
||||||
|
} else {
|
||||||
|
// value is true since we know at this point it's type boolean and not false
|
||||||
|
// Set boolean attributes to the same name and set the DOM property
|
||||||
|
propName = jQuery.propFix[ name ] || name;
|
||||||
|
if ( propName in elem ) {
|
||||||
|
// Only set the IDL specifically if it already exists on the element
|
||||||
|
elem[ propName ] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
elem.setAttribute( name, name.toLowerCase() );
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Warn only for attributes that can remain distinct from their properties post-1.9
|
||||||
|
if ( ruseDefault.test( lowerName ) ) {
|
||||||
|
migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return oldAttr.call( jQuery, elem, name, value );
|
||||||
|
};
|
||||||
|
|
||||||
|
// attrHooks: value
|
||||||
|
jQuery.attrHooks.value = {
|
||||||
|
get: function( elem, name ) {
|
||||||
|
var nodeName = ( elem.nodeName || "" ).toLowerCase();
|
||||||
|
if ( nodeName === "button" ) {
|
||||||
|
return valueAttrGet.apply( this, arguments );
|
||||||
|
}
|
||||||
|
if ( nodeName !== "input" && nodeName !== "option" ) {
|
||||||
|
migrateWarn("jQuery.fn.attr('value') no longer gets properties");
|
||||||
|
}
|
||||||
|
return name in elem ?
|
||||||
|
elem.value :
|
||||||
|
null;
|
||||||
|
},
|
||||||
|
set: function( elem, value ) {
|
||||||
|
var nodeName = ( elem.nodeName || "" ).toLowerCase();
|
||||||
|
if ( nodeName === "button" ) {
|
||||||
|
return valueAttrSet.apply( this, arguments );
|
||||||
|
}
|
||||||
|
if ( nodeName !== "input" && nodeName !== "option" ) {
|
||||||
|
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
|
||||||
|
}
|
||||||
|
// Does not return so that setAttribute is also used
|
||||||
|
elem.value = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var matched, browser,
|
||||||
|
oldInit = jQuery.fn.init,
|
||||||
|
oldParseJSON = jQuery.parseJSON,
|
||||||
|
// Note: XSS check is done below after string is trimmed
|
||||||
|
rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
|
||||||
|
|
||||||
|
// $(html) "looks like html" rule change
|
||||||
|
jQuery.fn.init = function( selector, context, rootjQuery ) {
|
||||||
|
var match;
|
||||||
|
|
||||||
|
if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
|
||||||
|
(match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
|
||||||
|
// This is an HTML string according to the "old" rules; is it still?
|
||||||
|
if ( selector.charAt( 0 ) !== "<" ) {
|
||||||
|
migrateWarn("$(html) HTML strings must start with '<' character");
|
||||||
|
}
|
||||||
|
if ( match[ 3 ] ) {
|
||||||
|
migrateWarn("$(html) HTML text after last tag is ignored");
|
||||||
|
}
|
||||||
|
// Consistently reject any HTML-like string starting with a hash (#9521)
|
||||||
|
// Note that this may break jQuery 1.6.x code that otherwise would work.
|
||||||
|
if ( match[ 0 ].charAt( 0 ) === "#" ) {
|
||||||
|
migrateWarn("HTML string cannot start with a '#' character");
|
||||||
|
jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
|
||||||
|
}
|
||||||
|
// Now process using loose rules; let pre-1.8 play too
|
||||||
|
if ( context && context.context ) {
|
||||||
|
// jQuery object as context; parseHTML expects a DOM object
|
||||||
|
context = context.context;
|
||||||
|
}
|
||||||
|
if ( jQuery.parseHTML ) {
|
||||||
|
return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
|
||||||
|
context, rootjQuery );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return oldInit.apply( this, arguments );
|
||||||
|
};
|
||||||
|
jQuery.fn.init.prototype = jQuery.fn;
|
||||||
|
|
||||||
|
// Let $.parseJSON(falsy_value) return null
|
||||||
|
jQuery.parseJSON = function( json ) {
|
||||||
|
if ( !json && json !== null ) {
|
||||||
|
migrateWarn("jQuery.parseJSON requires a valid JSON string");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return oldParseJSON.apply( this, arguments );
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.uaMatch = function( ua ) {
|
||||||
|
ua = ua.toLowerCase();
|
||||||
|
|
||||||
|
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
|
||||||
|
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
|
||||||
|
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
|
||||||
|
/(msie) ([\w.]+)/.exec( ua ) ||
|
||||||
|
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
|
||||||
|
[];
|
||||||
|
|
||||||
|
return {
|
||||||
|
browser: match[ 1 ] || "",
|
||||||
|
version: match[ 2 ] || "0"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Don't clobber any existing jQuery.browser in case it's different
|
||||||
|
if ( !jQuery.browser ) {
|
||||||
|
matched = jQuery.uaMatch( navigator.userAgent );
|
||||||
|
browser = {};
|
||||||
|
|
||||||
|
if ( matched.browser ) {
|
||||||
|
browser[ matched.browser ] = true;
|
||||||
|
browser.version = matched.version;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chrome is Webkit, but Webkit is also Safari.
|
||||||
|
if ( browser.chrome ) {
|
||||||
|
browser.webkit = true;
|
||||||
|
} else if ( browser.webkit ) {
|
||||||
|
browser.safari = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery.browser = browser;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warn if the code tries to get jQuery.browser
|
||||||
|
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
|
||||||
|
|
||||||
|
jQuery.sub = function() {
|
||||||
|
function jQuerySub( selector, context ) {
|
||||||
|
return new jQuerySub.fn.init( selector, context );
|
||||||
|
}
|
||||||
|
jQuery.extend( true, jQuerySub, this );
|
||||||
|
jQuerySub.superclass = this;
|
||||||
|
jQuerySub.fn = jQuerySub.prototype = this();
|
||||||
|
jQuerySub.fn.constructor = jQuerySub;
|
||||||
|
jQuerySub.sub = this.sub;
|
||||||
|
jQuerySub.fn.init = function init( selector, context ) {
|
||||||
|
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
|
||||||
|
context = jQuerySub( context );
|
||||||
|
}
|
||||||
|
|
||||||
|
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
|
||||||
|
};
|
||||||
|
jQuerySub.fn.init.prototype = jQuerySub.fn;
|
||||||
|
var rootjQuerySub = jQuerySub(document);
|
||||||
|
migrateWarn( "jQuery.sub() is deprecated" );
|
||||||
|
return jQuerySub;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Ensure that $.ajax gets the new parseJSON defined in core.js
|
||||||
|
jQuery.ajaxSetup({
|
||||||
|
converters: {
|
||||||
|
"text json": jQuery.parseJSON
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var oldFnData = jQuery.fn.data;
|
||||||
|
|
||||||
|
jQuery.fn.data = function( name ) {
|
||||||
|
var ret, evt,
|
||||||
|
elem = this[0];
|
||||||
|
|
||||||
|
// Handles 1.7 which has this behavior and 1.8 which doesn't
|
||||||
|
if ( elem && name === "events" && arguments.length === 1 ) {
|
||||||
|
ret = jQuery.data( elem, name );
|
||||||
|
evt = jQuery._data( elem, name );
|
||||||
|
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
|
||||||
|
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
|
||||||
|
return evt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return oldFnData.apply( this, arguments );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var rscriptType = /\/(java|ecma)script/i,
|
||||||
|
oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
|
||||||
|
|
||||||
|
jQuery.fn.andSelf = function() {
|
||||||
|
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
|
||||||
|
return oldSelf.apply( this, arguments );
|
||||||
|
};
|
||||||
|
|
||||||
|
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
|
||||||
|
if ( !jQuery.clean ) {
|
||||||
|
jQuery.clean = function( elems, context, fragment, scripts ) {
|
||||||
|
// Set context per 1.8 logic
|
||||||
|
context = context || document;
|
||||||
|
context = !context.nodeType && context[0] || context;
|
||||||
|
context = context.ownerDocument || context;
|
||||||
|
|
||||||
|
migrateWarn("jQuery.clean() is deprecated");
|
||||||
|
|
||||||
|
var i, elem, handleScript, jsTags,
|
||||||
|
ret = [];
|
||||||
|
|
||||||
|
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
|
||||||
|
|
||||||
|
// Complex logic lifted directly from jQuery 1.8
|
||||||
|
if ( fragment ) {
|
||||||
|
// Special handling of each script element
|
||||||
|
handleScript = function( elem ) {
|
||||||
|
// Check if we consider it executable
|
||||||
|
if ( !elem.type || rscriptType.test( elem.type ) ) {
|
||||||
|
// Detach the script and store it in the scripts array (if provided) or the fragment
|
||||||
|
// Return truthy to indicate that it has been handled
|
||||||
|
return scripts ?
|
||||||
|
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
|
||||||
|
fragment.appendChild( elem );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i = 0; (elem = ret[i]) != null; i++ ) {
|
||||||
|
// Check if we're done after handling an executable script
|
||||||
|
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
|
||||||
|
// Append to fragment and handle embedded scripts
|
||||||
|
fragment.appendChild( elem );
|
||||||
|
if ( typeof elem.getElementsByTagName !== "undefined" ) {
|
||||||
|
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
|
||||||
|
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
|
||||||
|
|
||||||
|
// Splice the scripts into ret after their former ancestor and advance our index beyond them
|
||||||
|
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
|
||||||
|
i += jsTags.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventAdd = jQuery.event.add,
|
||||||
|
eventRemove = jQuery.event.remove,
|
||||||
|
eventTrigger = jQuery.event.trigger,
|
||||||
|
oldToggle = jQuery.fn.toggle,
|
||||||
|
oldLive = jQuery.fn.live,
|
||||||
|
oldDie = jQuery.fn.die,
|
||||||
|
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
|
||||||
|
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
|
||||||
|
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
|
||||||
|
hoverHack = function( events ) {
|
||||||
|
if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
|
||||||
|
return events;
|
||||||
|
}
|
||||||
|
if ( rhoverHack.test( events ) ) {
|
||||||
|
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
|
||||||
|
}
|
||||||
|
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
|
||||||
|
};
|
||||||
|
|
||||||
|
// Event props removed in 1.9, put them back if needed; no practical way to warn them
|
||||||
|
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
|
||||||
|
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
|
||||||
|
if ( jQuery.event.dispatch ) {
|
||||||
|
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Support for 'hover' pseudo-event and ajax event warnings
|
||||||
|
jQuery.event.add = function( elem, types, handler, data, selector ){
|
||||||
|
if ( elem !== document && rajaxEvent.test( types ) ) {
|
||||||
|
migrateWarn( "AJAX events should be attached to document: " + types );
|
||||||
|
}
|
||||||
|
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
|
||||||
|
};
|
||||||
|
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
|
||||||
|
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fn.error = function() {
|
||||||
|
var args = Array.prototype.slice.call( arguments, 0);
|
||||||
|
migrateWarn("jQuery.fn.error() is deprecated");
|
||||||
|
args.splice( 0, 0, "error" );
|
||||||
|
if ( arguments.length ) {
|
||||||
|
return this.bind.apply( this, args );
|
||||||
|
}
|
||||||
|
// error event should not bubble to window, although it does pre-1.7
|
||||||
|
this.triggerHandler.apply( this, args );
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fn.toggle = function( fn, fn2 ) {
|
||||||
|
|
||||||
|
// Don't mess with animation or css toggles
|
||||||
|
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
|
||||||
|
return oldToggle.apply( this, arguments );
|
||||||
|
}
|
||||||
|
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
|
||||||
|
|
||||||
|
// Save reference to arguments for access in closure
|
||||||
|
var args = arguments,
|
||||||
|
guid = fn.guid || jQuery.guid++,
|
||||||
|
i = 0,
|
||||||
|
toggler = function( event ) {
|
||||||
|
// Figure out which function to execute
|
||||||
|
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
|
||||||
|
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
|
||||||
|
|
||||||
|
// Make sure that clicks stop
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// and execute the function
|
||||||
|
return args[ lastToggle ].apply( this, arguments ) || false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// link all the functions, so any of them can unbind this click handler
|
||||||
|
toggler.guid = guid;
|
||||||
|
while ( i < args.length ) {
|
||||||
|
args[ i++ ].guid = guid;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.click( toggler );
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fn.live = function( types, data, fn ) {
|
||||||
|
migrateWarn("jQuery.fn.live() is deprecated");
|
||||||
|
if ( oldLive ) {
|
||||||
|
return oldLive.apply( this, arguments );
|
||||||
|
}
|
||||||
|
jQuery( this.context ).on( types, this.selector, data, fn );
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fn.die = function( types, fn ) {
|
||||||
|
migrateWarn("jQuery.fn.die() is deprecated");
|
||||||
|
if ( oldDie ) {
|
||||||
|
return oldDie.apply( this, arguments );
|
||||||
|
}
|
||||||
|
jQuery( this.context ).off( types, this.selector || "**", fn );
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Turn global events into document-triggered events
|
||||||
|
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
|
||||||
|
if ( !elem && !rajaxEvent.test( event ) ) {
|
||||||
|
migrateWarn( "Global events are undocumented and deprecated" );
|
||||||
|
}
|
||||||
|
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
|
||||||
|
};
|
||||||
|
jQuery.each( ajaxEvents.split("|"),
|
||||||
|
function( _, name ) {
|
||||||
|
jQuery.event.special[ name ] = {
|
||||||
|
setup: function() {
|
||||||
|
var elem = this;
|
||||||
|
|
||||||
|
// The document needs no shimming; must be !== for oldIE
|
||||||
|
if ( elem !== document ) {
|
||||||
|
jQuery.event.add( document, name + "." + jQuery.guid, function() {
|
||||||
|
jQuery.event.trigger( name, null, elem, true );
|
||||||
|
});
|
||||||
|
jQuery._data( this, name, jQuery.guid++ );
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
teardown: function() {
|
||||||
|
if ( this !== document ) {
|
||||||
|
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
})( jQuery, window );
|
|
@ -0,0 +1,17 @@
|
||||||
|
/**
|
||||||
|
* This file adds some LIVE to the Theme Customizer live preview. To leverage
|
||||||
|
* this, set your custom settings to 'postMessage' and then add your handling
|
||||||
|
* here. Your javascript should grab settings from customizer controls, and
|
||||||
|
* then make any necessary changes to the page using jQuery.
|
||||||
|
*/
|
||||||
|
( function( $ ) {
|
||||||
|
|
||||||
|
//Update site accent color in real time...
|
||||||
|
wp.customize( 'accent_color', function( value ) {
|
||||||
|
value.bind( function( newval ) {
|
||||||
|
$('.header').css('background-color', newval );
|
||||||
|
$('.post-content a').css('color', newval );
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
|
||||||
|
} )( jQuery );
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"theme-data":
|
||||||
|
{
|
||||||
|
"name": "Lingonberry",
|
||||||
|
"description": "Lingonberry WordPress Theme by Anders Norén, ported to Bludit by Hakim Zulkufli."
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"author": "Anders Norén",
|
||||||
|
"email": "anders@andersnoren.se",
|
||||||
|
"website": "http://www.andersnoren.se/",
|
||||||
|
"version": "1.0",
|
||||||
|
"releaseDate": "2016-01-28",
|
||||||
|
"license": "GPL V2",
|
||||||
|
"compatible": "1.3,1.4,1.5,1.5.2",
|
||||||
|
"notes": ""
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" >
|
||||||
|
<title><?php echo $Site->title() ?></title>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// CSS
|
||||||
|
Theme::css(array(
|
||||||
|
'style.css',
|
||||||
|
'bludit.css'
|
||||||
|
));
|
||||||
|
|
||||||
|
// Javascript
|
||||||
|
Theme::javascript(array(
|
||||||
|
'jquery-1.12.0.min.js',
|
||||||
|
'jquery-migrate-1.2.1.min.js'
|
||||||
|
));
|
||||||
|
|
||||||
|
// <meta name="keywords" content="HTML,CSS,XML,JavaScript">
|
||||||
|
if($Url->whereAmI() == 'post') {
|
||||||
|
Theme::keywords($Post->tags());
|
||||||
|
Theme::description($Post->description());
|
||||||
|
} elseif($Url->whereAmI() == 'page') {
|
||||||
|
Theme::keywords($Page->tags());
|
||||||
|
Theme::description($Page->description());
|
||||||
|
} else {
|
||||||
|
Theme::description($Site->description());
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- Custom Fonts -->
|
||||||
|
<link href="//fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Raleway:600,500,400" rel="stylesheet" type="text/css">
|
||||||
|
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="shortcut icon" href="<?php echo $Site->url() ?>favicon.png" type="image/x-icon">
|
||||||
|
|
||||||
|
<!-- Plugins in Site head -->
|
||||||
|
<?php Theme::plugins('siteHead') ?>
|
|
@ -0,0 +1,61 @@
|
||||||
|
<div class="content section-inner">
|
||||||
|
<div class="posts">
|
||||||
|
<?php foreach($posts as $Post): ?>
|
||||||
|
<div class="post format-standard">
|
||||||
|
<div class="post-bubbles">
|
||||||
|
<a href="<?php echo $Post->permalink() ?>" class="format-bubble" title="<?php echo $Post->title() ?>"></a>
|
||||||
|
</div>
|
||||||
|
<div class="content-inner">
|
||||||
|
<div class="post-header">
|
||||||
|
|
||||||
|
<?php if($Post->coverImage()) {
|
||||||
|
echo '<div class="featured-media">';
|
||||||
|
echo '<a href="'.$Post->permalink().'" rel="bookmark" title="'.$Post->title().'">';
|
||||||
|
echo '<img class="attachment-post-image wp-post-image cover-image" src="'.$Post->coverImage().'" alt="Cover Image">';
|
||||||
|
echo '<div class="media-caption-container">';
|
||||||
|
echo '<p class="media-caption">'.$Post->description().'</p>';
|
||||||
|
echo '</div>';
|
||||||
|
echo '</a>';
|
||||||
|
echo '</div> <!-- /featured-media -->';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<h2 class="post-title"><a href="<?php echo $Post->permalink() ?>" rel="bookmark" title="<?php echo $Post->title() ?>"><?php echo $Post->title() ?></a></h2>
|
||||||
|
<div class="post-meta">
|
||||||
|
|
||||||
|
<span class="post-date"><a href="<?php echo $Post->permalink() ?>" title="<?php echo $Post->date() ?>"><?php echo $Post->date() ?></a></span>
|
||||||
|
<span class="date-sep"> / </span>
|
||||||
|
<span class="post-author"><?php
|
||||||
|
if( Text::isNotEmpty($Post->user('firstName')) || Text::isNotEmpty($Post->user('lastName')) ) {
|
||||||
|
echo $Post->user('firstName').' '.$Post->user('lastName');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo $Post->user('username');
|
||||||
|
}
|
||||||
|
?></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="post-content">
|
||||||
|
<?php echo $Post->content(false) ?>
|
||||||
|
|
||||||
|
<?php if($Post->readMore()) { ?>
|
||||||
|
<a class="read-more" href="<?php echo $Post->permalink() ?>"><?php $Language->printMe('Read more') ?></a>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
|
||||||
|
<div class="post-nav archive-nav">
|
||||||
|
<?php echo Paginator::html(); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<div class="content section-inner">
|
||||||
|
<div class="posts">
|
||||||
|
<div class="post">
|
||||||
|
|
||||||
|
<!-- Plugins Post Begin -->
|
||||||
|
<?php Theme::plugins('pageBegin') ?>
|
||||||
|
|
||||||
|
<div class="content-inner comments-allowed">
|
||||||
|
<div class="post-header">
|
||||||
|
|
||||||
|
<?php if($Page->coverImage()) {
|
||||||
|
echo '<div class="featured-media">';
|
||||||
|
echo '<a href="'.$Page->permalink().'" rel="bookmark" title="'.$Page->title().'">';
|
||||||
|
echo '<img class="attachment-post-image wp-post-image cover-image" src="'.$Page->coverImage().'" alt="Cover Image">';
|
||||||
|
//echo '<div class="media-caption-container">';
|
||||||
|
//echo '<p class="media-caption"></p>';
|
||||||
|
//echo '</div>';
|
||||||
|
echo '</a>';
|
||||||
|
echo '</div> <!-- /featured-media -->';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<h2 class="post-title"><a href="<?php echo $Page->permalink() ?>" rel="bookmark" title="<?php echo $Page->title() ?>"><?php echo $Page->title() ?></a></h2>
|
||||||
|
|
||||||
|
</div> <!-- /post-header -->
|
||||||
|
|
||||||
|
<div class="post-content">
|
||||||
|
<?php echo $Page->content() ?>
|
||||||
|
</div> <!-- /post-content -->
|
||||||
|
</div> <!-- /post content-inner -->
|
||||||
|
|
||||||
|
<div class="comments">
|
||||||
|
<!-- Post plugins -->
|
||||||
|
<?php Theme::plugins('pageEnd') ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div> <!-- /post -->
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
</div> <!-- /posts -->
|
||||||
|
</div> <!-- /content section-inner -->
|
|
@ -0,0 +1,67 @@
|
||||||
|
<div class="content section-inner">
|
||||||
|
<div class="posts">
|
||||||
|
<div class="post">
|
||||||
|
|
||||||
|
<!-- Plugins Post Begin -->
|
||||||
|
<?php Theme::plugins('postBegin') ?>
|
||||||
|
|
||||||
|
<div class="content-inner comments-allowed">
|
||||||
|
<div class="post-header">
|
||||||
|
|
||||||
|
<?php if($Post->coverImage()) {
|
||||||
|
echo '<div class="featured-media">';
|
||||||
|
echo '<a href="'.$Post->permalink().'" rel="bookmark" title="'.$Post->title().'">';
|
||||||
|
echo '<img class="attachment-post-image wp-post-image cover-image" src="'.$Post->coverImage().'" alt="Cover Image">';
|
||||||
|
//echo '<div class="media-caption-container">';
|
||||||
|
//echo '<p class="media-caption"></p>';
|
||||||
|
//echo '</div>';
|
||||||
|
echo '</a>';
|
||||||
|
echo '</div> <!-- /featured-media -->';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<h2 class="post-title"><a href="<?php echo $Post->permalink() ?>" rel="bookmark" title="<?php echo $Post->title() ?>"><?php echo $Post->title() ?></a></h2>
|
||||||
|
|
||||||
|
<div class="post-meta">
|
||||||
|
|
||||||
|
<span class="post-date"><a href="<?php echo $Post->permalink() ?>" title="<?php echo $Post->date() ?>"><?php echo $Post->date() ?></a></span>
|
||||||
|
<span class="date-sep"> / </span>
|
||||||
|
<span class="post-author"><?php
|
||||||
|
if( Text::isNotEmpty($Post->user('firstName')) || Text::isNotEmpty($Post->user('lastName')) ) {
|
||||||
|
echo $Post->user('firstName').' '.$Post->user('lastName');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo $Post->user('username');
|
||||||
|
}
|
||||||
|
?></span>
|
||||||
|
|
||||||
|
</div> <!-- /post-meta -->
|
||||||
|
</div> <!-- /post-header -->
|
||||||
|
|
||||||
|
<div class="post-content">
|
||||||
|
<?php echo $Post->content() ?>
|
||||||
|
|
||||||
|
<div class="post-cat-tags">
|
||||||
|
<p class="post-tags">Tags:
|
||||||
|
<?php
|
||||||
|
$tags = $Post->tags(true);
|
||||||
|
|
||||||
|
foreach($tags as $tagKey=>$tagName) {
|
||||||
|
echo '<a class="post-category" href="'.HTML_PATH_ROOT.$Url->filters('tag').'/'.$tagKey.'">'.$tagName.'</a>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div> <!-- /post-content -->
|
||||||
|
</div> <!-- /post content-inner -->
|
||||||
|
|
||||||
|
<div class="comments">
|
||||||
|
<!-- Post plugins -->
|
||||||
|
<?php Theme::plugins('postEnd') ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div> <!-- /post -->
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
</div> <!-- /posts -->
|
||||||
|
</div> <!-- /content section-inner -->
|
|
@ -0,0 +1,71 @@
|
||||||
|
<div class="footer section">
|
||||||
|
<div class="footer-inner section-inner">
|
||||||
|
<div class="footer-a widgets">
|
||||||
|
<div class="widget widget_recent_entries">
|
||||||
|
<div class="widget-content">
|
||||||
|
<h3 class="widget-title">Recent Posts</h3>
|
||||||
|
<ul>
|
||||||
|
<?php
|
||||||
|
$posts = buildPostsForPage(0, 5, true, false);
|
||||||
|
|
||||||
|
foreach($posts as $Post) {
|
||||||
|
echo '<li><a href="'.$Post->permalink().'">'.$Post->title().'</a></li>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-b widgets">
|
||||||
|
<div class="widget widget_recent_entries">
|
||||||
|
<div class="widget-content">
|
||||||
|
<h3 class="widget-title">Tags</h3>
|
||||||
|
<ul>
|
||||||
|
<?php
|
||||||
|
global $Language;
|
||||||
|
global $dbTags;
|
||||||
|
global $Url;
|
||||||
|
|
||||||
|
$db = $dbTags->db['postsIndex'];
|
||||||
|
$filter = $Url->filters('tag');
|
||||||
|
|
||||||
|
$tagArray = array();
|
||||||
|
|
||||||
|
foreach($db as $tagKey=>$fields) {
|
||||||
|
$tagArray[] = array('tagKey'=>$tagKey, 'name'=>$fields['name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$tagArray = array_slice($tagArray, 0, 5);
|
||||||
|
|
||||||
|
usort($tagArray, function($a, $b) {
|
||||||
|
return strcmp($a['tagKey'], $b['tagKey']);
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach($tagArray as $tagKey=>$fields) {
|
||||||
|
echo '<li><a href="'.HTML_PATH_ROOT.$filter.'/'.$fields['tagKey'].'">'.$fields['name'].'</a></li>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-c widgets">
|
||||||
|
<div class="widget-content">
|
||||||
|
<h3 class="widget-title">Links</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="<?php echo $Site->url() ?>sitemap.xml">Sitemap</a></li>
|
||||||
|
<li><a href="<?php echo $Site->url() ?>rss.xml">RSS Feed</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div> <!-- /footer-inner -->
|
||||||
|
</div> <!-- /footer -->
|
After Width: | Height: | Size: 1.2 MiB |