Initial commit of Clean-Blog theme

This commit is contained in:
Don Chambers 2016-01-12 10:33:24 -06:00
parent f67ba78513
commit 6029627a5f
41 changed files with 3725 additions and 0 deletions

View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2013-2015 Iron Summit Media Strategies, LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,26 @@
# [Start Bootstrap](http://startbootstrap.com/) - [Clean Blog](http://startbootstrap.com/template-overviews/clean-blog/)
[Clean Blog](http://startbootstrap.com/template-overviews/clean-blog/) is a stylish, responsive blog theme for [Bootstrap](http://getbootstrap.com/) created by [Start Bootstrap](http://startbootstrap.com/). This theme features a blog homepage, about page, contact page, and an example post page along with a working PHP contact form.
## Getting Started
To use this theme, choose one of the following options to get started:
* Download the latest release on Start Bootstrap
* Fork this repository on GitHub
## Bugs and Issues
Have a bug or an issue with this theme? [Open a new issue](https://github.com/IronSummitMedia/startbootstrap-clean-blog/issues) here on GitHub or leave a comment on the [template overview page at Start Bootstrap](http://startbootstrap.com/template-overviews/clean-blog/).
## Creator
Start Bootstrap was created by and is maintained by **David Miller**, Managing Parter at [Iron Summit Media Strategies](http://www.ironsummitmedia.com/).
* https://twitter.com/davidmillerskt
* https://github.com/davidtmiller
Start Bootstrap is based on the [Bootstrap](http://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat).
## Copyright and License
Copyright 2013-2015 Iron Summit Media Strategies, LLC. Code released under the [Apache 2.0](https://github.com/IronSummitMedia/startbootstrap-clean-blog/blob/gh-pages/LICENSE) license.

View File

@ -0,0 +1,78 @@
<?php
// General
@define('ERROR_404', 'Fehler 404 - Die angeforderte Seite wurde nicht gefunden.');
@define('SEARCH_WHAT','Wonach soll gesucht werden?'); //used on quicksearch modal
@define('SEARCH','Suche');
@define('TOGGLE_NAV','Navigation'); //only seen by screen readers
@define('CLOSE','Schließen'); //close button on search form
@define('READ_MORE','Mehr lesen');
//Option groups and instructions
@define('THEME_HEADERS', 'Header-Bilder');
@define('THEME_SOCIAL_LINKS', 'Social-Links');
@define('THEME_PAGE_OPTIONS', 'Seiten-Optionen');
@define('THEME_NAVIGATION', 'Navigations-Optionen');
@define('THEME_README','Lies mich');
@define('THEME_EP_YES','<p>Das Plugin Erweiterte Eigenschaften für Einträge (serendipity_event_entryproperties) wird benötigt. Es ist installiert und aktiv.</p>');
@define('THEME_EP_NO','<p class="serendipity_msg_important">Das Plugin Erweiterte Eigenschaften für Einträge (serendipity_event_entryproperties) wird benötigt. Es ist entweder nicht installiert oder inaktiv. Bitte das Plugin installieren, um alle Features dieses Themes voll zu nutzen.</p>');
@define('THEME_INSTRUCTIONS','<p>Dieses Theme nutzt breite Header-Bilder für unterschiedliche Seitentypen. Standardbilder werden mit dem Theme geliefert, diese sind 1900px breit. Diese Standardbilder können unten in den Einstellungen ausgetauscht werden. Zusaätzlich zu den Standardbildern können für jeden Eintrag und jede statische Seite eigene Header-Bilder definiert werden.</p> <p>Das Design dieses Theme sieht die Nutzung eines sekundären Untertitels oder einer Verfasserzeile direkt unter dem Eintragstitel vor. Dieser Untertitel und das Eintragsbild können im Abschnitt "Erweiterte Optionen" beim Anlegen oder Bearbeiten einer Seite geändert werden. Optional kann man das Theme so einstellen, dass die ersten 70 Zeichen des Eintrags als Untertitel verwendet werden, wenn kein Untertitel angegeben wurde.</p> <p>Dieses Theme bietet keine Seitenleisten, kann jedoch optional die Seitenleisten-Plugins Kategorien und Tags in der Archiv-Seite ausgeben. Siehe "' . THEME_PAGE_OPTIONS . '" unten.</p> <p>Falls das Avatar-Plugin (serendipity_event_gravatar) verwendet wird, sollte dessen Option "Smarty Tag erzeugen" für eine optimale Darstellung auf "Ja" gesetzt werden.</p> <p>Die Option "Erweiteres Smarty" in serendipity_event_freetag sollte für eine schönere Darstellung im Eintragsfuß ebenfalls auf "Ja" gesetzt sein.</p>');
@define('THEME_ENTRY_PROPERTIES_HEADING','Eintragseigenschaften des Clean Blog-Themes');
@define('THEME_CUSTOM_FIELD_HEADING', 'Freie Felder für Einträge');
@define('THEME_CUSTOM_FIELD_DEFINITION','Diese optionalen Felder sind nur verfügbar, wenn dieses Theme (clean blog) verwendet wird. Das Ereignis-Plugin serendipity_event_entryproperties (Erweiterte Eigenschaften für Einträge) muss installiert sein, um diese Felder zu verwenden. Der Eintrags-Untertitel wird unter dem Titel des Eintrags ausgegeben und sollte eine kurze Zusammenfassung des Eintrags enthalten. Das Header-Bild eines Eintrags überschreibt das Standard-Header-Bild für Einträge.');
@define('THEME_ENTRY_SUBTITLE','Untertitel des Eintrags');
@define('THEME_ENTRY_HEADER_IMAGE','Header-Bild der Eintrags');
// Header Images
@define('DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild');
@define('DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird auf Seiten verwendet, die kein eigenes Header-Bild definieren.');
@define('ENTRY_DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild für Einträge');
@define('ENTRY_DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird für Einträge verwendet, die kein eigenes Header-Bild definieren.');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild für statische Seiten');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird für statische Seiten verwendet, die kein eigenes Header-Bild definieren.');
@define('STATICPAGE_SPECIFIC_HEADER_IMAGE','Header-Bild für statische Seiten (optional)');
@define('CONTACTFORM_HEADER_IMAGE', 'Header-Bild für das Kontaktformular');
@define('ARCHIVE_HEADER_IMAGE', 'Header-Bild für die Archivseite');
//Page Options
@define('HOME_LINK_TEXT', 'Text des Home-Links');
@define('ENTRY_DATE_FORMAT','Datumsformat für Einträge');
@define('COMMENT_TIME_FORMAT','Zeitformat für Kommentare und Trackbacks');
@define('WORDS','Textfassung');
@define('TIMESTAMP','Zeitstempel');
@define('SUBTITLE_USE_ENTRYBODY','Die ersten 70 Zeichen des Einrags als Untertitel ausgeben, wenn das Feld Untertitel leer gelassen wurde?');
@define('ENTRYBODY_DETAILED_ONLY','Eintags-Inhalt nur in der Einzelansicht eines Eintrags anzeigen');
@define('SHOW_COMMENT_LINK','Zeige Link zu den Kommentaren des Eintrags');
@define('CATEGORIES_ON_ARCHIVE', 'Kategorien auf der Archivseite anzeigen');
@define('CATEGORIES_ON_ARCHIVE_DESC', 'Das Seitenleisten-Plugin Kategorien (serendipity_plugin_categories) muss installiert und die Option "Smarty-Templating aktivieren?" aktiviert sein, damit Kategorien auf der Archiv-Seite angezeigt werden.');
@define('TAGS_ON_ARCHIVE', 'Tags auf der Archivseite anzeigen');
@define('TAGS_ON_ARCHIVE_DESC', 'Das Seitenleisten-Plugin Getaggte Artikel (serendipity_plugin_freetag) muss installiert sein und die Option "Sidebar template" muss auf "archive_freetag.tpl" gesetzt werden, damit Tags auf der Archiv-Seite angezeigt werden.');
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Autorennamen anzeigen');
@define('STATIC_SHOW_DATE_TEXT','Datum anzeigen');
//Navigation
@define('USE_CORENAV', 'Globale Navigation verwenden?');
//Social media
@define('TWITTER_URL','Twitter-URL. Icon wird nicht angezeigt, falls leer.');
@define('FACEBOOK_URL','Facebook-URL. Icon wird nicht angezeigt, falls leer.');
@define('RSS_URL','RSS feed-URL. Icon wird nicht angezeigt, falls leer.');
@define('GITHUB_URL','GitHub-URL. Icon wird nicht angezeigt, falls leer.');
@define('INSTAGRAM_URL','Instagram-URL. Icon wird nicht angezeigt, falls leer.');
@define('PINTEREST_URL','Pinterest-URL. Icon wird nicht angezeigt, falls leer.');
@define('COPYRIGHT', 'Copyright');
//time ago in words function
@define('ELAPSED_LESS_THAN_MINUTE_AGO','Vor weniger als einer Minute');
@define('ELAPSED_ONE_MINUTE_AGO','Vor einer Minute');
@define('ELAPSED_ONE_DAY_AGO','Vor einem Tag');
@define('ELAPSED_MINUTES_AGO','Vor %s Minuten');
@define('ELAPSED_HOURS_AGO','Vor %s Stunden');
@define('ELAPSED_DAYS_AGO','Vor %s Tagen');
@define('ELAPSED_MONTHS_AGO','Vor %s Monaten');
@define('ELAPSED_YEARS_AGO','Vor %s Jahren'); //not currently using this, but defining just in case
@define('ELAPSED_ABOUT_ONE_HOUR_AGO','Vor ungefähr einer Stunde'); // greater than 45 minutes, less than 90 minutes
@define('ELAPSED_ABOUT_ONE_MONTH_AGO','Vor ungefähr einem Monat'); // greater than 30 days, less than 60 days
@define('ELAPSED_ABOUT_ONE_YEAR_AGO','Vor ungefähr einem Jahr'); // greater than one year, less than 2 years
@define('ELAPSED_OVER_YEARS_AGO','Vor mehr als %s Jahren');// greater than 2 years

View File

@ -0,0 +1,32 @@
{if $categories}
<h2>{$CONST.CATEGORIES}</h2>
<ul class="plainList category-list">
{foreach from=$categories item="plugin_category" name="each_category"}
{if $smarty.foreach.each_category.first}{assign var="prevdepth" value=$plugin_category.catdepth}{/if}
{if ($plugin_category.catdepth == $prevdepth) && !$smarty.foreach.each_category.first}
</li>
{elseif $plugin_category.catdepth < $prevdepth}
{for $i=1 to $prevdepth-$plugin_category.catdepth}
</li>
</ul>
{/for}
</li>
{elseif $plugin_category.catdepth > $prevdepth}
<ul class="category-children">
{/if}
<li id="category_{$plugin_category.categoryid}" class="category_depth{$plugin_category.catdepth}">
<a class="serendipity_xml_icon" href="{$plugin_category.feedCategoryURL}" title="{$plugin_category.category_name|escape} rss"><i class="fa fa-rss"></i></a>
<a href="{$plugin_category.categoryURL}" title="{$plugin_category.category_description|escape}">{$plugin_category.category_name|escape}</a>
{if $smarty.foreach.each_category.last}
{if $plugin_category.catdepth>0}
{for $i=1 to $plugin_category.catdepth}
</li>
</ul>
{/for}
{/if}
</li>
{/if}
{assign var="prevdepth" value=$plugin_category.catdepth}
{/foreach}
</ul>
{/if}

View File

@ -0,0 +1,6 @@
<h2>{$CONST.EDITOR_TAGS}</h2>
<div class="clean-blog_freeTag">
{foreach from=$tags key="tag_name" item="plugin_tags" name="each_tag"}
<a href="{$plugin_tags.href}">{$tag_name}</a>{if !$smarty.foreach.each_tag.last}{/if}
{/foreach}
</div>

View File

@ -0,0 +1,249 @@
<br />
<script type="text/javascript">
var img_plus = '{serendipity_getFile file="img/plus.png"}';
var img_minus = '{serendipity_getFile file="img/minus.png"}';
var state = '';
{literal}
function showConfig(id) {
if (document.getElementById) {
el = document.getElementById(id);
if (el.style.display == 'none') {
document.getElementById('option' + id).src = img_minus;
el.style.display = '';
} else {
document.getElementById('option' + id).src = img_plus;
el.style.display = 'none';
}
}
}
function showConfigAll(count) {
if (document.getElementById) {
for (i = 1; i <= count; i++) {
document.getElementById('el' + i).style.display = state;
document.getElementById('optionel' + i).src = (state == '' ? img_minus : img_plus);
}
if (state == '') {
document.getElementById('optionall').src = img_minus;
state = 'none';
} else {
document.getElementById('optionall').src = img_plus;
state = '';
}
}
}
{/literal}
</script>
<div id="backend_sp_simple" class="default_staticpage">
<section class="section_basic">
<h3>{$CONST.STATICPAGE_SECTION_BASIC}</h3>
<div id="edit_headline" class="form_field">
<label class="sp_label" title="{staticpage_input item="headline" what="desc"|escape:js}">{staticpage_input item="headline" what="name"|escape:js}</label>
{staticpage_input item="headline"}
</div>
<div id="articleformat_title" class="form_field">
<label class="sp_label" title="{staticpage_input item="articleformattitle" what="desc"|escape:js}">{staticpage_input item="articleformattitle" what="name"|escape:js}</label>
{staticpage_input item="articleformattitle"}
</div>
<div class="form_area">
<label class="sp_label" title="{staticpage_input item="content" what="desc"|escape:js}">{staticpage_input item="content" what="name"|escape:js}</label><br />
{staticpage_input item="content"}
</div>
{* CUSTOM TO THIS THEME - CUSTOM STATICPAGE HEADER IMAGE *}
<div class="serendipity_customfields clearfix">
<div class="clearfix form_area media_choose" id="ep_column_staticpage_header_image">
<label for="staticpage_header_image">{$CONST.STATICPAGE_SPECIFIC_HEADER_IMAGE}</label>
<textarea data-configitem="staticpage_header_image" name="serendipity[plugin][custom][staticpage_header_image]" class="change_preview" id="propstaticpage_header_image">{$form_values.custom.staticpage_header_image}</textarea>
<button title="{$CONST.MEDIA}" name="insImage" type="button" class="customfieldMedia"><span class="icon-picture"></span><span class="visuallyhidden">{$CONST.MEDIA}</span></button>
<figure id="staticpage_header_image_preview">
<figcaption>{$CONST.PREVIEW}</figcaption>
<img alt="" src="{$form_values.custom.staticpage_header_image}">
</figure>
</div>
</div>
<div style="margin: 0px auto; text-align: center">
<input type="submit" name="serendipity[SAVECONF]" value="{$CONST.SAVE}" class="serendipityPrettyButton input_button" />
</div>
<h3>{$CONST.STATICPAGES_CUSTOM_META_SHOW}</h3>
<p id="sp_toggle_optionall"><a style="border:0; text-decoration: none;" href="#" onClick="showConfig('el1'); return false" title="{$CONST.TOGGLE_OPTION}"><img src="{serendipity_getFile file="img/plus.png"}" id="optionel1" alt="+/-" border="0">&nbsp;{$CONST.TOGGLE_ALL}</a></p>
<div id="el1">
<div class="adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="title_element" what="desc"|escape:js}">{staticpage_input item="title_element" what="name"|escape:js}</label><br />
{staticpage_input item="title_element"}
</div>
<div class="adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="meta_description" what="desc"|escape:js}">{staticpage_input item="meta_description" what="name"|escape:js}</label>
{staticpage_input item="meta_description"}
</div>
<div class="adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="meta_keywords" what="desc"|escape:js}">{staticpage_input item="meta_keywords" what="name"|escape:js}</label><br />
{staticpage_input item="meta_keywords"}
</div>
</div>
<script type="text/javascript" language="JavaScript">document.getElementById("el1").style.display = "none";</script>
<h3>{$CONST.STATICPAGES_CUSTOM_STRUCTURE_SHOW}</h3>
<p id="sp_toggle_optionall"><a style="border:0; text-decoration: none;" href="#" onClick="showConfig('el2'); return false" title="{$CONST.TOGGLE_OPTION}"><img src="{serendipity_getFile file="img/plus.png"}" id="optionel2" alt="+/-" border="0">&nbsp;{$CONST.TOGGLE_ALL}</a></p>
<div id="el2">
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="authorid" what="desc"|escape:js}">{staticpage_input item="authorid" what="name"|escape:js}</label><br />
{staticpage_input item="authorid"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="articletype" what="desc"|escape:js}">{staticpage_input item="articletype" what="name"|escape:js}</label><br />
{staticpage_input item="articletype"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="language" what="desc"|escape:js}">{staticpage_input item="language" what="name"|escape:js}</label><br />
{staticpage_input item="language"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="related_category_id" what="desc"|escape:js}">{staticpage_input item="related_category_id" what="name"|escape:js}</label><br />
{staticpage_input item="related_category_id"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="parent_id" what="desc"|escape:js}">{staticpage_input item="parent_id" what="name"|escape:js}</label><br />
{staticpage_input item="parent_id"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="show_childpages" what="desc"|escape:js}">{staticpage_input item="show_childpages" what="name"|escape:js}</label><br />
{staticpage_input item="show_childpages"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="shownavi" what="desc"|escape:js}">{staticpage_input item="shownavi" what="name"|escape:js}</label><br />
{staticpage_input item="shownavi"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="show_breadcrumb" what="desc"|escape:js}">{staticpage_input item="show_breadcrumb" what="name"|escape:js}</label>
{staticpage_input item="show_breadcrumb"}
</div>
</div>
<div class="clearfix">
{* CUSTOM TO THIS THEME - OPTION TO SHOW/HIDE AUTHOR NAME *}
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{$CONST.STATIC_SHOW_AUTHOR_TITLE}">{$CONST.STATIC_SHOW_AUTHOR_TEXT}</label><br />
<input id="author_yes" type="radio" name="serendipity[plugin][custom][show_author]" {if $form_values.custom.show_author == 'true'}checked="checked"{/if}value="true" />
<label for="author_yes">{$CONST.YES}</label>
<input id="author_no" type="radio" name="serendipity[plugin][custom][show_author]" {if $form_values.custom.show_author != 'true'}checked="checked"{/if} value="false" />
<label for="author_no">{$CONST.NO}</label>
</div>
{* CUSTOM TO THIS THEME - OPTION TO SHOW/HIDE DATE *}
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{$CONST.STATIC_SHOW_DATE_TITLE}">{$CONST.STATIC_SHOW_DATE_TEXT}</label><br />
<input id="date_yes" type="radio" name="serendipity[plugin][custom][show_date]" {if $form_values.custom.show_date == 'true'}checked="checked"{/if}value="true" />
<label for="date_yes">{$CONST.YES}</label>
<input id="date_no" type="radio" name="serendipity[plugin][custom][show_date]" {if $form_values.custom.show_date != 'true'}checked="checked"{/if}value="false" />
<label for="date_no">{$CONST.NO}</label>
</div>
</div>
<div class="clearfix">
<div class="entryoptions_customfields adv_opts_box">
<label class="sp_label" title="{staticpage_input item="pre_content" what="desc"|escape:js}">{staticpage_input item="pre_content" what="name"|escape:js}</label><br />
{staticpage_input item="pre_content"}
</div>
</div>
</div>
<script type="text/javascript" language="JavaScript">document.getElementById("el2").style.display = "none";</script>
</section>
<section class="section_meta">
<h3>{$CONST.STATICPAGE_SECTION_META}</h3>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="pagetitle" what="desc"|escape:js}">{staticpage_input item="pagetitle" what="name"|escape:js}</label><br />
{staticpage_input item="pagetitle"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="permalink" what="desc"|escape:js}">{staticpage_input item="permalink" what="name"|escape:js}</label><br />
{staticpage_input item="permalink"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="pass" what="desc"|escape:js}">{staticpage_input item="pass" what="name"|escape:js}</label><br />
{staticpage_input item="pass"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="timestamp" what="desc"|escape:js}">{staticpage_input item="timestamp" what="name"|escape:js}</label><br />
{staticpage_input item="timestamp"}
</div>
</div>
</section>
<section class="section_options">
<h3>{$CONST.STATICPAGE_SECTION_OPT}</h3>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="publishstatus" what="desc"|escape:js}">{staticpage_input item="publishstatus" what="name"|escape:js}</label><br />
{staticpage_input item="publishstatus"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="is_startpage" what="desc"|escape:js}">{staticpage_input item="is_startpage" what="name"|escape:js}</label><br />
{staticpage_input item="is_startpage"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="is_404_page" what="desc"|escape:js}">{staticpage_input item="is_404_page" what="name"|escape:js}</label><br />
{staticpage_input item="is_404_page"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="showonnavi" what="desc"|escape:js}">{staticpage_input item="showonnavi" what="name"|escape:js}</label><br />
{staticpage_input item="showonnavi"}
</div>
</div>
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="markup" what="desc"|escape:js}">{staticpage_input item="markup" what="name"|escape:js}</label><br />
{staticpage_input item="markup"}
</div>
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{staticpage_input item="articleformat" what="desc"|escape:js}">{staticpage_input item="articleformat" what="name"|escape:js}</label><br />
{staticpage_input item="articleformat"}
</div>
</div>
</section>
{* EXAMPLE FOR CUSTOM STATICPAGE PROPERTIES
<fieldset class="sect_custom">
<legend>Custom</legend>
<div class="sp_sect">
<label class="sp_label" title="Choose the main sidebar that should be shown when this staticpage is evaluated">Sidebars</label><br />
<select name="serendipity[plugin][custom][sidebars][]" multiple="multiple">
<option {if (@in_array('left', $form_values.custom.sidebars))}selected="selected"{/if} value="left">Left</option>
<option {if (@in_array('right', $form_values.custom.sidebars))}selected="selected"{/if} value="right">Right</option>
<option {if (@in_array('hidden', $form_values.custom.sidebars))}selected="selected"{/if} value="hidden">Hidden</option>
</select>
</div>
<div class="sp_sect">
<label class="sp_label" title="CSS class of the main page body that should be associated">Main CSS class</label><br />
<input type="text" name="serendipity[plugin][custom][css_class]" value="{$form_values.custom.css_class|@default:'None'}" />
</div>
</fieldset>
END OF EXAMPLE FOR CUSTOM STATICPAGE PROPERTIES *}
</div>
</div>
{staticpage_input_finish}
<br style="clear: both" />
<div style="margin: 10px auto; text-align: center">
<input type="submit" name="serendipity[SAVECONF]" value="{$CONST.SAVE}" class="serendipityPrettyButton input_button" />
</div>

View File

@ -0,0 +1,51 @@
<div id="serendipityCommentForm" class="serendipityCommentForm">
<div id="serendipity_replyform"></div>
<a id="serendipity_CommentForm"></a>
<form id="serendipity_comment" class="form-vertical" action="{$commentform_action}#feedback" method="post">
<input type="hidden" name="serendipity[entry_id]" value="{$commentform_id}">
<div class="form-group">
<label for="serendipity_commentform_name" class="control-label">{$CONST.NAME}</label>
<input id="serendipity_commentform_name" class="form-control" name="serendipity[name]" type="text" value="{$commentform_name}" placeholder="{$CONST.NAME}">
</div>
<div class="form-group">
<label for="serendipity_commentform_email" class="control-label">{$CONST.EMAIL}</label>
<input id="serendipity_commentform_email" class="form-control" name="serendipity[email]" type="email" value="{$commentform_email}" placeholder="mail@example.org">
</div>
<div class="form-group">
<label for="serendipity_commentform_url" class="control-label">{$CONST.HOMEPAGE}</label>
<input id="serendipity_commentform_url" class="form-control" name="serendipity[url]" type="url" value="{$commentform_url}" placeholder="http://...">
</div>
<div class="form-group">
<label for="serendipity_commentform_comment" class="control-label">{$CONST.COMMENT}</label>
<textarea id="serendipity_commentform_comment" class="form-control" name="serendipity[comment]" rows="10" placeholder="{$CONST.COMMENT}">{$commentform_data}</textarea>
</div>
<div class="form-group">
<label id="reply-to-hint" for="serendipity_replyTo" class="control-label">{$CONST.IN_REPLY_TO}</label>
{$commentform_replyTo}
</div>
<div class="form-group">
{serendipity_hookPlugin hook="frontend_comment" data=$commentform_entry}
</div>
{if $is_commentform_showToolbar || $is_allowSubscriptions}
<div class="form-group">
{if $is_commentform_showToolbar}
<div class="checkbox">
<label class="checkbox-inline" for="checkbox_remember"><input id="checkbox_remember" name="serendipity[remember]" type="checkbox" {$commentform_remember}>{$CONST.REMEMBER_INFO}</label>
</div>
{/if}
{if $is_allowSubscriptions}
<div class="checkbox">
<label class="checkbox-inline" for="checkbox_subscribe"><input id="checkbox_subscribe" name="serendipity[subscribe]" type="checkbox" {$commentform_subscribe}>{$CONST.SUBSCRIBE_TO_THIS_ENTRY}</label>
</div>
{/if}
</div>
{/if}
{if $is_moderate_comments}
<p class="alert alert-danger serendipity_msg_important">{$CONST.COMMENTS_WILL_BE_MODERATED}</p>
{/if}
<div class="form-group">
<input id="serendipity_submit" name="serendipity[submit]" class="btn btn-default" type="submit" value="{$CONST.SUBMIT_COMMENT}">
<input id="serendipity_preview" name="serendipity[preview]" class="btn btn-default" type="submit" value="{$CONST.PREVIEW}">
</div>
</form>
</div>

View File

@ -0,0 +1,61 @@
<ul class="comment-list">
{foreach from=$comments item=comment name="comments"}
{if $smarty.foreach.comments.first}{assign var="prevdepth" value=$comment.depth}{/if}
{if ($comment.depth == $prevdepth) && !$smarty.foreach.comments.first}
</li>
{elseif $comment.depth < $prevdepth}
{for $i=1 to $prevdepth-$comment.depth}
</li></ul>
{/for}
</li>
{elseif $comment.depth > $prevdepth}
<ul class="comment-children">
{/if}
<li id="comment-{$comment.id}" class="comment-list-item">
<a id="c{$comment.id}"></a>
<div id="div-comment-{$comment.id}" class="comment_any{cycle values=" comment_odd, comment_even"} comment_author_{$comment.author|@makeFilename} {if ($entry.author == $comment.author) && ($entry.email == $commentform_entry.email)}comment_author_self{/if}">
{if $comment.avatar}
{$comment.avatar}
{/if}
<div class="comment-list-item-body">
<h5 class="comment-author-heading">
<span class="comment-author-details">
{if $comment.url}
<a class="comment-author-url" href="{$comment.url}" title="{$comment.url|@escape}" rel="external nofollow">{$comment.author|@default:$CONST.ANONYMOUS}</a>
{else}
{$comment.author|@default:$CONST.ANONYMOUS}
{/if}
</span>&nbsp;
<time class="comment-date" datetime="{$comment.timestamp|@serendipity_html5time}">{if $template_option.comment_time_format =='time'}{$comment.timestamp|@formatTime:'%b %e. %Y'} {$CONST.AT} {$comment.timestamp|@formatTime:'%I:%M %p'}{else}{elapsed_time_words from_time=$comment.timestamp}{/if}</time>
</h5>
<div class="comment-content">
{if $comment.body == 'COMMENT_DELETED'}
{$CONST.COMMENT_IS_DELETED}
{else}
{$comment.body}
{/if}
</div>
<div class="comment-meta">
<a class="comment-source-trace btn btn-sm btn-default" href="#c{$comment.id}">#{$comment.trace}</a>
{if $entry.is_entry_owner}
<a class="comment-source-ownerlink comment-reply-link btn btn-sm btn-default" href="{$comment.link_delete}" onclick="return confirm('{$CONST.COMMENT_DELETE_CONFIRM|@sprintf:$comment.id:$comment.author}');" title="{$CONST.DELETE}"><i class="fa fa-lg fa-trash-o"></i><span class="sr-only"> {$CONST.DELETE}</span></a>
{/if}
{if $entry.allow_comments AND $comment.body != 'COMMENT_DELETED'}
<a class="comment-reply-link btn btn-sm btn-default" href="#serendipity_CommentForm" id="serendipity_reply_{$comment.id}" onclick="document.getElementById('serendipity_replyTo').value='{$comment.id}'; {$comment_onchange}" title="{$CONST.REPLY}"><i class="fa fa-lg fa-reply"></i><span class="sr-only"> {$CONST.REPLY}</span></a>
<div id="serendipity_replyform_{$comment.id}"></div>
{/if}
</div>
</div>
</div>
{if $smarty.foreach.comments.last}
{if $comment.depth>0}
{for $i=1 to $comment.depth}
</li></ul>
{/for}
{/if}
</li>
{/if}
{assign var="prevdepth" value=$comment.depth}
{/foreach}
</ul>

View File

@ -0,0 +1,310 @@
<?php
if (IN_serendipity !== true) {
die ("Don't hack!");
}
@serendipity_plugin_api::load_language(dirname(__FILE__));
$serendipity['smarty']->assign('archiveURL', serendipity_rewriteURL(PATH_ARCHIVE));
// show elapsed time in words, such as x hours ago.
function distanceOfTimeInWords($fromTime, $toTime = 0) {
$distanceInSeconds = round(abs($toTime - $fromTime));
$distanceInMinutes = round($distanceInSeconds / 60);
if ( $distanceInMinutes <= 1 ) {
if ( $distanceInSeconds < 60 ) {
return ELAPSED_LESS_THAN_MINUTE_AGO;
}
return ELAPSED_ONE_MINUTE_AGO;
}
if ( $distanceInMinutes < 45 ) {
return (sprintf(ELAPSED_MINUTES_AGO, $distanceInMinutes));
}
if ( $distanceInMinutes < 90 ) {
return ELAPSED_ABOUT_ONE_HOUR_AGO;
}
// less than 24 hours
if ( $distanceInMinutes < 1440 ) {
return (sprintf(ELAPSED_HOURS_AGO, round(floatval($distanceInMinutes) / 60.0)));
}
//less than 48hours
if ( $distanceInMinutes < 2880 ) {
return ELAPSED_ONE_DAY_AGO;
}
// less than 30 days
if ( $distanceInMinutes < 43200 ) {
return (sprintf(ELAPSED_DAYS_AGO, round(floatval($distanceInMinutes) / 1440)));
}
//less than 60 days
if ( $distanceInMinutes < 86400 ) {
return ELAPSED_ABOUT_ONE_MONTH_AGO;
}
// less than 365 days
if ( $distanceInMinutes < 525600 ) {
return (sprintf(ELAPSED_MONTHS_AGO, round(floatval($distanceInMinutes) / 43200)));
}
// less than 2 years
if ( $distanceInMinutes < 1051199 ) {
return ELAPSED_ABOUT_ONE_YEAR_AGO;
}
return (sprintf(ELAPSED_OVER_YEARS_AGO, round(floatval($distanceInMinutes) / 525600)));
}
// smarty function to use distanceOfTimeInWords function
// call from tpl as {elapsed_time_words from_time=$comment.timestamp}
$serendipity['smarty']->register_function('elapsed_time_words', 'timeAgoInWords');
function timeAgoInWords($params, &$smarty) {
return distanceOfTimeInWords($params['from_time'], time());
}
if (class_exists('serendipity_event_entryproperties')) {
$ep_msg=THEME_EP_YES;
} else {
$ep_msg=THEME_EP_NO;
}
$template_config = array(
array(
'var' => 'theme_instructions',
'type' => 'content',
'default' => $ep_msg . THEME_INSTRUCTIONS . '<p>' . CATEGORIES_ON_ARCHIVE_DESC . '</p><p>' . TAGS_ON_ARCHIVE_DESC . '<p>',
),
array(
'var' => 'default_header_image',
'name' => DEFAULT_HEADER_IMAGE,
'description' => DEFAULT_HEADER_IMAGE_DESC,
'type' => 'media',
'default' => serendipity_getTemplateFile('img/home-bg.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'entry_default_header_image',
'name' => ENTRY_DEFAULT_HEADER_IMAGE,
'description' => ENTRY_DEFAULT_HEADER_IMAGE_DESC,
'type' => 'media',
'default' => serendipity_getTemplateFile('img/post-bg.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'staticpage_header_image',
'name' => STATICPAGE_DEFAULT_HEADER_IMAGE,
'description' => STATICPAGE_DEFAULT_HEADER_IMAGE_DESC,
'type' => 'media',
'default' => serendipity_getTemplateFile('img/about-bg.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'contactform_header_image',
'name' => CONTACTFORM_HEADER_IMAGE,
'type' => 'media',
'default' => serendipity_getTemplateFile('img/contact-bg.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'archive_header_image',
'name' => ARCHIVE_HEADER_IMAGE,
'type' => 'media',
'default' => serendipity_getTemplateFile('img/archive-bg.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'date_format',
'name' => ENTRY_DATE_FORMAT . ' (http://php.net/strftime)',
'type' => 'string',
'default' => DATE_FORMAT_ENTRY,
),
array(
'var' => 'comment_time_format',
'name' => COMMENT_TIME_FORMAT,
'type' => 'select',
'default' => 'words',
'select_values' => array('words' => WORDS,
'time' => TIMESTAMP)
),
array(
'var' => 'subtitle_use_entrybody',
'name' => SUBTITLE_USE_ENTRYBODY,
'type' => 'boolean',
'default' => false,
),
array(
'var' => 'entrybody_detailed_only',
'name' => ENTRYBODY_DETAILED_ONLY,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'show_comment_link',
'name' => SHOW_COMMENT_LINK,
'type' => 'boolean',
'default' => false,
),
array(
'var' => 'categories_on_archive',
'name' => CATEGORIES_ON_ARCHIVE,
'description' => CATEGORIES_ON_ARCHIVE_DESC,
'type' => 'boolean',
'default' => false,
),
array(
'var' => 'tags_on_archive',
'name' => TAGS_ON_ARCHIVE,
'description' => TAGS_ON_ARCHIVE_DESC,
'type' => 'boolean',
'default' => false,
),
array(
'var' => 'use_corenav',
'name' => USE_CORENAV,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'home_link_text',
'name' => HOME_LINK_TEXT,
'type' => 'string',
'default' => $serendipity['blogTitle'],
),
array(
'var' => 'twitter_url',
'name' => TWITTER_URL,
'type' => 'string',
'default' => '',
),
array(
'var' => 'facebook_url',
'name' => FACEBOOK_URL,
'type' => 'string',
'default' => '',
),
array(
'var' => 'rss_url',
'name' => RSS_URL,
'type' => 'string',
'default' => $serendipity['baseURL'] . 'index.php?/feeds/index.rss2',
),
array(
'var' => 'github_url',
'name' => GITHUB_URL,
'type' => 'string',
'default' => '',
),
array(
'var' => 'instagram_url',
'name' => INSTAGRAM_URL,
'type' => 'string',
'default' => '',
),
array(
'var' => 'pinterest_url',
'name' => PINTEREST_URL,
'type' => 'string',
'default' => '',
),
array(
'var' => 'copyright',
'name' => COPYRIGHT,
'type' => 'string',
'default' => 'Copyright &copy; ' . $serendipity['blogTitle'] . ' ' . date(Y) . ' | <a href="' . $serendipity['baseURL'] . 'serendipity_admin.php">Admin</a>',
),
);
// Collapse template options into groups.
$template_global_config = array('navigation' => true);
$template_loaded_config = serendipity_loadThemeOptions($template_config, $serendipity['smarty_vars']['template_option'], true);
serendipity_loadGlobalThemeOptions($template_config, $template_loaded_config, $template_global_config);
$navlinks_collapse = array( 'use_corenav', 'amount');
for ($i = 0; $i < $template_loaded_config['amount']; $i++) {
array_push($navlinks_collapse, 'navlink' . $i . 'text' ,'navlink' . $i . 'url');
}
$template_config_groups = array(
THEME_README => array('theme_instructions'),
THEME_HEADERS => array('default_header_image', 'entry_default_header_image', 'staticpage_header_image', 'contactform_header_image', 'archive_header_image'),
THEME_PAGE_OPTIONS => array('home_link_text', 'date_format', 'comment_time_format','subtitle_use_entrybody', 'entrybody_detailed_only', 'show_comment_link', 'categories_on_archive', 'tags_on_archive', 'copyright'),
THEME_SOCIAL_LINKS => array('twitter_url', 'facebook_url', 'rss_url', 'github_url', 'instagram_url', 'pinterest_url'),
THEME_NAVIGATION => $navlinks_collapse
);
// Save custom field variables within the serendipity "Edit/Create Entry" backend.
// Any custom variables can later be queried inside the .tpl files through
// {if $entry.properties.key_value == 'true'}...{/if}
// Function to get the content of a non-boolean entry variable
function entry_option_get_value($property_key, &$eventData) {
global $serendipity;
if (isset($eventData['properties'][$property_key])) return $eventData['properties'][$property_key];
if (isset($serendipity['POST']['properties'][$property_key])) return $serendipity['POST']['properties'][$property_key];
return false;
}
// Function to store form values into the serendipity database, so that they will be retrieved later.
function entry_option_store($property_key, $property_val, &$eventData) {
global $serendipity;
$q = "DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE entryid = " . (int)$eventData['id'] . " AND property = '" . serendipity_db_escape_string($property_key) . "'";
serendipity_db_query($q);
if (!empty($property_val)) {
$q = "INSERT INTO {$serendipity['dbPrefix']}entryproperties (entryid, property, value) VALUES (" . (int)$eventData['id'] . ", '" . serendipity_db_escape_string($property_key) . "', '" . serendipity_db_escape_string($property_val) . "')";
serendipity_db_query($q);
}
}
function serendipity_plugin_api_pre_event_hook($event, &$bag, &$eventData, &$addData) {
global $serendipity;
// Check what Event is coming in, only react to those we want.
switch($event) {
// Displaying the backend entry section
case 'backend_display':
// INFO: The whole 'entryproperties' injection is easiest to store any data you want. The entryproperties plugin
// should actually not even be required to do this, as serendipity loads all properties regardless of the installed plugin
// The name of the variable
$entry_subtitle_key = 'entry_subtitle';
$entry_specific_header_image_key = 'entry_specific_header_image';
// Check what our special key is set to (checks both POST data as well as the actual data)
$is_entry_subtitle = (function_exists('serendipity_specialchars') ? serendipity_specialchars(entry_option_get_value($entry_subtitle_key, $eventData)) : htmlspecialchars(entry_option_get_value($entry_subtitle_key, $eventData), ENT_COMPAT, LANG_CHARSET));
$is_entry_specific_header_image = entry_option_get_value ($entry_specific_header_image_key, $eventData);
// This is the actual HTML output on the backend screen.
//DEBUG: echo '<pre>' . print_r($eventData, true) . '</pre>';
echo '<div class="entryproperties">';
echo ' <input type="hidden" value="true" name="serendipity[propertyform]">';
echo ' <h3>' . THEME_ENTRY_PROPERTIES_HEADING . '</h3>';
echo ' <div class="entryproperties_customfields adv_opts_box">';
echo ' <h4>' . THEME_CUSTOM_FIELD_HEADING . '</h4>';
echo ' <span>' . THEME_CUSTOM_FIELD_DEFINITION . '</span>';
echo ' <div class="serendipity_customfields clearfix">';
echo ' <div class="clearfix form_area media_choose" id="ep_column_' . $entry_subtitle_key . '">';
echo ' <label for="'. $entry_subtitle_key . '">' . THEME_ENTRY_SUBTITLE . '</label>';
echo ' <input id="' . $entry_subtitle_key . '" type="text" value="' . $is_entry_subtitle . '" name="serendipity[properties][' . $entry_subtitle_key . ']" style="width: 100%;">';
echo ' </div>';
echo ' </div>';
echo ' <div class="serendipity_customfields clearfix">';
echo ' <div class="clearfix form_area media_choose" id="ep_column_' . $entry_specific_header_image_key . '">';
echo ' <label for="' . $entry_specific_header_image_key . '">' . THEME_ENTRY_HEADER_IMAGE. '</label>';
echo ' <textarea data-configitem="' . $entry_specific_header_image_key . '" name="serendipity[properties][' . $entry_specific_header_image_key . ']" class="change_preview" id="prop' . $entry_specific_header_image_key . '">' . $is_entry_specific_header_image . '</textarea>';
echo ' <button title="' . MEDIA . '" name="insImage" type="button" class="customfieldMedia"><span class="icon-picture"></span><span class="visuallyhidden">' . MEDIA . '</span></button>';
echo ' <figure id="' . $entry_specific_header_image_key . '_preview">';
echo ' <figcaption>' . PREVIEW . '</figcaption>';
echo ' <img alt="" src="' . $is_entry_specific_header_image . '">';
echo ' </figure>';
echo ' </div>';
echo ' </div>';
echo ' </div>';
echo ' </div>';
break;
// To store the value of our entryproperties
case 'backend_publish':
case 'backend_save':
// Call the helper function with all custom variables here.
entry_option_store('entry_subtitle', $serendipity['POST']['properties']['entry_subtitle'], $eventData);
entry_option_store('entry_specific_header_image', $serendipity['POST']['properties']['entry_specific_header_image'], $eventData);
break;
}
}

View File

@ -0,0 +1,16 @@
{if $searchresult_tooShort || $searchresult_noEntries}
<div class="alert alert-info"><h4>{$CONST.SEARCH}</h4><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$content_message}</div>
{elseif $searchresult_error}
<div class="alert alert-danger"><h4>{$CONST.SEARCH}</h4><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$content_message}</div>
{elseif $searchresult_results}
<div class="alert alert-success"><h4>{$CONST.SEARCH}</h4><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$content_message}</div>
{elseif $subscribe_confirm_error}
<div class="alert alert-danger"><h4>{$CONST.ERROR}</h4><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$content_message}</div>
{elseif $subscribe_confirm_success}
<div class="alert alert-success"><h4>{$CONST.SUCCESS}</h4><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$content_message}</div>
{elseif $content_message}
<div class="alert alert-info"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$content_message}</div>
{/if}
{$ENTRIES}
{$ARCHIVES}

View File

@ -0,0 +1,165 @@
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
{foreach from=$entries item="dategroup"}
{foreach from=$dategroup.entries item="entry"}
{assign var="entry" value=$entry scope="parent"}
<article id="post_{$entry.id}" class="post{if !$is_single_entry and not $entry.is_extended and not $is_preview}-preview{/if} serendipity_entry{if $dategroup.is_sticky} sticky{/if}" role="article">
{if !$is_single_entry and not $entry.is_extended and not $is_preview}
<a href="{$entry.link}"><h2 class="post-title">{$entry.title}</h2>
{if $entry.properties.entry_subtitle}
<h3 class="post-subtitle">{$entry.properties.entry_subtitle|escape}</h3>
{elseif $template_option.subtitle_use_entrybody==true && $template_option.entrybody_detailed_only == true}
<h3 class="post-subtitle">{$entry.body|@strip_tags|@strip|@truncate:70:" ..."}</h3>
{/if}
</a>
<p class="post-meta">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} <time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time>{if $template_option.show_comment_link == true}&nbsp;&nbsp;<a href="{$entry.link}#comments" title="{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}"><button class="btn btn-sm btn-default"><span class="badge">{$entry.comments}</span>&nbsp;<i class="fa fa-lg fa-comment-o"></i><span class="sr-only">{$entry.label_comments}</span></button></a>{/if}{if $entry.is_entry_owner and not $is_preview}&nbsp;&nbsp;<a href="{$entry.link_edit}" title="{$CONST.EDIT_ENTRY}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-edit"></i><span class="sr-only">{$CONST.EDIT_ENTRY}</span></button></a>{/if}</p>
{/if}
{if $template_option.entrybody_detailed_only != true || $entry.is_extended || $is_single_entry || $is_preview}
<section id="entry">
<div class="content serendipity_entry_body clearfix">
{if $entry.categories}{foreach from=$entry.categories item="entry_category"}{if $entry_category.category_icon}<a href="{$entry_category.category_link}"><img class="serendipity_entryIcon" title="{$entry_category.category_name|@escape}{$entry_category.category_description|@emptyPrefix}" alt="{$entry_category.category_name|@escape}" src="{$entry_category.category_icon}"></a>{/if}{/foreach}{/if}
{$entry.body}
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
<a class="read_more" href="{$entry.link}#extended"><button class="btn btn-md btn-default pull-right">{$CONST.READ_MORE} <i class="fa fa-arrow-right" aria-hidden="true"></i></button></a>
{/if}
</div>
{if $entry.is_extended}
<div id="extended" class="content serendipity_extended_body">
{$entry.extended}
</div>
{/if}
{if $entry.plugin_display_dat}
{$entry.plugin_display_dat}
{/if}
{if $entry.categories or $entry.add_footer}
<footer class="entry-footer">
{if $entry.categories}
<span class="sr-only">{$CONST.CATEGORIES}: </span>
<i class="fa fa-folder-open" aria-hidden="true"></i>
{foreach from=$entry.categories item="entry_category" name="categories"}<a class="btn btn-sm btn-default" href="{$entry_category.category_link}" title="{$CONST.CATEGORY}: {$entry_category.category_name|@escape}">{$entry_category.category_name|@escape}</a>{if !$smarty.foreach.categories.last}&nbsp;{/if}{/foreach}
{/if}
{if isset($entry.freetag.extended) && $entry.freetag.extended == 1}
{if $entry.freetag.tags.tags}
<div class="clean-blog_freeTag">
<span class="sr-only">{$entry.freetag.tags.description}</span>
<i class="fa fa-tags" aria-hidden="true"></i>
{foreach from=$entry.freetag.tags.tags item="tag"}
{$tag}
{/foreach}
</div>
{if $is_single_entry or $is_preview}
<div class="cleanblog_freeTag_related">
<span>{$entry.freetag.related.description}</span>
<ul class="plainList">
{foreach from=$entry.freetag.related.entries item="link"}
<li>{$link}</li>
{/foreach}
</ul>
</div>
{/if}
{/if}
{else}
{$entry.freetag}
{/if}
{$entry.add_footer}
</footer>
{/if}
</section>
{/if}
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="{$entry.link_rdf}"
trackback:ping="{$entry.link_trackback}"
dc:title="{$entry.title_rdf|@default:$entry.title}"
dc:identifier="{$entry.rdf_ident}" />
</rdf:RDF>
-->
{if $is_single_entry and not $is_preview}
{if $CONST.DATA_UNSUBSCRIBED}
<p class="alert-info"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$CONST.DATA_UNSUBSCRIBED|@sprintf:$CONST.UNSUBSCRIBE_OK}</p>
{/if}
{if $CONST.DATA_TRACKBACK_DELETED}
<p class="alert-info"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$CONST.DATA_TRACKBACK_DELETED|@sprintf:$CONST.TRACKBACK_DELETED}</p>
{/if}
{if $CONST.DATA_TRACKBACK_APPROVED}
<p class="alert-success"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$CONST.DATA_TRACKBACK_APPROVED|@sprintf:$CONST.TRACKBACK_APPROVED}</p>
{/if}
{if $CONST.DATA_COMMENT_DELETED}
<p class="alert-info"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$CONST.DATA_COMMENT_DELETED|@sprintf:$CONST.COMMENT_DELETED}</p>
{/if}
{if $CONST.DATA_COMMENT_APPROVED}
<p class="alert-success"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$CONST.DATA_COMMENT_APPROVED|@sprintf:$CONST.COMMENT_APPROVED}</p>
{/if}
<a id="feedback"></a>
{if $entry.trackbacks != 0}
<section id="trackbacks" class="serendipity_comments serendipity_section_trackbacks">
<h3>{if $entry.trackbacks == 0}{$CONST.NO_TRACKBACKS}{else}{$entry.trackbacks} {$entry.label_trackbacks}{/if}</h3>
<p id="trackback_url"><small><a rel="nofollow" href="{$entry.link_trackback}" title="{$CONST.TRACKBACK_SPECIFIC_ON_CLICK|@escape}">{$CONST.TRACKBACK_SPECIFIC}</a></small></p>
{serendipity_printTrackbacks entry=$entry.id}
</section>
{/if}
<section id="comments" class="serendipity_comments serendipity_section_comments">
<h3>{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}</h3>
{if $entry.comments != 0}
<p class="manage_comments">
{if $entry.viewmode eq $CONST.VIEWMODE_LINEAR}
<button class="btn btn-sm btn-default disabled">{$CONST.COMMENTS_VIEWMODE_LINEAR}</button>
<a class="btn btn-sm btn-default" href="{$entry.link_viewmode_threaded}#comments" rel="nofollow" title="{$CONST.DISPLAY_COMMENTS_AS} {$CONST.COMMENTS_VIEWMODE_THREADED}">{$CONST.COMMENTS_VIEWMODE_THREADED}</a>
{else}
<a class="btn btn-sm btn-default" rel="nofollow" href="{$entry.link_viewmode_linear}#comments" title="{$CONST.DISPLAY_COMMENTS_AS} {$CONST.COMMENTS_VIEWMODE_LINEAR}">{$CONST.COMMENTS_VIEWMODE_LINEAR}</a>
<button class="btn btn-sm btn-default disabled">{$CONST.COMMENTS_VIEWMODE_THREADED}</button>
{/if}
</p>
{/if}
{serendipity_printComments entry=$entry.id mode=$entry.viewmode}
{if $entry.is_entry_owner}
<p class="manage_comments">
<small>
{if $entry.allow_comments}
<a href="{$entry.link_deny_comments}"><button class="btn btn-sm btn-default">{$CONST.COMMENTS_DISABLE}</button></a>
{else}
<a href="{$entry.link_allow_comments}"><button class="btn btn-sm btn-default">{$CONST.COMMENTS_ENABLE}</button></a>
{/if}
</small>
</p>
{/if}
</section>
{foreach from=$comments_messagestack item="message"}
<p class="alert alert-danger alert-error"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$message}</p>
{/foreach}
{if $is_comment_added}
<p class="alert alert-success"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$CONST.COMMENT_ADDED}</p>
{elseif $is_comment_moderate}
<p class="alert alert-info"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$CONST.COMMENT_ADDED}: {$CONST.THIS_COMMENT_NEEDS_REVIEW}</p>
{elseif not $entry.allow_comments}
<p class="alert alert-danger alert-error"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$CONST.COMMENTS_CLOSED}</p>
{else}
<section id="respond" class="serendipity_section_commentform">
<h3>{$CONST.ADD_COMMENT}</h3>
{$COMMENTFORM}
</section>
{/if}
{/if}
{$entry.backend_preview}
</article>
{if !$is_single_entry and not $entry.is_extended}<hr>{/if}
{/foreach}
{foreachelse}
{if not $plugin_clean_page}
<p class="alert alert-info"><span class="fa-stack"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-info fa-stack-1x"></i></span> {$CONST.NO_ENTRIES_TO_PRINT}</p>
{/if}
{/foreach}
{if $footer_info or $footer_prev_page or $footer_next_page}
{if $footer_info}
<p class="summary serendipity_center">{$footer_info}</p>
{/if}
<nav role="navigation">
<ul class="pager">
{if $footer_prev_page}<li class="previous"><a href="{$footer_prev_page}"><i class="fa fa-arrow-left" aria-hidden="true"></i> {$CONST.PREVIOUS_PAGE}</a></li>{/if}
{if $footer_next_page}<li class="next"><a href="{$footer_next_page}">{$CONST.NEXT_PAGE} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></li>{/if}
</ul>
</nav>
{/if}
{serendipity_hookPlugin hook="entries_footer"}

View File

@ -0,0 +1,51 @@
{serendipity_hookPlugin hook="entries_header"}
<article class="archive">
{if $template_option.categories_on_archive || $template_option.tags_on_archive}
<div class="row">
{if $template_option.categories_on_archive}
<section class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
{serendipity_showPlugin class="serendipity_plugin_categories" template="archive_categories.tpl"}
</section>
{/if}
{if $template_option.tags_on_archive}
<section class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
{serendipity_showPlugin class="serendipity_plugin_freetag" template="archive_freetag.tpl"}
</section>
{/if}
</div>
{/if}
<h2>{if $category}{$category_info.category_name} - {/if}{$CONST.ARCHIVES}</h2>
{foreach from=$archives item="archive"}
<section class="archives_year">
<div class="container-fluid">
<div class="row archive-year">
<h3>{$archive.year}</h3>
{foreach from=$archive.months item="month"}
<div class="col-md-3 col-sm-4 col-xs-6">
{if $template_option.entrybody_detailed_only==true}
{if $month.entry_count}
<a class="btn btn-default archive-button" href="{$month.link}" title="{$CONST.VIEW_FULL}">{$month.date|@formatTime:"%b"}&nbsp;<span class="badge">{$month.entry_count}</span></a>
{else}
<button type="button" class="btn btn-default disabled archive-button"><span class="text-muted">{$month.date|@formatTime:"%b"}&nbsp;</span></button>
{/if}
{else}
<div class="btn-group archive-button">
{if $month.entry_count}
<button type="button" class="btn btn-default dropdown-toggle archive-button" data-toggle="dropdown" aria-expanded="false">{$month.date|@formatTime:"%b"}&nbsp;<span class="badge">{$month.entry_count}</span>&nbsp;&nbsp;<span class="caret"></span></button>
<ul class="dropdown-menu" role="menu">
<li><a href="{$month.link}" title="{$CONST.VIEW_FULL|capitalize}"><i class="fa fa-newspaper-o" aria-hidden="true"></i>{$CONST.VIEW_FULL|capitalize}</a></li>
<li><a href="{$month.link_summary}" title="{$CONST.VIEW_TOPICS|capitalize}"><i class="fa fa-list" aria-hidden="true"></i>{$CONST.VIEW_TOPICS|capitalize}</a></li>
</ul>
{else}
<button type="button" class="btn btn-default disabled dropdown-toggle archive-button" data-toggle="dropdown" aria-expanded="false">{$month.date|@formatTime:"%b"}</button>
{/if}
</div>
{/if}
</div>
{/foreach}
</div>
</div>
</section>
{/foreach}
</article>
{serendipity_hookPlugin hook="entries_footer"}

View File

@ -0,0 +1,21 @@
{serendipity_hookPlugin hook="entries_header"}
{counter start=0 assign='entry_count'}
{foreach from=$entries item="countme"}
{foreach from=$countme.entries item="entry"}
{counter assign='entry_count'}
{/foreach}
{/foreach}
<article class="archive-summary">
<h2>{if $category}{$category_info.category_name} - {/if}{$entry_count} {$CONST.TOPICS_OF} {$dateRange.0|@formatTime:"%B, %Y"}</h2>
<ul class="archives_summary plainList">
{foreach from=$entries item="sentries"}
{foreach from=$sentries.entries item="entry"}
<li><h3><a href="{$entry.link}">{$entry.title}</a></h3>
<p class="post-meta">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} <time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time></p>
</li>
{/foreach}
{/foreach}
</ul>
</article>
{serendipity_hookPlugin hook="entries_footer"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -0,0 +1,234 @@
{if $is_embedded != true}
<!DOCTYPE html>
<html lang="{$lang}">
<head>
<meta charset="{$head_charset}">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Serendipity v.{$serendipityVersion}">
<title>{$head_title|default:$blogTitle}{if $head_subtitle} | {$head_subtitle}{/if}</title>
{* CANONICAL *}
{if ($view == "entry" || $view == "start" || $view == "feed" || $view == "plugin" || $staticpage_pagetitle != "" || $robots_index == 'index')}
<meta name="robots" content="index,follow">
{else}
<meta name="robots" content="noindex,follow">
{/if}
{if ($view == "entry")}
<link rel="canonical" href="{$entry.rdf_ident}">
{/if}
{if ($view == "start")}
<link rel="canonical" href="{$serendipityBaseURL}">
{/if}
{* BOOTSTRAP CORE CSS *}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
{* S9Y CSS *}
<link rel="stylesheet" href="{$head_link_stylesheet}">
<link rel="alternate" type="application/rss+xml" title="{$blogTitle} RSS feed" href="{$serendipityBaseURL}{$serendipityRewritePrefix}feeds/index.rss2">
<link rel="alternate" type="application/x.atom+xml" title="{$blogTitle} Atom feed" href="{$serendipityBaseURL}{$serendipityRewritePrefix}feeds/atom.xml">
{if $entry_id}
<link rel="pingback" href="{$serendipityBaseURL}comment.php?type=pingback&amp;entry_id={$entry_id}">
{/if}
{* CUSTOM FONTS *}
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,800|Lora:400,400italic' rel='stylesheet' type='text/css'>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
{* HEADER IMAGE *}
{if $view=="entry"}
{if $entry.properties.entry_specific_header_image}
<style type="text/css">.intro-header {ldelim}background-image: url('{$entry.properties.entry_specific_header_image}');{rdelim}</style>
{else}
<style type="text/css">.intro-header {ldelim}background-image: url('{if $template_option.entry_default_header_image}{$template_option.entry_default_header_image}{else}{serendipity_getFile file="img/post-bg.jpg"}{/if}');{rdelim}</style>
{/if}
{elseif $staticpage_pagetitle && !$plugin_contactform_name}
{if $staticpage_custom.staticpage_header_image}
<style type="text/css">.intro-header {ldelim}background-image: url('{$staticpage_custom.staticpage_header_image}');{rdelim}</style>
{else}
<style type="text/css">.intro-header {ldelim}background-image: url('{if $template_option.staticpage_header_image}{$template_option.staticpage_header_image}{else}{serendipity_getFile file="img/about-bg.jpg"}{/if}');{rdelim}</style>
{/if}
{elseif $plugin_contactform_name}
<style type="text/css">.intro-header {ldelim}background-image: url('{if $template_option.contactform_header_image}{$template_option.contactform_header_image}{else}{serendipity_getFile file="img/contact-bg.jpg"}{/if}');{rdelim}</style>
{elseif $view=="archive"}
<style type="text/css">.intro-header {ldelim}background-image: url('{if $template_option.archive_header_image}{$template_option.archive_header_image}{else}{serendipity_getFile file="img/archive-bg.jpg"}{/if}');{rdelim}</style>
{else}
<style type="text/css">.intro-header {ldelim}background-image: url('{if $template_option.default_header_image}{$template_option.default_header_image}{else}{serendipity_getFile file="img/home-bg.jpg"}{/if}');{rdelim}</style>
{/if}
{serendipity_hookPlugin hook="frontend_header"}
<script src="{$head_link_script}"></script>
</head>
<body>
{else}
{serendipity_hookPlugin hook="frontend_header"}
{/if}
{if $is_raw_mode != true}
{if $template_option.use_corenav}
<a class="sr-only sr-only-focusable" href="#maincontent"><span lang="en">Skip to main content</span></a>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-custom navbar-fixed-top" role="navigation">
<div class="container-fluid">
{* Brand and toggle get grouped for better mobile display *}
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">{$CONST.TOGGLE_NAV}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$template_option.home_link_text}</a>
<a class="navbar-brand" href="#basicModal" data-toggle="modal" data-target="#basicModal" title="{$CONST.SEARCH}"><i class="fa fa-search" aria-hidden="true"></i></a>
<a class="navbar-brand" href="{$archiveURL}" title="{$CONST.ARCHIVES}"><i class="fa fa-calendar" aria-hidden="true"></i></a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">{foreach from=$navlinks item="navlink" name="sitenav"}<li><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>{/foreach}</ul>
</div>
</div>
</nav>
{/if}
<div class="modal fade" id="basicModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" title="{$CONST.CLOSE}" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">{$CONST.SEARCH_WHAT}</h4>
</div>
<div class="modal-body">
<form id="searchform" action="{$serendipityHTTPPath}{$serendipityIndexFile}" method="get">
<div>
<input type="hidden" name="serendipity[action]" value="search">
<label for="serendipityQuickSearchTermField" class="sr-only">{$CONST.QUICKSEARCH}</label>
<input id="serendipityQuickSearchTermField" name="serendipity[searchTerm]" type="search" value="" placeholder="{$CONST.SEARCH} ...">
</div>
<div class="modal-footer">
<input class="btn btn-primary" id="gobutton" name="serendipity[searchButton]" type="submit" value="{$CONST.GO}">
<button type="button" class="btn btn-default" data-dismiss="modal">{$CONST.CLOSE}</button>
</div>
</form>
{serendipity_hookPlugin hook="quicksearch_plugin" hookAll="true"}
</div>
</div>
</div>
</div>
<header class="intro-header" role="banner">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="{if $view=='entry'}post-heading{else}site-heading{/if}">
<h1>{$head_title|@default:$blogTitle|truncate:80:" ..."}</h1>
{if $view != 'entry'}
<hr class="small">
{if $head_subtitle}<span class="subheading">{$head_subtitle|@default:$blogDescription}</span>{else}{$blogDescription}{/if}
{else}
{if $entry.properties.entry_subtitle}<h2 class="subheading">{$entry.properties.entry_subtitle|escape}</h2>{/if}
<p class="meta">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} <time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time>{if $template_option.show_comment_link == true}&nbsp;&nbsp;<a href="{$entry.link}#comments" title="{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}"><button class="btn btn-sm btn-default"><span class="badge">{$entry.comments}</span>&nbsp;<i class="fa fa-lg fa-comment-o"></i><span class="sr-only">{$entry.label_comments}</span></button></a>{/if}{if $entry.is_entry_owner and not $is_preview}&nbsp;&nbsp;<a href="{$entry.link_edit}" title="{$CONST.EDIT_ENTRY}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-edit"></i><span class="sr-only">{$CONST.EDIT_ENTRY}</span></button></a>{/if}</p>
{/if}
</div>
</div>
</div>
</div>
</header>
{* MAIN CONTENT *}
<main id="maincontent" class="container" role="main">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
{if $view=='404'}
<p class="alert alert-danger alert-error"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$CONST.ERROR_404}</p>
<nav role="navigation">
<ul class="pager">
<li class="previous"><a href="{$serendipityBaseURL}">{$CONST.HOMEPAGE} - {$blogTitle}</a></li>
</ul>
</nav>
{else}
{$CONTENT}
{/if}
</div>
</div>
</main>
<hr>
{* FOOTER *}
<footer class="page-footer" role="contentinfo">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<ul class="list-inline text-center">
{if $template_option.twitter_url}
<li>
<a href="{$template_option.twitter_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
{if $template_option.facebook_url}
<li>
<a href="{$template_option.facebook_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
{if $template_option.github_url}
<li>
<a href="{$template_option.github_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
{if $template_option.instagram_url}
<li>
<a href="{$template_option.instagram_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-camera fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
{if $template_option.pinterest_url}
<li>
<a href="{$template_option.pinterest_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-pinterest-p fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
{if $template_option.rss_url}
<li>
<a href="{$template_option.rss_url}">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-rss fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
{/if}
</ul>
{if $template_option.copyright}<p class="copyright text-muted">{$template_option.copyright}</p>{/if}
</div>
</div>
</div>
</footer>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src={serendipity_getFile file="js/clean-blog.min.js"}></script>
{/if}
{$raw_data}
{serendipity_hookPlugin hook="frontend_footer"}
{if $is_embedded != true}
</body>
</html>
{/if}

View File

@ -0,0 +1,5 @@
Name: Clean Blog
Author: s9y theme by Don Chambers. Original bootstrap theme by Iron Summit Media Strategies, LLC.
Date: 2015-06-18
Require Serendipity: 2.0
Backend: No

View File

@ -0,0 +1,121 @@
/*!
* Clean Blog v1.0.0 (http://startbootstrap.com)
* Copyright 2014 Start Bootstrap
* Licensed under Apache 2.0 (https://github.com/IronSummitMedia/startbootstrap/blob/gh-pages/LICENSE)
*/
// Navigation Scripts to Show Header on Scroll-Up
jQuery(document).ready(function($) {
var MQL = 1170;
//primary navigation slide-in effect
if ($(window).width() > MQL) {
var headerHeight = $('.navbar-custom').height();
$(window).on('scroll', {
previousTop: 0
},
function() {
var currentTop = $(window).scrollTop();
//check if user is scrolling up
if (currentTop < this.previousTop) {
//if scrolling up...
if (currentTop > 0 && $('.navbar-custom').hasClass('is-fixed')) {
$('.navbar-custom').addClass('is-visible');
} else {
$('.navbar-custom').removeClass('is-visible is-fixed');
}
} else {
//if scrolling down...
$('.navbar-custom').removeClass('is-visible');
if (currentTop > headerHeight && !$('.navbar-custom').hasClass('is-fixed')) $('.navbar-custom').addClass('is-fixed');
}
this.previousTop = currentTop;
});
}
});
/*global jQuery */
/*jshint browser:true */
/*!
* FitVids 1.1
*
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
*
*/
;(function( $ ){
'use strict';
$.fn.fitVids = function( options ) {
var settings = {
customSelector: null,
ignore: null
};
if(!document.getElementById('fit-vids-style')) {
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
var head = document.head || document.getElementsByTagName('head')[0];
var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
var div = document.createElement("div");
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
head.appendChild(div.childNodes[1]);
}
if ( options ) {
$.extend( settings, options );
}
return this.each(function(){
var selectors = [
'iframe[src*="player.vimeo.com"]',
'iframe[src*="youtube.com"]',
'iframe[src*="youtube-nocookie.com"]',
'iframe[src*="kickstarter.com"][src*="video.html"]',
'object',
'embed'
];
if (settings.customSelector) {
selectors.push(settings.customSelector);
}
var ignoreList = '.fitvidsignore';
if(settings.ignore) {
ignoreList = ignoreList + ', ' + settings.ignore;
}
var $allVideos = $(this).find(selectors.join(','));
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
$allVideos.each(function(count){
var $this = $(this);
if($this.parents(ignoreList).length > 0) {
return; // Disable FitVids on this video.
}
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
{
$this.attr('height', 9);
$this.attr('width', 16);
}
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
aspectRatio = height / width;
if(!$this.attr('id')){
var videoID = 'fitvid' + count;
$this.attr('id', videoID);
}
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
$this.removeAttr('height').removeAttr('width');
});
});
};
// Works with either jQuery or Zepto
})( window.jQuery || window.Zepto );
jQuery(document).ready(function(){
jQuery('.content').fitVids();
});

View File

@ -0,0 +1 @@
jQuery(document).ready(function(t){var e=1170;if(t(window).width()>e){var i=t(".navbar-custom").height();t(window).on("scroll",{previousTop:0},function(){var e=t(window).scrollTop();e<this.previousTop?e>0&&t(".navbar-custom").hasClass("is-fixed")?t(".navbar-custom").addClass("is-visible"):t(".navbar-custom").removeClass("is-visible is-fixed"):(t(".navbar-custom").removeClass("is-visible"),e>i&&!t(".navbar-custom").hasClass("is-fixed")&&t(".navbar-custom").addClass("is-fixed")),this.previousTop=e})}}),function(t){"use strict";t.fn.fitVids=function(e){var i={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var r=document.head||document.getElementsByTagName("head")[0],a=".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}",o=document.createElement("div");o.innerHTML='<p>x</p><style id="fit-vids-style">'+a+"</style>",r.appendChild(o.childNodes[1])}return e&&t.extend(i,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];i.customSelector&&e.push(i.customSelector);var r=".fitvidsignore";i.ignore&&(r=r+", "+i.ignore);var a=t(this).find(e.join(","));a=a.not("object object"),a=a.not(r),a.each(function(e){var i=t(this);if(!(i.parents(r).length>0||"embed"===this.tagName.toLowerCase()&&i.parent("object").length||i.parent(".fluid-width-video-wrapper").length)){i.css("height")||i.css("width")||!isNaN(i.attr("height"))&&!isNaN(i.attr("width"))||(i.attr("height",9),i.attr("width",16));var a="object"===this.tagName.toLowerCase()||i.attr("height")&&!isNaN(parseInt(i.attr("height"),10))?parseInt(i.attr("height"),10):i.height(),o=isNaN(parseInt(i.attr("width"),10))?i.width():parseInt(i.attr("width"),10),s=a/o;if(!i.attr("id")){var d="fitvid"+e;i.attr("id",d)}i.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*s+"%"),i.removeAttr("height").removeAttr("width")}})})}}(window.jQuery||window.Zepto),jQuery(document).ready(function(){jQuery(".content").fitVids()});

View File

@ -0,0 +1,78 @@
<?php
// General
@define('ERROR_404', 'Fehler 404 - Die angeforderte Seite wurde nicht gefunden.');
@define('SEARCH_WHAT','Wonach soll gesucht werden?'); //used on quicksearch modal
@define('SEARCH','Suche');
@define('TOGGLE_NAV','Navigation'); //only seen by screen readers
@define('CLOSE','Schließen'); //close button on search form
@define('READ_MORE','Mehr lesen');
//Option groups and instructions
@define('THEME_HEADERS', 'Header-Bilder');
@define('THEME_SOCIAL_LINKS', 'Social-Links');
@define('THEME_PAGE_OPTIONS', 'Seiten-Optionen');
@define('THEME_NAVIGATION', 'Navigations-Optionen');
@define('THEME_README','Lies mich');
@define('THEME_EP_YES','<p>Das Plugin Erweiterte Eigenschaften für Einträge (serendipity_event_entryproperties) wird benötigt. Es ist installiert und aktiv.</p>');
@define('THEME_EP_NO','<p class="serendipity_msg_important">Das Plugin Erweiterte Eigenschaften für Einträge (serendipity_event_entryproperties) wird benötigt. Es ist entweder nicht installiert oder inaktiv. Bitte das Plugin installieren, um alle Features dieses Themes voll zu nutzen.</p>');
@define('THEME_INSTRUCTIONS','<p>Dieses Theme nutzt breite Header-Bilder für unterschiedliche Seitentypen. Standardbilder werden mit dem Theme geliefert, diese sind 1900px breit. Diese Standardbilder können unten in den Einstellungen ausgetauscht werden. Zusaätzlich zu den Standardbildern können für jeden Eintrag und jede statische Seite eigene Header-Bilder definiert werden.</p> <p>Das Design dieses Theme sieht die Nutzung eines sekundären Untertitels oder einer Verfasserzeile direkt unter dem Eintragstitel vor. Dieser Untertitel und das Eintragsbild können im Abschnitt "Erweiterte Optionen" beim Anlegen oder Bearbeiten einer Seite geändert werden. Optional kann man das Theme so einstellen, dass die ersten 70 Zeichen des Eintrags als Untertitel verwendet werden, wenn kein Untertitel angegeben wurde.</p> <p>Dieses Theme bietet keine Seitenleisten, kann jedoch optional die Seitenleisten-Plugins Kategorien und Tags in der Archiv-Seite ausgeben. Siehe "' . THEME_PAGE_OPTIONS . '" unten.</p> <p>Falls das Avatar-Plugin (serendipity_event_gravatar) verwendet wird, sollte dessen Option "Smarty Tag erzeugen" für eine optimale Darstellung auf "Ja" gesetzt werden.</p> <p>Die Option "Erweiteres Smarty" in serendipity_event_freetag sollte für eine schönere Darstellung im Eintragsfuß ebenfalls auf "Ja" gesetzt sein.</p>');
@define('THEME_ENTRY_PROPERTIES_HEADING','Eintragseigenschaften des Clean Blog-Themes');
@define('THEME_CUSTOM_FIELD_HEADING', 'Freie Felder für Einträge');
@define('THEME_CUSTOM_FIELD_DEFINITION','Diese optionalen Felder sind nur verfügbar, wenn dieses Theme (clean blog) verwendet wird. Das Ereignis-Plugin serendipity_event_entryproperties (Erweiterte Eigenschaften für Einträge) muss installiert sein, um diese Felder zu verwenden. Der Eintrags-Untertitel wird unter dem Titel des Eintrags ausgegeben und sollte eine kurze Zusammenfassung des Eintrags enthalten. Das Header-Bild eines Eintrags überschreibt das Standard-Header-Bild für Einträge.');
@define('THEME_ENTRY_SUBTITLE','Untertitel des Eintrags');
@define('THEME_ENTRY_HEADER_IMAGE','Header-Bild der Eintrags');
// Header Images
@define('DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild');
@define('DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird auf Seiten verwendet, die kein eigenes Header-Bild definieren.');
@define('ENTRY_DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild für Einträge');
@define('ENTRY_DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird für Einträge verwendet, die kein eigenes Header-Bild definieren.');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE', 'Standard-Header-Bild für statische Seiten');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE_DESC', 'Dieses Bild wird für statische Seiten verwendet, die kein eigenes Header-Bild definieren.');
@define('STATICPAGE_SPECIFIC_HEADER_IMAGE','Header-Bild für statische Seiten (optional)');
@define('CONTACTFORM_HEADER_IMAGE', 'Header-Bild für das Kontaktformular');
@define('ARCHIVE_HEADER_IMAGE', 'Header-Bild für die Archivseite');
//Page Options
@define('HOME_LINK_TEXT', 'Text des Home-Links');
@define('ENTRY_DATE_FORMAT','Datumsformat für Einträge');
@define('COMMENT_TIME_FORMAT','Zeitformat für Kommentare und Trackbacks');
@define('WORDS','Textfassung');
@define('TIMESTAMP','Zeitstempel');
@define('SUBTITLE_USE_ENTRYBODY','Die ersten 70 Zeichen des Einrags als Untertitel ausgeben, wenn das Feld Untertitel leer gelassen wurde?');
@define('ENTRYBODY_DETAILED_ONLY','Eintags-Inhalt nur in der Einzelansicht eines Eintrags anzeigen');
@define('SHOW_COMMENT_LINK','Zeige Link zu den Kommentaren des Eintrags');
@define('CATEGORIES_ON_ARCHIVE', 'Kategorien auf der Archivseite anzeigen');
@define('CATEGORIES_ON_ARCHIVE_DESC', 'Das Seitenleisten-Plugin Kategorien (serendipity_plugin_categories) muss installiert und die Option "Smarty-Templating aktivieren?" aktiviert sein, damit Kategorien auf der Archiv-Seite angezeigt werden.');
@define('TAGS_ON_ARCHIVE', 'Tags auf der Archivseite anzeigen');
@define('TAGS_ON_ARCHIVE_DESC', 'Das Seitenleisten-Plugin Getaggte Artikel (serendipity_plugin_freetag) muss installiert sein und die Option "Sidebar template" muss auf "archive_freetag.tpl" gesetzt werden, damit Tags auf der Archiv-Seite angezeigt werden.');
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Autorennamen anzeigen');
@define('STATIC_SHOW_DATE_TEXT','Datum anzeigen');
//Navigation
@define('USE_CORENAV', 'Globale Navigation verwenden?');
//Social media
@define('TWITTER_URL','Twitter-URL. Icon wird nicht angezeigt, falls leer.');
@define('FACEBOOK_URL','Facebook-URL. Icon wird nicht angezeigt, falls leer.');
@define('RSS_URL','RSS feed-URL. Icon wird nicht angezeigt, falls leer.');
@define('GITHUB_URL','GitHub-URL. Icon wird nicht angezeigt, falls leer.');
@define('INSTAGRAM_URL','Instagram-URL. Icon wird nicht angezeigt, falls leer.');
@define('PINTEREST_URL','Pinterest-URL. Icon wird nicht angezeigt, falls leer.');
@define('COPYRIGHT', 'Copyright');
//time ago in words function
@define('ELAPSED_LESS_THAN_MINUTE_AGO','Vor weniger als einer Minute');
@define('ELAPSED_ONE_MINUTE_AGO','Vor einer Minute');
@define('ELAPSED_ONE_DAY_AGO','Vor einem Tag');
@define('ELAPSED_MINUTES_AGO','Vor %s Minuten');
@define('ELAPSED_HOURS_AGO','Vor %s Stunden');
@define('ELAPSED_DAYS_AGO','Vor %s Tagen');
@define('ELAPSED_MONTHS_AGO','Vor %s Monaten');
@define('ELAPSED_YEARS_AGO','Vor %s Jahren'); //not currently using this, but defining just in case
@define('ELAPSED_ABOUT_ONE_HOUR_AGO','Vor ungefähr einer Stunde'); // greater than 45 minutes, less than 90 minutes
@define('ELAPSED_ABOUT_ONE_MONTH_AGO','Vor ungefähr einem Monat'); // greater than 30 days, less than 60 days
@define('ELAPSED_ABOUT_ONE_YEAR_AGO','Vor ungefähr einem Jahr'); // greater than one year, less than 2 years
@define('ELAPSED_OVER_YEARS_AGO','Vor mehr als %s Jahren');// greater than 2 years

View File

@ -0,0 +1,78 @@
<?php
// General
@define('ERROR_404', 'Error 404 - The page you requested could not be found.');
@define('SEARCH_WHAT','What are you looking for?'); //used on quicksearch modal
@define('SEARCH','Search');
@define('TOGGLE_NAV','Toggle Navigation'); //only seen by screen readers
@define('CLOSE','Close'); //close button on search form
@define('READ_MORE','Read More');
//Option groups and instructions
@define('THEME_HEADERS', 'Header images');
@define('THEME_SOCIAL_LINKS', 'Social links');
@define('THEME_PAGE_OPTIONS', 'Page Options');
@define('THEME_NAVIGATION', 'Navigation Options');
@define('THEME_README','Read me');
@define('THEME_EP_YES','<p>Extended Property for Entries plugin (serendipity_event_entryproperties) is required for this theme, and is installed.</p>');
@define('THEME_EP_NO','<p class="serendipity_msg_important">Extended Property for Entries plugin (serendipity_event_entryproperties) is required for this theme, which is not installed or is inactive. Please install the plugin to fully utlize this theme.</p>');
@define('THEME_INSTRUCTIONS','<p>This theme uses wide header images for different page types. Default images are included with the theme. The default images are 1900px wide. These default images can be changed in the configurations settings below. In addition to default images, each entry and static page can define their own unique header image.</p> <p>This theme was designed to use a secondary subtitle, or byline, directly below the entry title. The entry subtitle, and entry image, is available under the section "Advanced Options" when creating or editing an entry. Alternatively, the theme can be configured to display the first 70 characters of an entry as the subtitle if no subtitle is defined for an entry.</p> <p>This theme does not use sidebars. This theme can, however, be configured to display categories and entry tags from the respective sidebar plugins on the archive page. See "' . THEME_PAGE_OPTIONS . '" below.</p> <p>If using the avatar plugin (serendipity_event_gravatar), configure option "Produce smarty tag = yes" for best display of comment avatars.</p> <p>Configure serendipity_event_freetag option "Extended Smarty = yes" for a nicer display of tags in the entry footer.</p>');
@define('THEME_ENTRY_PROPERTIES_HEADING','Theme Clean Blog entry properties');
@define('THEME_CUSTOM_FIELD_HEADING', 'Custom Entry Fields');
@define('THEME_CUSTOM_FIELD_DEFINITION','These optional fields are only available when using this theme (clean blog). The event plugin serendipity_event_entryproperties (extended properties for entries) must also be installed to use these fields. The Entry Subtitle field is displayed below the entry title and should be a brief post summary. The entry header image field will overide the default entry header image for this specific entry.');
@define('THEME_ENTRY_SUBTITLE','Entry Subtitle');
@define('THEME_ENTRY_HEADER_IMAGE','Entry Header Image');
// Header Images
@define('DEFAULT_HEADER_IMAGE', 'Default header image');
@define('DEFAULT_HEADER_IMAGE_DESC', 'This image will be used on pages which do not define their own header image');
@define('ENTRY_DEFAULT_HEADER_IMAGE', 'Header image for entries');
@define('ENTRY_DEFAULT_HEADER_IMAGE_DESC', 'This image will be used for all entries that do not define their own entry-specific header image');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE', 'Header image for static pages');
@define('STATICPAGE_DEFAULT_HEADER_IMAGE_DESC', 'This image will be used for all static pages that do not define their own page-specific header image');
@define('STATICPAGE_SPECIFIC_HEADER_IMAGE','Staticpage Header Image (optional)');
@define('CONTACTFORM_HEADER_IMAGE', 'Header image for contact form');
@define('ARCHIVE_HEADER_IMAGE', 'Header image for archive page');
//Page Options
@define('HOME_LINK_TEXT', 'Home link text');
@define('ENTRY_DATE_FORMAT','Entry Date Format');
@define('COMMENT_TIME_FORMAT','Comment and trackback time format');
@define('WORDS','Words');
@define('TIMESTAMP','Timestamp');
@define('SUBTITLE_USE_ENTRYBODY','Display first 70 characters of entry body as entry subtitle if actual entry subtitle field is blank?');
@define('ENTRYBODY_DETAILED_ONLY','Show entry body on single entry page view only');
@define('SHOW_COMMENT_LINK','Show link to entry\'s comments');
@define('CATEGORIES_ON_ARCHIVE', 'Show categories on archive page');
@define('CATEGORIES_ON_ARCHIVE_DESC', 'The sidebar categories plugin (serendipity_plugin_categories) must be installed and the option "Enable Smarty-Templates?" must be activated to view categories on the archive page.');
@define('TAGS_ON_ARCHIVE', 'Show tags on archive page');
@define('TAGS_ON_ARCHIVE_DESC', 'The show tagged entries plugin (serendipity_plugin_freetag) must be installed and the sidebar template option must be set to "archive_freetag.tpl" to view tags on the archive page.');
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Show Author\'s name');
@define('STATIC_SHOW_DATE_TEXT','Show date');
//Navigation
@define('USE_CORENAV', 'Use global navigation?');
//Social media
@define('TWITTER_URL','Twitter URL path. Icon not displayed if blank.');
@define('FACEBOOK_URL','Facebook URL path. Icon not displayed if blank.');
@define('RSS_URL','RSS feed URL path. Icon not displayed if blank.');
@define('GITHUB_URL','GitHub URL path. Icon not displayed if blank.');
@define('INSTAGRAM_URL','Instagram URL path. Icon not displayed if blank.');
@define('PINTEREST_URL','Pinterest URL path. Icon not displayed if blank.');
@define('COPYRIGHT', 'Copyright');
//time ago in words function
@define('ELAPSED_LESS_THAN_MINUTE_AGO','Less than a minute ago');
@define('ELAPSED_ONE_MINUTE_AGO','1 minute ago');
@define('ELAPSED_ONE_DAY_AGO','1 day ago');
@define('ELAPSED_MINUTES_AGO','%s minutes ago');
@define('ELAPSED_HOURS_AGO','%s hours ago');
@define('ELAPSED_DAYS_AGO','%s days ago');
@define('ELAPSED_MONTHS_AGO','%s months ago');
@define('ELAPSED_YEARS_AGO','%s years ago'); //not currently using this, but defining just in case
@define('ELAPSED_ABOUT_ONE_HOUR_AGO','About an hour ago'); // greater than 45 minutes, less than 90 minutes
@define('ELAPSED_ABOUT_ONE_MONTH_AGO','About a month ago'); // greater than 30 days, less than 60 days
@define('ELAPSED_ABOUT_ONE_YEAR_AGO','About a year ago'); // greater than one year, less than 2 years
@define('ELAPSED_OVER_YEARS_AGO','Over %s years ago');// greater than 2 years

View File

@ -0,0 +1,480 @@
/*!
* Clean Blog v1.0.0 (http://startbootstrap.com)
* Copyright 2014 Start Bootstrap
* Licensed under Apache 2.0 (https://github.com/IronSummitMedia/startbootstrap/blob/gh-pages/LICENSE)
* Theme ported to Serendipity (http://s9y.org) by Don Chambers
* Font Awesome by Dave Gandy - http://fontawesome.io
*/
@import "variables.less";
@import "mixins.less";
// Global Components
body {
.serif;
font-size: 20px;
color: @gray-dark;
}
// -- Typography
p {
line-height: 1.5;
margin: 0 0 30px;
a {
text-decoration: underline;
}
}
h1,
h2,
h3,
h4,
h5,
h6 {
.sans-serif;
font-weight: 800;
}
a {
color: @gray-dark;
&:hover,
&:focus {
color: @brand-primary;
}
}
a img {
&:hover,
&:focus {
cursor: zoom-in;
}
}
blockquote {
color: @gray;
font-style: italic;
}
hr.small {
max-width: 100px;
margin: 15px auto;
border-width: 4px;
border-color: white;
}
ol, ul {
margin-bottom: 30px;
a {
text-decoration:underline;
}
}
// Navigation
.navbar-custom {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 3;
.sans-serif;
.navbar-brand {
font-weight: 800;
}
.nav {
li {
a {
text-decoration:none;
text-transform: uppercase;
font-size: 12px;
font-weight: 800;
letter-spacing: 1px;
}
}
}
@media only screen and (min-width: 768px) {
background: transparent;
border-bottom: 1px solid transparent;
.navbar-brand {
color: white;
padding: 20px;
&:hover,
&:focus {
color: @white-faded;
}
}
.nav {
li {
a {
color: white;
padding: 20px;
&:hover,
&:focus {
color: @white-faded;
}
}
}
}
}
@media only screen and (min-width: 1170px) {
-webkit-transition: background-color 0.3s;
-moz-transition: background-color 0.3s;
transition: background-color 0.3s;
/* Force Hardware Acceleration in WebKit */
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
&.is-fixed {
/* when the user scrolls down, we hide the header right above the viewport */
position: fixed;
top: -61px;
background-color: fade(white, 90%);
border-bottom: 1px solid darken(white, 5%);
-webkit-transition: -webkit-transform 0.3s;
-moz-transition: -moz-transform 0.3s;
transition: transform 0.3s;
.navbar-brand {
color: @gray-dark;
&:hover,
&:focus {
color: @brand-primary;
}
}
.nav {
li {
a {
color: @gray-dark;
&:hover,
&:focus {
color: @brand-primary;
}
}
}
}
}
&.is-visible {
/* if the user changes the scrolling direction, we show the header */
-webkit-transform: translate3d(0, 100%, 0);
-moz-transform: translate3d(0, 100%, 0);
-ms-transform: translate3d(0, 100%, 0);
-o-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
}
// Header
.intro-header {
background-color: @header-default!important;
background: no-repeat center center;
background-attachment: scroll;
.background-cover;
// NOTE: Background images are set within the HTML using inline CSS!
margin-bottom: 40px;
.site-heading,
.post-heading,
.page-heading {
padding: 100px 0 50px;
color: white;
@media only screen and (min-width: 768px) {
padding: 150px 0;
}
}
.site-heading,
.page-heading {
text-align: center;
h1 {
margin-top: 0;
font-size: 50px;
}
.subheading {
font-size: 24px;
line-height: 1.1;
display: block;
.sans-serif;
font-weight: 300;
margin: 10px 0 0;
}
@media only screen and (min-width: 768px) {
h1 {
font-size: 80px;
}
}
}
.post-heading {
h1 {
font-size: 35px;
}
.subheading,
.meta {
line-height: 1.1;
display: block;
}
.subheading {
.sans-serif;
font-size: 24px;
margin: 10px 0 30px;
font-weight: 600;
}
.meta {
.serif;
font-style: italic;
font-weight: 300;
font-size: 20px;
a {
color: white;
}
}
@media only screen and (min-width: 768px) {
h1 {
font-size: 55px;
}
.subheading {
font-size: 30px;
}
}
}
}
// Post Preview Pages
.post-preview {
> a {
color: @gray-dark;
&:hover,
&:focus {
text-decoration: none;
color: @brand-primary;
}
> .post-title {
font-size: 30px;
margin-top: 30px;
margin-bottom: 10px;
}
> .post-subtitle {
margin: 0;
font-weight: 300;
margin-bottom: 10px;
}
}
> .post-meta {
color: @gray;
font-size: 18px;
font-style: italic;
margin-top: 0;
> a {
text-decoration: none;
color: @gray-dark;
&:hover,
&:focus {
color: @brand-primary;
text-decoration: underline;
}
}
}
@media only screen and (min-width: 768px) {
> a {
> .post-title {
font-size: 36px;
}
}
}
}
// Sections
.section-heading {
font-size: 36px;
margin-top: 60px;
font-weight: 700;
}
.caption {
text-align: center;
font-size: 14px;
padding: 10px;
font-style: italic;
margin: 0;
display: block;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
footer {
padding: 50px 0 65px;
.list-inline {
margin: 0;
padding: 0;
}
.copyright {
font-size: 14px;
text-align: center;
margin: 20px 0 0 0;
}
}
// Contact Form Styles
.floating-label-form-group {
font-size: 14px;
position: relative;
margin-bottom: 0;
padding-bottom: 0.5em;
border-bottom: 1px solid @gray-light;
input,
textarea {
z-index: 1;
position: relative;
padding-right: 0;
padding-left: 0;
border: none;
border-radius: 0;
font-size: 1.5em;
background: none;
box-shadow: none !important;
resize: none;
}
label {
display: block;
z-index: 0;
position: relative;
top: 2em;
margin: 0;
font-size: 0.85em;
line-height: 1.764705882em;
vertical-align: middle;
vertical-align: baseline;
opacity: 0;
-webkit-transition: top 0.3s ease,opacity 0.3s ease;
-moz-transition: top 0.3s ease,opacity 0.3s ease;
-ms-transition: top 0.3s ease,opacity 0.3s ease;
transition: top 0.3s ease,opacity 0.3s ease;
}
&::not(:first-child) {
padding-left: 14px;
border-left: 1px solid @gray-light;
}
}
.floating-label-form-group-with-value {
label {
top: 0;
opacity: 1;
}
}
.floating-label-form-group-with-focus {
label {
color: @brand-primary;
}
}
form .row:first-child .floating-label-form-group {
border-top: 1px solid @gray-light;
}
// Button Styles
.btn {
.sans-serif;
text-decoration: none;
text-transform: uppercase;
font-size: 14px;
font-style:normal;
font-weight: 800;
letter-spacing: 1px;
border-radius: 0;
padding: 15px 25px;
}
.btn-lg {
font-size: 16px;
padding: 25px 35px;
}
.btn-default.active, .btn-default.focus, .btn-default:active, .btn-default:focus, .btn-default:hover, .open > .dropdown-toggle.btn-default
.open > .dropdown-toggle.btn-default,
.btn-default {
&:active,
&:focus,
&:hover {
background-color: @brand-primary;
border: 1px solid @brand-primary;
color: white;
}
}
// Pager Styling
.pager {
margin: 20px 0 0;
li {
> a,
> span {
.sans-serif;
text-transform: uppercase;
font-size: 14px;
font-weight: 800;
letter-spacing: 1px;
padding: 15px 25px;
background-color: white;
border-radius: 0;
}
> a:hover,
> a:focus {
color: white;
background-color: @brand-primary;
border: 1px solid @brand-primary;
}
}
.disabled {
> a,
> a:hover,
> a:focus,
> span {
color: @gray;
background-color: @gray-dark;
cursor: not-allowed;
}
}
}
// -- Highlight Color Customization
::-moz-selection {
color: white;
text-shadow: none;
background: @brand-primary;
}
::selection {
color: white;
text-shadow: none;
background: @brand-primary;
}
img::selection {
color: white;
background: transparent;
}
img::-moz-selection {
color: white;
background: transparent;
}
body {
webkit-tap-highlight-color: @brand-primary;
}
@import "serendipity.less";

View File

@ -0,0 +1,22 @@
// Mixins
.transition-all() {
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.background-cover() {
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
}
.serif() {
font-family: 'Lora', 'Times New Roman', serif;
}
.sans-serif () {
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

View File

@ -0,0 +1,339 @@
/** Serendipity specific styles **/
blockquote {padding: 0 20px;}
.form-control {font-size: 18px;}
ul.comment-list {
list-style: none;
margin: 0;
padding:0;
}
.comment-list .comment-children {
list-style: none;
margin-left: 58px;
padding:0;
}
.comment_any {
margin-bottom: 2.5em;
}
.comment-list-item, .comment-list-item-body {
overflow: hidden;
}
.comment-author-heading {
font-size: 0.9em;
margin: 0 0 5px;
text-transform: uppercase;
}
img.comment_avatar {
clear: left;
float: left;
height: 48px;
margin-right: 10px;
width: 48px;
}
.avatar_right {
margin-left: 0;
}
.serendipity_comments .comment_ability {
margin: 15px 0;
}
.comment-date {
color: @gray;
font-weight: normal;
}
.comment-meta {
font-size: 0.8em;
margin: 0.5em 0 0 0;
}
.serendipity_section_commentform{
margin-top: 2em;
}
img{
display: block;
height: auto;
max-width: 100%;
}
#serendipity_replyTo {max-width: 100%}
/* If the basic styles for aligning images are changed, the changes
must be ported to htmlarea/ckeditor/wysiwyg-style.css as well. */
.serendipity_image_left,
.serendipity_image_right,
.serendipity_image_center,
.serendipity_imageComment_center,
.serendipity_imageComment_left,
.serendipity_imageComment_right {
background: transparent;
border: 0 none;
padding: 0!important;
max-width: 100%;
}
.serendipity_image_left,
.serendipity_imageComment_left {
display: block;
float: left;
margin: 0 1em 1em 0;
}
.serendipity_image_right,
.serendipity_imageComment_right {
display: block;
float: right;
margin: 0 0 1em 1em;
}
.serendipity_image_center {
display: block;
margin: 0 auto 1em auto;
}
.serendipity_imageComment_center {
display: block;
margin: 0 auto 1em auto;
}
.serendipity_imageComment_img img {
border: none!important;
margin: 0!important;
}
.serendipity_imageComment_txt {
border: 0;
color: @gray;
display: block;
font-size: .8125em;
font-style: italic;
line-height: 1.5em;
margin: 0;
padding: .5em;
text-align: center;
}
.page-footer {
padding: 30px 0;
}
.entry-footer {
padding: 20px 0;
}
.btn-group-sm > .btn, .btn-sm {
border-radius: 3px!important;
font-size: 12px!important;
line-height: 1.5!important;
padding: 5px 10px!important;
}
.pager li > a, .pager li > span {
border-color: #ccc;
}
.category-list {
line-height: 1.6em;
}
.category-children {
list-style:none;
padding-left: 24px;
}
.serendipity_freeTag {
margin-left: auto;
margin-right: 0px;
text-align: left;
font-size: 80%;
display: block;
margin-top: 1em;
margin-bottom: 0px;
color: @gray;
}
.serendipity_freeTag_related {
color: @gray;
display: block;
font-size: 80%;
margin: 10px 0 0 0;
text-align: left;
}
.serendipity_freeTag a {
font-size: inherit;
text-decoration: none;
}
.serendipity_freeTag a:hover {
text-decoration: underline;
}
ul.staticpage_navigation{
display: block;
list-style-type: none;
margin: 10px 0;
padding:0
}
ul.staticpage_navigation li{
display: inline;
padding: 0 5px 0 0;
}
.staticpage_breadcrumbs {
color: @gray;
margin: 20px 0;
}
.staticpage_childpages {
margin: 1em 0;
}
.staticpage-footer {padding: 30px 0 0 0}
.serendipity_commentDirection {margin: 1em 0}
.staticpage_related_category_entry_list {margin-top: 1em}
.clean-blog_freeTag {
line-height: 2em;
margin: 0.5em 0
}
.clean-blog_freeTag a{ /* mimic bootstrap button */
background-color: #fff;
background-image: none;
border: 1px solid transparent;
border-color: #ccc;
border-radius: 3px !important;
color: #333;
cursor: pointer;
display: inline-block;
font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 12px !important;
font-weight: 800;
letter-spacing: 1px;
line-height: 1.5 !important;
margin-bottom: 0;
-moz-user-select: none;
padding: 5px 10px !important;
text-align: center;
text-decoration: none;
text-transform: uppercase;
vertical-align: middle;
white-space: nowrap;
}
.clean-blog_freeTag a:hover, .clean-blog_freeTag a:focus{
background-color: @brand-primary;
border: 1px solid @brand-primary;
color: white;
}
.cleanblog_freeTag_related {
color: @gray;
display: block;
font-size: 80%;
margin: 30px 0 0;
text-align: left;
}
.archive-year {
margin-bottom: 1em;
}
.archive-year .btn {margin-bottom: 4px;}
.archive-summary h2 {margin-bottom: 40px}
.archive-button {
width: 100%;
}
.btn-default.disabled {background-color:#dddddd;}
.btn-group .dropdown-menu li i{
display: inline-block;
left: -3px;
margin-right: 8px;
position: relative;
text-align: center;
width: 1.25em;
}
.btn-group .dropdown-menu > li > a:focus,
.btn-group .dropdown-menu > li > a:hover {
background-color: @brand-primary;
color: #ffffff;
text-decoration: none;
}
.fa-comment-o {
vertical-align: 10%!important;
}
@media only screen and (max-width:767px){
.dropdown-menu {min-width:140px;}
.dropdown-menu > li > a {padding: 3px 14px}
}
.contactform_preface {
margin-bottom: 2em;
}
.modal-dialog {width: 450px}
#serendipityQuickSearchTermField {width: 100%;}
.searchterm {
font-style: italic;
}
table {
margin-bottom: 20px;
max-width: 100%;
width: 100%;
}
table > tbody > tr > td,
table > tbody > tr > th,
table > tfoot > tr > td,
table > tfoot > tr > th,
table > thead > tr > td,
table > thead > tr > th {
border-top: 1px solid #ddd;
line-height: 1.42857;
padding: 8px;
vertical-align: top;
}
table > thead > tr > th {
border-bottom: 2px solid #ddd;
vertical-align: bottom;
}
table > caption + thead > tr:first-child > td,
table > caption + thead > tr:first-child > th,
table > colgroup + thead > tr:first-child > td,
table > colgroup + thead > tr:first-child > th,
table > thead:first-child > tr:first-child > td,
table > thead:first-child > tr:first-child > th {
border-top: 0 none;
}
table > tbody + tbody {
border-top: 2px solid #ddd;
}
table table {
background-color: #fff;
}

View File

@ -0,0 +1,8 @@
// Variables
@brand-primary: #0085A1;
@gray-dark: lighten(black, 25%);
@gray: lighten(black, 50%);
@white-faded: fade(white, 80%);
@gray-light: #eee;
@header-default: #433a31;

View File

@ -0,0 +1,53 @@
<article{if $plugin_contactform_articleformat} class="post serendipity_staticpage serendipity_entry{/if}">
<header>
<h2>{if $plugin_contactform_articleformat}{$plugin_contactform_name}{else}{$plugin_contactform_pagetitle}{/if}</h2>
</header>
<section id="entry">
<div class="content serendipity_entry_body">
{if $is_contactform_error}
<p class="alert alert-danger alert-error"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$plugin_contactform_error}</p>
{foreach from=$comments_messagestack item="message"}
<p class="alert alert-danger alert-error"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$message}</p>
{/foreach}
{/if}
{if (empty($is_contactform_sent)) && $plugin_contactform_preface}
<div class="contactform_preface">{$plugin_contactform_preface}</div>
{/if}
{if $is_contactform_sent}
<p class="alert alert-success">{$plugin_contactform_sent}</p>
{else}
<div id="serendipityCommentForm" class="serendipityCommentForm">
<a id="serendipity_CommentForm"></a>
<form id="serendipity_comment" class="form-vertical" action="{$commentform_action}#feedback" method="post">
<div>
<input type="hidden" name="serendipity[subpage]" value="{$commentform_sname}">
<input type="hidden" name="serendipity[commentform]" value="true">
</div>
<div class="form-group">
<label for="serendipity_commentform_name">{$CONST.NAME}</label>
<input id="serendipity_commentform_name" class="form-control" name="serendipity[name]" type="text" value="{$commentform_name}" placeholder="{$CONST.NAME}">
</div>
<div class="form-group">
<label for="serendipity_commentform_email">{$CONST.EMAIL}</label>
<input id="serendipity_commentform_email" class="form-control" name="serendipity[email]" type="email" value="{$commentform_email}" placeholder="mail@example.org">
</div>
<div class="form-group">
<label for="serendipity_commentform_url">{$CONST.HOMEPAGE}</label>
<input id="serendipity_commentform_url" class="form-control" name="serendipity[url]" type="url" value="{$commentform_url}" placeholder="http://...">
</div>
<div class="form-group">
<label for="serendipity_commentform_comment">{$CONST.COMMENT}</label>
<textarea id="serendipity_commentform_comment" class="form-control" name="serendipity[comment]" rows="10" placeholder="{$CONST.COMMENT}">{$commentform_data}</textarea>
</div>
<div class="form-group">
{serendipity_hookPlugin hook="frontend_comment" data=$commentform_entry}
</div>
<div class="form-group">
<input id="serendipity_submit" name="serendipity[submit]" class="btn btn-default" type="submit" value="{$CONST.SUBMIT_COMMENT}">
</div>
</form>
</div>
</div>
</section>
{/if}
</article>

View File

@ -0,0 +1,67 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h2>{if $staticpage_articleformat}{if $staticpage_articleformattitle}{$staticpage_articleformattitle|@escape}{else}{$staticpage_pagetitle}{/if}{else}{if $staticpage_headline}{$staticpage_headline|@escape}{else}{$staticpage_pagetitle}{/if}{/if}</h2>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$template_option.home_link_text}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&nbsp;/&nbsp; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{/if}{$crumb.name|@escape}</a>
{/foreach}
</div>
{/if}
</header>
{if $staticpage_pass AND $staticpage_form_pass != $staticpage_pass}
<form class="staticpage_password_form" action="{$staticpage_form_url}" method="post">
<fieldset>
<legend>{$CONST.STATICPAGE_PASSWORD_NOTICE}</legend>
<input name="serendipity[pass]" type="password" value="">
<input name="submit" type="submit" value="{$CONST.GO}" >
</fieldset>
</form>
{else}
<section id="entry">
{if $staticpage_precontent}
<div class="content serendipity_preface">
{$staticpage_precontent}
</div>
{/if}
{if $staticpage_show_childpages && is_array($staticpage_childpages)}
<nav role="navigation">
<ul class="staticpage_childpages">
{foreach from=$staticpage_childpages item="childpage"}
<li><a href="{$childpage.permalink|@escape}" title="{$childpage.pagetitle|@escape}">{$childpage.pagetitle|@escape}</a></li>
{/foreach}
</ul>
</nav>
{/if}
{if $staticpage_content}
<div class="content {if $staticpage_articleformat}serendipity_entry_body{else}staticpage_content{/if}">
{$staticpage_content}
</div>
{/if}
</section>
{/if}
{if $staticpage_navigation AND $staticpage_shownavi}
<nav role="navigation">
<ul class="pager">
{if $footer_prev_page}<li class="previous"><a href="{$footer_prev_page}">&larr; {$CONST.PREVIOUS_PAGE}</a></li>{/if}
{if $footer_next_page}<li class="next"><a href="{$footer_next_page}">{$CONST.NEXT_PAGE} &rarr;</a></li>{/if}
</ul>
</nav>
{/if}
{if $staticpage_navigation AND $staticpage_shownavi}
<nav role="navigation">
<ul class="pager staticpage_navigation">
{if $staticpage_navigation.prev.link}<li class="previous"><a href="{$staticpage_navigation.prev.link}" title="prev"><i class="fa fa-arrow-left" aria-hidden="true"></i> {$staticpage_navigation.prev.name|@escape}</a></li>{/if}
{if $staticpage_navigation.next.link}<li class="next"><a href="{$staticpage_navigation.next.link}" title="next">{$staticpage_navigation.next.name|@escape} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></li>{/if}
</ul>
</nav>
{/if}
{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true' || ($staticpage_adminlink && $staticpage_adminlink.page_user)}
<footer class="staticpage-footer">
<p class="post-meta">
{if $staticpage_custom.show_author =='true'}{$CONST.POSTED_BY} {$staticpage_author|@escape}{/if}{if $staticpage_custom.show_date =='true'}{if $staticpage_custom.show_author =='true'} {$CONST.ON} {/if}<time datetime="{$staticpage_lastchange|@serendipity_html5time}">{$staticpage_lastchange|@formatTime:$template_option.date_format}</time>{/if}{if $staticpage_adminlink AND $staticpage_adminlink.page_user}{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true'}&nbsp;&nbsp;{/if}<a href="{$staticpage_adminlink.link_edit}" title="{$staticpage_adminlink.link_name|@escape}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-edit"></i><span class="sr-only">{$staticpage_adminlink.link_name|@escape}</span></button></a>{/if}
</p>
</footer>
{/if}
</article>

View File

@ -0,0 +1,53 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h2>{if $staticpage_articleformat}{if $staticpage_articleformattitle}{$staticpage_articleformattitle|@escape}{else}{$staticpage_pagetitle}{/if}{else}{if $staticpage_headline}{$staticpage_headline|@escape}{else}{$staticpage_pagetitle}{/if}{/if}</h2>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$template_option.home_link_text}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&raquo; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{/if}{$crumb.name|@escape}</a>
{/foreach}
</div>
{/if}
</header>
{if $staticpage_pass AND $staticpage_form_pass != $staticpage_pass}
<form class="staticpage_password_form" action="{$staticpage_form_url}" method="post">
<fieldset>
<legend>{$CONST.STATICPAGE_PASSWORD_NOTICE}</legend>
<input name="serendipity[pass]" type="password" value="">
<input name="submit" type="submit" value="{$CONST.GO}" >
</fieldset>
</form>
{else}
<section id="entry">
{if $staticpage_show_childpages && is_array($staticpage_childpages)}
<nav role="navigation">
<ul class="staticpage_childpages">
{foreach from=$staticpage_childpages item="childpage"}
<li><a href="{$childpage.permalink|@escape}" title="{$childpage.pagetitle|@escape}">{$childpage.pagetitle|@escape}</a></li>
{/foreach}
</ul>
</nav>
{/if}
{if $staticpage_precontent}
<div class="content serendipity_preface">
{$staticpage_precontent}
</div>
{/if}
{/if}
{if $staticpage_navigation AND $staticpage_shownavi}
<nav role="navigation">
<ul class="pager staticpage_navigation">
{if $staticpage_navigation.prev.link}<li class="previous"><a href="{$staticpage_navigation.prev.link}" title="prev"><i class="fa fa-arrow-left" aria-hidden="true"></i> {$staticpage_navigation.prev.name|@escape}</a></li>{/if}
{if $staticpage_navigation.next.link}<li class="next"><a href="{$staticpage_navigation.next.link}" title="next">{$staticpage_navigation.next.name|@escape} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></li>{/if}
</ul>
</nav>
{/if}
{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true' || ($staticpage_adminlink && $staticpage_adminlink.page_user)}
<footer class="staticpage-footer">
<p class="post-meta">
{if $staticpage_custom.show_author =='true'}{$CONST.POSTED_BY} {$staticpage_author|@escape}{/if}{if $staticpage_custom.show_date =='true'}{if $staticpage_custom.show_author =='true'} {$CONST.ON} {/if}<time datetime="{$staticpage_lastchange|@serendipity_html5time}">{$staticpage_lastchange|@formatTime:$template_option.date_format}</time>{/if}{if $staticpage_adminlink AND $staticpage_adminlink.page_user}{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true'}&nbsp;&nbsp;{/if}<a href="{$staticpage_adminlink.link_edit}" title="{$staticpage_adminlink.link_name|@escape}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-edit"></i><span class="sr-only">{$staticpage_adminlink.link_name|@escape}</span></button></a>{/if}
</p>
</footer>
{/if}
</article>

View File

@ -0,0 +1,62 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h2>{if $staticpage_articleformat}{if $staticpage_articleformattitle}{$staticpage_articleformattitle|@escape}{else}{$staticpage_pagetitle}{/if}{else}{if $staticpage_headline}{$staticpage_headline|@escape}{else}{$staticpage_pagetitle}{/if}{/if}</h2>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$template_option.home_link_text}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&raquo; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{/if}{$crumb.name|@escape}</a>
{/foreach}
</div>
{/if}
</header>
{if $staticpage_pass AND $staticpage_form_pass != $staticpage_pass}
<form class="staticpage_password_form" action="{$staticpage_form_url}" method="post">
<fieldset>
<legend>{$CONST.STATICPAGE_PASSWORD_NOTICE}</legend>
<input name="serendipity[pass]" type="password" value="">
<input name="submit" type="submit" value="{$CONST.GO}" >
</fieldset>
</form>
{else}
<section id="entry">
{if $staticpage_precontent}
<div class="content serendipity_preface">
{$staticpage_precontent}
</div>
{/if}
{if $staticpage_show_childpages && is_array($staticpage_childpages)}
<nav role="navigation">
<ul class="staticpage_childpages">
{foreach from=$staticpage_childpages item="childpage"}
<li><a href="{$childpage.permalink|@escape}" title="{$childpage.pagetitle|@escape}">{$childpage.pagetitle|@escape}</a></li>
{/foreach}
</ul>
</nav>
{/if}
{if $staticpage_content}
<div class="content {if $staticpage_articleformat}serendipity_entry_body{else}staticpage_content{/if}">
{$staticpage_content}
</div>
{/if}
<div class="staticpage_related_category_entry_list">
{serendipity_fetchPrintEntries category=$staticpage_related_category_id template="staticpage-entries-listing.tpl" limit=5 noSticky="true" noCache="false" fetchDrafts=false full="false" use_footer="false"}
</div>
</section>
{/if}
{if $staticpage_navigation AND $staticpage_shownavi}
<nav role="navigation">
<ul class="pager staticpage_navigation">
{if $staticpage_navigation.prev.link}<li class="previous"><a href="{$staticpage_navigation.prev.link}" title="prev"><i class="fa fa-arrow-left" aria-hidden="true"></i> {$staticpage_navigation.prev.name|@escape}</a></li>{/if}
{if $staticpage_navigation.next.link}<li class="next"><a href="{$staticpage_navigation.next.link}" title="next">{$staticpage_navigation.next.name|@escape} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></li>{/if}
</ul>
</nav>
{/if}
{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true' || ($staticpage_adminlink && $staticpage_adminlink.page_user)}
<footer class="staticpage-footer">
<p class="post-meta">
{if $staticpage_custom.show_author =='true'}{$CONST.POSTED_BY} {$staticpage_author|@escape}{/if}{if $staticpage_custom.show_date =='true'}{if $staticpage_custom.show_author =='true'} {$CONST.ON} {/if}<time datetime="{$staticpage_lastchange|@serendipity_html5time}">{$staticpage_lastchange|@formatTime:$template_option.date_format}</time>{/if}{if $staticpage_adminlink AND $staticpage_adminlink.page_user}{if $staticpage_custom.show_author =='true' || $staticpage_custom.show_date =='true'}&nbsp;&nbsp;{/if}<a href="{$staticpage_adminlink.link_edit}" title="{$staticpage_adminlink.link_name|@escape}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-edit"></i><span class="sr-only">{$staticpage_adminlink.link_name|@escape}</span></button></a>{/if}
</p>
</footer>
{/if}
</article>

View File

@ -0,0 +1,8 @@
{if $staticpage_results}
<aside class="staticpage_results">
<h3>{$CONST.STATICPAGE_SEARCHRESULTS|sprintf:$staticpage_searchresults}</h3>
{foreach from=$staticpage_results item="result"}
<a href="{$result.permalink|@escape}" title="{$result.pagetitle|@escape}"><h2 class="post-title">{$result.headline}</h2></a>
{/foreach}
</aside>
{/if}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,67 @@
<!doctype html>
<html lang="{$lang}">
<head>
<meta charset="{$head_charset}">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Serendipity v.{$serendipityVersion}">
<title>{$CONST.SERENDIPITY_ADMIN_SUITE}</title>
{* BOOTSTRAP CORE CSS *}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
{* S9Y CSS *}
{if $head_link_stylesheet_frontend}{* >= s9y 2.0.2 *}
<link rel="stylesheet" href="{$head_link_stylesheet_frontend}">
{else}
<link rel="stylesheet" href="{$serendipityHTTPPath}{$serendipityRewritePrefix}serendipity.css">
{/if}
{* CUSTOM FONTS *}
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Lora:400,400italic|Open+Sans:300,600,800' rel='stylesheet' type='text/css'>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
{serendipity_hookPlugin hook="backend_header" hookAll="true"}
<script src="{serendipity_getFile file='admin/js/plugins.js'}"></script>
<script src="{serendipity_getFile file='admin/serendipity_editor.js'}"></script>
<script>
window.onload = function() {ldelim}
parent.document.getElementById('serendipity_iframe').style.height = document.getElementById('maincontent').offsetHeight
+ parseInt(document.getElementById('maincontent').style.marginTop)
+ parseInt(document.getElementById('maincontent').style.marginBottom)
+ 'px';
parent.document.getElementById('serendipity_iframe').scrolling = 'no';
parent.document.getElementById('serendipity_iframe').style.border = 0;
{rdelim}
</script>
</head>
<body>
<main id="maincontent" class="container" role="main" style="margin: 0 auto;">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
{if $mode == 'preview'}
{$preview}
{elseif $mode == 'save'}
{$updertHooks}
{if $res}
<div class="alert alert-danger"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-exclamation fa-stack-1x"></i></span> {$CONST.ERROR}: <b>{$res}</b></div>
{else}
{if $lastSavedEntry}
<script type="text/javascript">$(document).ready(function() {
parent.document.forms['serendipityEntry']['serendipity[id]'].value = "{$lastSavedEntry}";
});
</script>
{/if}
<span class="alert alert-success"><span class="fa-stack" aria-hidden="true"><i class="fa fa-circle-thin fa-stack-2x"></i><i class="fa fa-check fa-stack-1x"></i></span> {$CONST.ENTRY_SAVED}</span>
<a href="{$entrylink}" target="_blank">{$CONST.VIEW}</a>
{/if}
{/if}
</div>
</div>
</main>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src={serendipity_getFile file="js/clean-blog.js"}></script>
</body>
</html>

View File

@ -0,0 +1,17 @@
{if $entries}
<dl>
{foreach from=$entries item="dategroup"}
{foreach from=$dategroup.entries item="entry"}
<dt class="serendipity_recententries_entrylink"><a href="{$entry.link}" title="{$entry.title|@default:$entry.id}">{$entry.title|@default:$entry.id}</a></dt>
<dd class="text-muted serendipity_recententries_entrydate"><small>{$dategroup.date|@formatTime:$template_option.date_format}</small></dd>
{/foreach}
{/foreach}
</dl>
{if $staticpage_related_category_id >0}
<a href="{$serendipityBaseURL}{$serendipityRewritePrefix}{getCategoryLinkByID cid=$staticpage_related_category_id}">{$CONST.STATICPAGE_ARTICLE_OVERVIEW} &#187;</a><br />
{else}
<a href="{$serendipityArchiveURL}/P1.html">{$CONST.STATICPAGE_ARTICLE_OVERVIEW} &#187;</a><br />
{/if}
{else}
<p class="nocontent">{$CONST.NO_ENTRIES_TO_PRINT}</p>
{/if}

View File

@ -0,0 +1,737 @@
/* CSS crunched with Crunch - http://crunchapp.net/ */
/*!
* Clean Blog v1.0.0 (http://startbootstrap.com)
* Copyright 2014 Start Bootstrap
* Licensed under Apache 2.0 (https://github.com/IronSummitMedia/startbootstrap/blob/gh-pages/LICENSE)
* Theme ported to Serendipity (http://s9y.org) by Don Chambers
* Font Awesome by Dave Gandy - http://fontawesome.io
*/
body {
font-family: 'Lora', 'Times New Roman', serif;
font-size: 20px;
color: #404040;
}
p {
line-height: 1.5;
margin: 0 0 30px;
}
p a {
text-decoration: underline;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-weight: 800;
}
a {
color: #404040;
}
a:hover,
a:focus {
color: #0085a1;
}
a img:hover,
a img:focus {
cursor: zoom-in;
}
blockquote {
color: #808080;
font-style: italic;
}
hr.small {
max-width: 100px;
margin: 15px auto;
border-width: 4px;
border-color: white;
}
ol,
ul {
margin-bottom: 30px;
}
ol a,
ul a {
text-decoration: underline;
}
.navbar-custom {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 3;
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
.navbar-custom .navbar-brand {
font-weight: 800;
}
.navbar-custom .nav li a {
text-decoration: none;
text-transform: uppercase;
font-size: 12px;
font-weight: 800;
letter-spacing: 1px;
}
@media only screen and (min-width: 768px) {
.navbar-custom {
background: transparent;
border-bottom: 1px solid transparent;
}
.navbar-custom .navbar-brand {
color: white;
padding: 20px;
}
.navbar-custom .navbar-brand:hover,
.navbar-custom .navbar-brand:focus {
color: rgba(255, 255, 255, 0.8);
}
.navbar-custom .nav li a {
color: white;
padding: 20px;
}
.navbar-custom .nav li a:hover,
.navbar-custom .nav li a:focus {
color: rgba(255, 255, 255, 0.8);
}
}
@media only screen and (min-width: 1170px) {
.navbar-custom {
-webkit-transition: background-color 0.3s;
-moz-transition: background-color 0.3s;
transition: background-color 0.3s;
/* Force Hardware Acceleration in WebKit */
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.navbar-custom.is-fixed {
/* when the user scrolls down, we hide the header right above the viewport */
position: fixed;
top: -61px;
background-color: rgba(255, 255, 255, 0.9);
border-bottom: 1px solid #f2f2f2;
-webkit-transition: -webkit-transform 0.3s;
-moz-transition: -moz-transform 0.3s;
transition: transform 0.3s;
}
.navbar-custom.is-fixed .navbar-brand {
color: #404040;
}
.navbar-custom.is-fixed .navbar-brand:hover,
.navbar-custom.is-fixed .navbar-brand:focus {
color: #0085a1;
}
.navbar-custom.is-fixed .nav li a {
color: #404040;
}
.navbar-custom.is-fixed .nav li a:hover,
.navbar-custom.is-fixed .nav li a:focus {
color: #0085a1;
}
.navbar-custom.is-visible {
/* if the user changes the scrolling direction, we show the header */
-webkit-transform: translate3d(0, 100%, 0);
-moz-transform: translate3d(0, 100%, 0);
-ms-transform: translate3d(0, 100%, 0);
-o-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
.intro-header {
background-color: #433a31 !important;
background: no-repeat center center;
background-attachment: scroll;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
margin-bottom: 40px;
}
.intro-header .site-heading,
.intro-header .post-heading,
.intro-header .page-heading {
padding: 100px 0 50px;
color: white;
}
@media only screen and (min-width: 768px) {
.intro-header .site-heading,
.intro-header .post-heading,
.intro-header .page-heading {
padding: 150px 0;
}
}
.intro-header .site-heading,
.intro-header .page-heading {
text-align: center;
}
.intro-header .site-heading h1,
.intro-header .page-heading h1 {
margin-top: 0;
font-size: 50px;
}
.intro-header .site-heading .subheading,
.intro-header .page-heading .subheading {
font-size: 24px;
line-height: 1.1;
display: block;
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-weight: 300;
margin: 10px 0 0;
}
@media only screen and (min-width: 768px) {
.intro-header .site-heading h1,
.intro-header .page-heading h1 {
font-size: 80px;
}
}
.intro-header .post-heading h1 {
font-size: 35px;
}
.intro-header .post-heading .subheading,
.intro-header .post-heading .meta {
line-height: 1.1;
display: block;
}
.intro-header .post-heading .subheading {
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 24px;
margin: 10px 0 30px;
font-weight: 600;
}
.intro-header .post-heading .meta {
font-family: 'Lora', 'Times New Roman', serif;
font-style: italic;
font-weight: 300;
font-size: 20px;
}
.intro-header .post-heading .meta a {
color: white;
}
@media only screen and (min-width: 768px) {
.intro-header .post-heading h1 {
font-size: 55px;
}
.intro-header .post-heading .subheading {
font-size: 30px;
}
}
.post-preview > a {
color: #404040;
}
.post-preview > a:hover,
.post-preview > a:focus {
text-decoration: none;
color: #0085a1;
}
.post-preview > a > .post-title {
font-size: 30px;
margin-top: 30px;
margin-bottom: 10px;
}
.post-preview > a > .post-subtitle {
margin: 0;
font-weight: 300;
margin-bottom: 10px;
}
.post-preview > .post-meta {
color: #808080;
font-size: 18px;
font-style: italic;
margin-top: 0;
}
.post-preview > .post-meta > a {
text-decoration: none;
color: #404040;
}
.post-preview > .post-meta > a:hover,
.post-preview > .post-meta > a:focus {
color: #0085a1;
text-decoration: underline;
}
@media only screen and (min-width: 768px) {
.post-preview > a > .post-title {
font-size: 36px;
}
}
.section-heading {
font-size: 36px;
margin-top: 60px;
font-weight: 700;
}
.caption {
text-align: center;
font-size: 14px;
padding: 10px;
font-style: italic;
margin: 0;
display: block;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
}
footer {
padding: 50px 0 65px;
}
footer .list-inline {
margin: 0;
padding: 0;
}
footer .copyright {
font-size: 14px;
text-align: center;
margin: 20px 0 0 0;
}
.floating-label-form-group {
font-size: 14px;
position: relative;
margin-bottom: 0;
padding-bottom: 0.5em;
border-bottom: 1px solid #eeeeee;
}
.floating-label-form-group input,
.floating-label-form-group textarea {
z-index: 1;
position: relative;
padding-right: 0;
padding-left: 0;
border: none;
border-radius: 0;
font-size: 1.5em;
background: none;
box-shadow: none !important;
resize: none;
}
.floating-label-form-group label {
display: block;
z-index: 0;
position: relative;
top: 2em;
margin: 0;
font-size: 0.85em;
line-height: 1.764705882em;
vertical-align: middle;
vertical-align: baseline;
opacity: 0;
-webkit-transition: top 0.3s ease,opacity 0.3s ease;
-moz-transition: top 0.3s ease,opacity 0.3s ease;
-ms-transition: top 0.3s ease,opacity 0.3s ease;
transition: top 0.3s ease,opacity 0.3s ease;
}
.floating-label-form-group::not(:first-child) {
padding-left: 14px;
border-left: 1px solid #eeeeee;
}
.floating-label-form-group-with-value label {
top: 0;
opacity: 1;
}
.floating-label-form-group-with-focus label {
color: #0085a1;
}
form .row:first-child .floating-label-form-group {
border-top: 1px solid #eeeeee;
}
.btn {
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-decoration: none;
text-transform: uppercase;
font-size: 14px;
font-style: normal;
font-weight: 800;
letter-spacing: 1px;
border-radius: 0;
padding: 15px 25px;
}
.btn-lg {
font-size: 16px;
padding: 25px 35px;
}
.btn-default.active:active,
.btn-default.focus:active,
.btn-default:active:active,
.btn-default:focus:active,
.btn-default:hover:active,
.open > .dropdown-toggle.btn-default .open > .dropdown-toggle.btn-default:active,
.btn-default:active,
.btn-default.active:focus,
.btn-default.focus:focus,
.btn-default:active:focus,
.btn-default:focus:focus,
.btn-default:hover:focus,
.open > .dropdown-toggle.btn-default .open > .dropdown-toggle.btn-default:focus,
.btn-default:focus,
.btn-default.active:hover,
.btn-default.focus:hover,
.btn-default:active:hover,
.btn-default:focus:hover,
.btn-default:hover:hover,
.open > .dropdown-toggle.btn-default .open > .dropdown-toggle.btn-default:hover,
.btn-default:hover {
background-color: #0085a1;
border: 1px solid #0085a1;
color: white;
}
.pager {
margin: 20px 0 0;
}
.pager li > a,
.pager li > span {
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-size: 14px;
font-weight: 800;
letter-spacing: 1px;
padding: 15px 25px;
background-color: white;
border-radius: 0;
}
.pager li > a:hover,
.pager li > a:focus {
color: white;
background-color: #0085a1;
border: 1px solid #0085a1;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: #808080;
background-color: #404040;
cursor: not-allowed;
}
::-moz-selection {
color: white;
text-shadow: none;
background: #0085a1;
}
::selection {
color: white;
text-shadow: none;
background: #0085a1;
}
img::selection {
color: white;
background: transparent;
}
img::-moz-selection {
color: white;
background: transparent;
}
body {
webkit-tap-highlight-color: #0085a1;
}
/** Serendipity specific styles **/
blockquote {
padding: 0 20px;
}
.form-control {
font-size: 18px;
}
ul.comment-list {
list-style: none;
margin: 0;
padding: 0;
}
.comment-list .comment-children {
list-style: none;
margin-left: 58px;
padding: 0;
}
.comment_any {
margin-bottom: 2.5em;
}
.comment-list-item,
.comment-list-item-body {
overflow: hidden;
}
.comment-author-heading {
font-size: 0.9em;
margin: 0 0 5px;
text-transform: uppercase;
}
img.comment_avatar {
clear: left;
float: left;
height: 48px;
margin-right: 10px;
width: 48px;
}
.avatar_right {
margin-left: 0;
}
.serendipity_comments .comment_ability {
margin: 15px 0;
}
.comment-date {
color: #808080;
font-weight: normal;
}
.comment-meta {
font-size: 0.8em;
margin: 0.5em 0 0 0;
}
.serendipity_section_commentform {
margin-top: 2em;
}
img {
display: block;
height: auto;
max-width: 100%;
}
#serendipity_replyTo {
max-width: 100%;
}
/* If the basic styles for aligning images are changed, the changes
must be ported to htmlarea/ckeditor/wysiwyg-style.css as well. */
.serendipity_image_left,
.serendipity_image_right,
.serendipity_image_center,
.serendipity_imageComment_center,
.serendipity_imageComment_left,
.serendipity_imageComment_right {
background: transparent;
border: 0 none;
padding: 0!important;
max-width: 100%;
}
.serendipity_image_left,
.serendipity_imageComment_left {
display: block;
float: left;
margin: 0 1em 1em 0;
}
.serendipity_image_right,
.serendipity_imageComment_right {
display: block;
float: right;
margin: 0 0 1em 1em;
}
.serendipity_image_center {
display: block;
margin: 0 auto 1em auto;
}
.serendipity_imageComment_center {
display: block;
margin: 0 auto 1em auto;
}
.serendipity_imageComment_img img {
border: none!important;
margin: 0!important;
}
.serendipity_imageComment_txt {
border: 0;
color: #808080;
display: block;
font-size: .8125em;
font-style: italic;
line-height: 1.5em;
margin: 0;
padding: .5em;
text-align: center;
}
.page-footer {
padding: 30px 0;
}
.entry-footer {
padding: 20px 0;
}
.btn-group-sm > .btn,
.btn-sm {
border-radius: 3px!important;
font-size: 12px!important;
line-height: 1.5!important;
padding: 5px 10px!important;
}
.pager li > a,
.pager li > span {
border-color: #ccc;
}
.category-list {
line-height: 1.6em;
}
.category-children {
list-style: none;
padding-left: 24px;
}
.serendipity_freeTag {
margin-left: auto;
margin-right: 0px;
text-align: left;
font-size: 80%;
display: block;
margin-top: 1em;
margin-bottom: 0px;
color: #808080;
}
.serendipity_freeTag_related {
color: #808080;
display: block;
font-size: 80%;
margin: 10px 0 0 0;
text-align: left;
}
.serendipity_freeTag a {
font-size: inherit;
text-decoration: none;
}
.serendipity_freeTag a:hover {
text-decoration: underline;
}
ul.staticpage_navigation {
display: block;
list-style-type: none;
margin: 10px 0;
padding: 0;
}
ul.staticpage_navigation li {
display: inline;
padding: 0 5px 0 0;
}
.staticpage_breadcrumbs {
color: #808080;
margin: 20px 0;
}
.staticpage_childpages {
margin: 1em 0;
}
.staticpage-footer {
padding: 30px 0 0 0;
}
.serendipity_commentDirection {
margin: 1em 0;
}
.staticpage_related_category_entry_list {
margin-top: 1em;
}
.clean-blog_freeTag {
line-height: 2em;
margin: 0.5em 0;
}
.clean-blog_freeTag a {
/* mimic bootstrap button */
background-color: #fff;
background-image: none;
border: 1px solid transparent;
border-color: #ccc;
border-radius: 3px !important;
color: #333;
cursor: pointer;
display: inline-block;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px !important;
font-weight: 800;
letter-spacing: 1px;
line-height: 1.5 !important;
margin-bottom: 0;
-moz-user-select: none;
padding: 5px 10px !important;
text-align: center;
text-decoration: none;
text-transform: uppercase;
vertical-align: middle;
white-space: nowrap;
}
.clean-blog_freeTag a:hover,
.clean-blog_freeTag a:focus {
background-color: #0085a1;
border: 1px solid #0085a1;
color: white;
}
.cleanblog_freeTag_related {
color: #808080;
display: block;
font-size: 80%;
margin: 30px 0 0;
text-align: left;
}
.archive-year {
margin-bottom: 1em;
}
.archive-year .btn {
margin-bottom: 4px;
}
.archive-summary h2 {
margin-bottom: 40px;
}
.archive-button {
width: 100%;
}
.btn-default.disabled {
background-color: #dddddd;
}
.btn-group .dropdown-menu li i {
display: inline-block;
left: -3px;
margin-right: 8px;
position: relative;
text-align: center;
width: 1.25em;
}
.btn-group .dropdown-menu > li > a:focus,
.btn-group .dropdown-menu > li > a:hover {
background-color: #0085a1;
color: #ffffff;
text-decoration: none;
}
.fa-comment-o {
vertical-align: 10%!important;
}
@media only screen and (max-width: 767px) {
.dropdown-menu {
min-width: 140px;
}
.dropdown-menu > li > a {
padding: 3px 14px;
}
}
.contactform_preface {
margin-bottom: 2em;
}
.modal-dialog {
width: 450px;
}
#serendipityQuickSearchTermField {
width: 100%;
}
.searchterm {
font-style: italic;
}
table {
margin-bottom: 20px;
max-width: 100%;
width: 100%;
}
table > tbody > tr > td,
table > tbody > tr > th,
table > tfoot > tr > td,
table > tfoot > tr > th,
table > thead > tr > td,
table > thead > tr > th {
border-top: 1px solid #ddd;
line-height: 1.42857;
padding: 8px;
vertical-align: top;
}
table > thead > tr > th {
border-bottom: 2px solid #ddd;
vertical-align: bottom;
}
table > caption + thead > tr:first-child > td,
table > caption + thead > tr:first-child > th,
table > colgroup + thead > tr:first-child > td,
table > colgroup + thead > tr:first-child > th,
table > thead:first-child > tr:first-child > td,
table > thead:first-child > tr:first-child > th {
border-top: 0 none;
}
table > tbody + tbody {
border-top: 2px solid #ddd;
}
table table {
background-color: #fff;
}

View File

@ -0,0 +1,27 @@
<ul class="comment-list">
{foreach from=$trackbacks item=trackback}
<li id="comment-c{$trackback.id}" class="comment-list-item">
<a id="c{$trackback.id}"></a>
<div id="div-comment-c{$trackback.id}" class="comment_any{cycle values=" comment_odd, comment_even"} comment_author_{$comment.author|@makeFilename} {if $trackback.author == $blogTitle}serendipity_comment_author_self{/if}">
{if $trackback.avatar}
{$trackback.avatar}
{/if}
<div class="comment-list-item-body">
<h5 class="comment-author-heading">
<span class="comment-author-details">{$trackback.author|@default:$CONST.ANONYMOUS}</span>&nbsp;
<time class="comment-date" datetime="{$trackback.timestamp|@serendipity_html5time}">{if $template_option.comment_time_format =='time'}{$trackback.timestamp|@formatTime:'%b %e. %Y'} {$CONST.AT} {$trackback.timestamp|@formatTime:'%I:%M %p'}{else}{elapsed_time_words from_time=$trackback.timestamp}{/if}</time>
</h5>
<div class="comment-content">
<a href="{$trackback.url|@strip_tags}" {'blank'|@xhtml_target}>{$trackback.title}</a><br />
{$trackback.body|@strip_tags|@escape:all} ...
</div>
<div class="comment-meta">
{if $entry.is_entry_owner}
<a href="{$serendipityBaseURL}comment.php?serendipity[delete]={$trackback.id}&amp;serendipity[entry]={$trackback.entry_id}&amp;serendipity[type]=trackbacks" title="{$CONST.DELETE}"><button class="btn btn-sm btn-default"><i class="fa fa-lg fa-trash-o"></i><span class="sr-only"> {$CONST.DELETE}</span></button></a>
{/if}
</div>
</div>
</div>
</li>
{/foreach}
</ul>