Theme Timeline added

This commit is contained in:
Don Chambers 2016-05-31 21:40:04 -05:00
parent e34e0db1e5
commit 4b39011d69
67 changed files with 7550 additions and 0 deletions

View File

@ -1,6 +1,10 @@
Version 2.1 ()
------------------------------------------------------------------------
* Added new theme "Timeline". Timeline is a fully responsive,
mobile first HTML5/CSS3 theme built on the Bootstrap
framework.
* Add new config variable $serendipity['cors'] to allow to set
Access-Control-Allow-Origin: * headers for sensible places
(RSS feeds), to i.e. allow JavaScript's XMLHTTPRequest to read

View File

@ -0,0 +1,70 @@
<?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_SOCIAL_LINKS', 'Social-Links');
@define('THEME_PAGE_OPTIONS', 'Seiten-Optionen');
@define('THEME_NAVIGATION', 'Navigations-Optionen');
@define('THEME_README','Lies mich');
@define('THEME_IDENTITY','Seiten-Identität');
@define('THEME_EP_YES','<p class="msg_success">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="msg_error">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>This theme displays blog posts on a linear timeline. Each group of month titles can also be displayed or hidden on the timeline.</p><p>This theme uses a right and bottom sidebar. Either, or both sidebars can be disabled by deleting sidebar plugins or relocating sidebar plugins to the sidebar colum labeled "hidden" in plugin configuration.</p><p>This theme can 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_CUSTOM_FIELD_HEADING', 'Freie Felder für Einträge');
@define('THEME_CUSTOM_FIELD_DEFINITION','These optional field(s) are only available when using this theme (timeline). The event plugin serendipity_event_entryproperties (extended properties for entries) must also be installed to use these field(s). The entry image will appear on both the timeline, and at the top of each detailed entry.');
@define('THEME_ENTRY_IMAGE','Entry Image.');
@define('THEME_DEMO_AVAILBLE', 'Eine komplette englische Anleitung zur <a href="http://www.optional-necessity.com/demo/timeline/archives/13-Using-the-Timeline-theme.html">Konfiguration und Benutzung von Timeline</a> findet sich in der <a href="http://www.optional-necessity.com/demo/timeline/">Timeline theme demo</a>.');
//Page Options
@define('THEME_COLORSET', 'Colorset');
@define('THEME_SKINSET', 'Theme skin');
@define('HEADER_IMG','Optional Header Image. Leave blank to use Blog Name.');
@define('HEADER_IMG_DESC', 'Header image recommended size: 150px x 40px.');
@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('DISPLAY_AS_TIMELINE','Timeline-Format verwenden');
@define('DISPLAY_AS_TIMELINE_DESC','Timeline-Format für Blog-Posts verwenden. Falls Nein werden Blog-Posts im üblichen Blog-Format ausgegeben.');
@define('MONTHS_ON_TIMELINE','Show month names on timeline');
@define('MONTHS_ON_TIMELINE_DESC','Month name will appear as a heading on the timeline for each month of entries.');
@define('MONTHS_ON_TIMELINE_FORMAT','Timeline month format');
@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('CATEGORY_RSS_ON_ARCHIVE','Show RSS icon next to each category on archive page');
@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.');
//Navigation
@define('USE_CORENAV', 'Globale Navigation verwenden?');
//Social media
@define('SOCIAL_ICONS_AMOUNT', 'Enter number of social media links');
@define('SOCIAL_NETWORK_SERVICE', 'Select social media service for link');
@define('SOCIAL_ICON_URL', 'URL for social media service link');
@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
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Autorennamen anzeigen');
@define('STATIC_SHOW_DATE_TEXT','Datum anzeigen');
@define('STATIC_SHOW_SIDEBARS_TEXT','Show sidebars?');

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
aqua colorset
*/
/*
* Aqua Color: #27d7e7;
* Aqua Hover Color: #26bac8;
* Darkest color: #11adbc;
*/
a {
color: #27d7e7;
}
a:hover,
a:focus {
color: #26bac8;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-aqua.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-aqua.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #26bac8;
}
.header .navbar-default .navbar-toggle {
border-color: #26bac8;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #27d7e7;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #27d7e7;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #27d7e7;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #27d7e7;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #27d7e7;
}
}
.btn-theme {
background: none repeat scroll 0 0 #27d7e7;
border: 1px solid #27d7e7;
}
.btn-theme:hover {color: #27d7e7;}
.pager li > a,
.pager li > span {
background-color: #27d7e7;
border: 1px solid #27d7e7;
}
.pager li > a:hover,
.pager li > a:focus {
color: #26bac8;
}
.sidebar_plugin h3{
border-bottom: 2px solid #27d7e7;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #26bac8;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #26bac8;
}
.archive-button-months-entries {border: 1px solid #27d7e7;}
.archive-button-months-entries .badge {
background-color: #11adbc; /* much darker */
}
blockquote {
border-left: 5px solid #27d7e7;
}
.timeline_freeTag a {
background-color: #27d7e7;
border: 1px solid #27d7e7;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #26bac8; /*dark */
}
#scrollUp {
background-color: #27d7e7;
border: 1px solid #27d7e7;
}
#scrollUp:hover {
color: #26bac8;
}

View File

@ -0,0 +1,34 @@
{if $categories}
<h3>{$CONST.CATEGORIES}</h3>
<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} archive-category-list-item">
{if $template_option.category_rss_archive == true}<a class="btn btn-sm btn-default btn-theme serendipity_xml_icon" href="{$plugin_category.feedCategoryURL}" title="{$plugin_category.category_name|escape} rss"><i class="fa fa-rss"></i></a>{/if}
<a class="btn btn-sm btn-default btn-theme" 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>
{else}
<p class="alert alert-warning"><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.CATEGORIES_ON_ARCHIVE_DESC}</p>
{/if}

View File

@ -0,0 +1,10 @@
{if $tags}
<h3>{$CONST.EDITOR_TAGS}</h3>
<div class="timeline_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>
{else}
<p class="alert alert-warning"><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.TAGS_ON_ARCHIVE_DESC}</p>
{/if}

View File

@ -0,0 +1,245 @@
<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>
<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">
<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>
{* CUSTOM TO THIS THEME - OPTION TO SHOW/HIDE AUTHOR NAME *}
<div class="clearfix">
<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>
{* CUSTOM TO THIS TEMPLATE - OPTION TO SHOW/HIDE RIGHT SIDEBAR *}
<div class="clearfix">
<div class="entryproperties_access_groups adv_opts_box form_select">
<label class="sp_label" title="{$CONST.STATIC_SHOW_SIDEBARS_TITLE}">{$CONST.STATIC_SHOW_SIDEBARS_TEXT}</label><br />
<input id="sidebars_yes" type="radio" name="serendipity[plugin][custom][show_sidebars]" {if $form_values.custom.show_sidebars != 'false'}checked="checked"{/if}value="true" />
<label for="sidebars_yes">{$CONST.YES}</label>
<input id="sidebars_no" type="radio" name="serendipity[plugin][custom][show_sidebars]" {if $form_values.custom.show_sidebars == 'false'}checked="checked"{/if}value="false" />
<label for="sidebars_no">{$CONST.NO}</label>
</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,136 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
dark blue colorset
*/
/*
* Dark Blue Color: #4765a0;
* Dark Blue Hover Color: #324c80;
* Darkest color: #243c6c;
*/
a {
color: #4765a0;
}
a:hover,
a:focus {
color: #324c80;
}
.footer-socials a:hover,
.footerSocials a:focus,
.copyright a:hover,
.copyright a:focus,
.RightSideBar a:hover,
.RightSideBar a:focus,
.FooterSideBar a:hover,
.FooterSideBar a:focus {
color: #4765a0;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-blue-dark.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-blue-dark.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #324c80;
}
.header .navbar-default .navbar-toggle {
border-color: #324c80;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #4765a0;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #4765a0;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #4765a0;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #4765a0;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #5071b3;
}
}
.btn-theme {
background: none repeat scroll 0 0 #4765a0;
border: 1px solid #4765a0;
}
.btn-theme:hover {color: #4765a0;}
.pager li > a,
.pager li > span {
background-color: #4765a0;
border: 1px solid #4765a0;
}
.pager li > a:hover,
.pager li > a:focus {
color: #324c80;
}
.sidebar_plugin h3{
border-bottom: 2px solid #4765a0;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #324c80;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #324c80;
}
.archive-button-months-entries {border: 1px solid #4765a0;}
.archive-button-months-entries .badge {
background-color: #243c6c; /* much darker */
}
blockquote {
border-left: 5px solid #324c80;
}
.timeline_freeTag a {
background-color: #4765a0;
border: 1px solid #4765a0;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #324c80;
}
#scrollUp {
background-color: #4765a0;
border: 1px solid #4765a0;
}
#scrollUp:hover {
color: #324c80;
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
blue colorset
*/
/*
* Blue Color: #3498db;
* Blue Hover Color: #2980b9;
* Darkest color: #1c6ca1;
*/
a {
color: #3498db;
}
a:hover,
a:focus {
color: #2980b9;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-blue.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-blue.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #2980b9;
}
.header .navbar-default .navbar-toggle {
border-color: #2980b9;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #3498db;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #3498db;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #3498db;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #3498db;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #3498db;
}
}
.btn-theme {
background: none repeat scroll 0 0 #3498db;
border: 1px solid #3498db;
}
.btn-theme:hover {color: #3498db;}
.pager li > a,
.pager li > span {
background-color: #3498db;
border: 1px solid #3498db;
}
.pager li > a:hover,
.pager li > a:focus {
color: #2980b9;
}
.sidebar_plugin h3{
border-bottom: 2px solid #3498db;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #2980b9;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #2980b9;
}
.archive-button-months-entries {border: 1px solid #3498db;}
.archive-button-months-entries .badge {
background-color: #1c6ca1; /* much darker */
}
blockquote {
border-left: 5px solid #2980b9;
}
.timeline_freeTag a {
background-color: #3498db;
border: 1px solid #3498db;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #2980b9;
}
#scrollUp {
background-color: #3498db;
border: 1px solid #3498db;
}
#scrollUp:hover {
color: #2980b9;
}

View File

@ -0,0 +1,867 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
blueviolet
*/
body {
background-color: #262c33;
color: #959da5;
}
.RightSideBar a{
color: #959da5;
}
.wrapper {
background-color: #262c33;
}
.header {
background-color: #2F3744;
border-bottom: 2px solid #36404A;
}
.header-custom.is-fixed {
background-color: rgba(67, 78, 89, 0.9);
}
.subheader {
background-color: #1e2329;
border-bottom: 1px solid #2f3744;
}
.staticpage_subheader {
color: #808080;
}
.header .navbar-default .navbar-toggle .fa {
color: #fff;
}
.header .navbar-default .navbar-nav > li > a {
color: #959da5;
}
.header .navbar-default .navbar-nav > li a {
border-bottom: 1px solid #36404A;
}
.is-fixed .navbar-default .navbar-nav > li > a {
color: #ccc;
}
.modal-content {
background: #313A42;
}
.modal-header {border-bottom: 1px solid #262c33}
.modal-footer {border:0}
button.close {color: inherit; opacity: 0.5;}
#serendipityQuickSearchTermField {
background: #262c33;
border: 1px solid #262c33;
color: #fff;
}
h1, h2, h3, h4, h5, h6 {
color: #ccc;
}
hr {
border-color:#36404A;
}
.archives_summary .post-info {color: #727c87;}
.btn-theme.disabled {
background-color: #434e59;
border: 1px solid #434e59;
color: #888;
}
.timeline:before { /* this is the vertical line */
background-color: #36404A;
}
.timeline > li > .timeline-panel {
border: 1px solid #36404A;
}
.timeline > li > .timeline-panel:before {
border-left: 15px solid #36404A;
border-right: 0 solid #36404A;
}
.timeline > li > .timeline-panel:after {
border-left: 14px solid #36404A;
border-right: 0 solid #36404A;
}
.timeline > li.timeline-month-heading {
color: #ccc;
}
.tldate {
background-color: #313A42;
border: 2px solid #36404A;
color: #adadad;
}
.entry-footer .fa,
.timeline > li > .timeline-badge {
color: #51606e;
}
.timeline .timeline-footer{
border-top: 1px solid #36404A;
}
.timeline .timeline-footer i {
color: #51606e;
}
@media (max-width: 992px) {
.timeline > li > .timeline-panel:before {
border-left: 11px solid #36404A;
}
.timeline > li > .timeline-panel:after {
border-left: 10px solid #36404A;
}
}
@media (max-width: 767px) {
ul.timeline > li > .timeline-panel:before {
border-left: 0;
}
ul.timeline > li > .timeline-panel:after {
border-left: 0;
}
}
.footer-container .footer {
background-color: #1e2329;
}
.footer-container .footer,
.footer-container .footer li,
.footer-container .footer p {
color: #959da5;
}
.FooterSideBar a {
color: #586467;
}
.copyright {
background: #2F3744;
}
.footer-socials a {
color: #51606e;
}
.comment-date {
color: #808080;
font-weight: normal;
}
.serendipity_imageComment_txt {
color: #5b676a;
}
blockquote {
color: #5b676a;
}
.post-info {color: #727c87;}
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;
}
#captcha,
#serendipity_replyTo,
.form-control {
background-color: #222;
border: 1px solid #36404A;
color: #959da5;
}
/* bootstrap classes for darker skin */
.alert-success {
background-color: #62c462;
border-color: #62bd4f;
color: #ffffff;
}
.alert-success hr {
border-top-color: #55b142;
}
.alert-success .alert-link {
color: #e6e6e6;
}
.alert-info {
background-color: #5bc0de;
border-color: #3dced8;
color: #ffffff;
}
.alert-info hr {
border-top-color: #2ac7d2;
}
.alert-info .alert-link {
color: #e6e6e6;
}
.alert-warning {
background-color: #f89406;
border-color: #e96506;
color: #ffffff;
}
.alert-warning hr {
border-top-color: #d05a05;
}
.alert-warning .alert-link {
color: #e6e6e6;
}
.alert-danger {
background-color: #ee5f5b;
border-color: #ed4d63;
color: #ffffff;
}
.alert-danger hr {
border-top-color: #ea364f;
}
.alert-danger .alert-link {
color: #e6e6e6;
}
.panel {
margin-bottom: 20px;
background-color: #2e3338;
border: 1px solid transparent;
border-radius: 4px;
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}
.panel-body {
padding: 15px;
}
.panel-heading {
padding: 10px 15px;
border-bottom: 1px solid transparent;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel-heading > .dropdown .dropdown-toggle {
color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
color: inherit;
}
.panel-footer {
padding: 10px 15px;
background-color: #3e444c;
border-top: 1px solid rgba(0, 0, 0, 0.6);
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
.list-group + .panel-footer {
border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
padding-left: 15px;
padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
border-top-right-radius: 3px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
border-top: 1px solid #1c1e22;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 0;
}
.panel > .table-responsive {
border: 0;
margin-bottom: 0;
}
.panel-group {
margin-bottom: 20px;
}
.panel-group .panel {
margin-bottom: 0;
border-radius: 4px;
}
.panel-group .panel + .panel {
margin-top: 5px;
}
.panel-group .panel-heading {
border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid rgba(0, 0, 0, 0.6);
}
.panel-group .panel-footer {
border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
border-bottom: 1px solid rgba(0, 0, 0, 0.6);
}
.panel-default {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading {
color: #c8c8c8;
background-color: #3e444c;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading .badge {
color: #3e444c;
background-color: #c8c8c8;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-primary {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading {
color: #ffffff;
background-color: #7a8288;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading .badge {
color: #7a8288;
background-color: #ffffff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-success {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading {
color: #ffffff;
background-color: #62c462;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading .badge {
color: #62c462;
background-color: #ffffff;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-info {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading {
color: #ffffff;
background-color: #5bc0de;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading .badge {
color: #5bc0de;
background-color: #ffffff;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-warning {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading {
color: #ffffff;
background-color: #f89406;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading .badge {
color: #f89406;
background-color: #ffffff;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-danger {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading {
color: #ffffff;
background-color: #ee5f5b;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading .badge {
color: #ee5f5b;
background-color: #ffffff;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
table {
background-color: #2e3338;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #7a8288;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #1c1e22;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #1c1e22;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #1c1e22;
}
.table .table {
background-color: #272b30;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #1c1e22;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #1c1e22;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #353a41;
}
.table-hover > tbody > tr:hover {
background-color: #49515a;
}
table col[class*="col-"] {
position: static;
float: none;
display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
float: none;
display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #49515a;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #3e444c;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #62c462;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #4fbd4f;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #5bc0de;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #46b8da;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #f89406;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #df8505;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #ee5f5b;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ec4844;
}
table, .table .success, .table .warning, .table .danger, .table .info {
color: #fff;
}
.table-responsive {
overflow-x: auto;
min-height: 0.01%;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #1c1e22;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
brown colorset
*/
/*
* Brown Color: #9c8061;
* Brown Hover Color: #81674b;
* Darkest color: #6f5539;
*/
a {
color: #9c8061;
}
a:hover,
a:focus {
color: #81674b;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-brown.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-brown.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #81674b;
}
.header .navbar-default .navbar-toggle {
border-color: #81674b;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #9c8061;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #9c8061;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #9c8061;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #9c8061;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #9c8061;
}
}
.btn-theme {
background: none repeat scroll 0 0 #9c8061;
border: 1px solid #9c8061;
}
.btn-theme:hover {color: #9c8061;}
.pager li > a,
.pager li > span {
background-color: #9c8061;
border: 1px solid #9c8061;
}
.pager li > a:hover,
.pager li > a:focus {
color: #81674b;
}
.sidebar_plugin h3{
border-bottom: 2px solid #9c8061;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #81674b;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #81674b;
}
.archive-button-months-entries {border: 1px solid #9c8061;}
.archive-button-months-entries .badge {
background-color: #6f5539; /* much darker */
}
blockquote {
border-left: 5px solid #81674b;
}
.timeline_freeTag a {
background-color: #9c8061;
border: 1px solid #9c8061;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #81674b;
}
#scrollUp {
background-color: #9c8061;
border: 1px solid #9c8061;
}
#scrollUp:hover {
color: #81674b;
}

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">{$CONST.COMMENTS_WILL_BE_MODERATED}</p>
{/if}
<div class="form-group">
<input id="serendipity_submit" name="serendipity[submit]" class="btn btn-sm btn-default btn-theme" type="submit" value="{$CONST.SUBMIT_COMMENT}">
<input id="serendipity_preview" name="serendipity[preview]" class="btn btn-sm btn-default btn-theme" 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 btn-theme" 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 btn-theme" 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 btn-theme" 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,409 @@
<?php
if (IN_serendipity !== true) {
die ("Don't hack!");
}
@serendipity_plugin_api::load_language(dirname(__FILE__));
$serendipity['smarty']->assign(array('currpage' => "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
$serendipity['smarty']->assign('archiveURL', serendipity_rewriteURL(PATH_ARCHIVE));
if ($serendipity['GET']['adminModule'] == 'templates' || $serendipity['POST']['adminModule'] == 'templates' || $serendipity['GET']['adminAction'] == 'cattemplate') {
$css_files = glob(dirname(__FILE__) . '/*_style.css');
foreach($css_files AS $css_file) {
$css_file = str_replace('_style.css', '', basename($css_file));
if (!isset($colorsets[$css_file])) {
$colorsets[$css_file] = $css_file;
}
}
}
if ($serendipity['GET']['adminModule'] == 'templates' || $serendipity['POST']['adminModule'] == 'templates' || $serendipity['GET']['adminAction'] == 'cattemplate') {
$skin_files = glob(dirname(__FILE__) . '/*_skin.css');
$skinsets[$skin_file] = 'light'; // light is default, but light_skin.css does not exist as light styles are written into style.css
foreach($skin_files AS $skin_file) {
$skin_file = str_replace('_skin.css', '', basename($skin_file));
if (!isset($skinsets[$skin_file])) {
$skinsets[$skin_file] = $skin_file;
}
}
}
// 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());
}
// Used to determine if entry image begins with <iframe,<embed,<object. See entries.tpl
function is_in_string($string, $search) {
$array = explode(',', $search);
foreach($array AS $idx => $searchval) {
if (strpos($string, $searchval) === 0) {
return true;
}
}
return false;
}
$serendipity['smarty']->registerPlugin('modifier', 'is_in_string', 'is_in_string');
if (class_exists('serendipity_event_entryproperties')) {
$ep_msg=THEME_EP_YES;
} else {
$ep_msg=THEME_EP_NO;
}
$template_config = array(
array(
'var' => 'sidebars',
'type' => 'hidden',
'value' => 'right,footer,hide',
),
array(
'var' => 'theme_instructions',
'type' => 'content',
'default' => '<p>' . THEME_DEMO_AVAILABLE . '</p>' . $ep_msg . THEME_INSTRUCTIONS . '<p>' . CATEGORIES_ON_ARCHIVE_DESC . '</p><p>' . TAGS_ON_ARCHIVE_DESC . '</p>',
),
array(
'var' => 'use_corenav',
'name' => USE_CORENAV,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'colorset',
'name' => THEME_COLORSET,
'type' => 'select',
'default' => 'green',
'select_values' => $colorsets
),
array(
'var' => 'skinset',
'name' => THEME_SKINSET,
'type' => 'select',
'default' => 'light',
'select_values' => $skinsets
),
array(
'var' => 'header_img',
'name' => HEADER_IMG,
'description' => HEADER_IMG_DESC,
'type' => 'media',
'default' => serendipity_getTemplateFile('header.jpg', 'serendipityHTTPPath', true)
),
array(
'var' => 'subheader_img',
'name' => SUBHEADER_IMG,
'description' => SUBHEADER_IMG_DESC,
'type' => 'media',
'default' => serendipity_getTemplateFile('subheader.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' => 'display_as_timeline',
'name' => DISPLAY_AS_TIMELINE,
'description' => DISPLAY_AS_TIMELINE_DESC,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'months_on_timeline',
'name' => MONTHS_ON_TIMELINE,
'description' => MONTHS_ON_TIMELINE_DESC,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'months_on_timeline_format',
'name' => MONTHS_ON_TIMELINE_FORMAT . ' (http://php.net/strftime)',
'type' => 'string',
'default' => '%B, %Y',
),
array(
'var' => 'categories_on_archive',
'name' => CATEGORIES_ON_ARCHIVE,
'description' => CATEGORIES_ON_ARCHIVE_DESC,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'category_rss_archive',
'name' => CATEGORY_RSS_ON_ARCHIVE,
'type' => 'boolean',
'default' => true,
), array(
'var' => 'tags_on_archive',
'name' => TAGS_ON_ARCHIVE,
'description' => TAGS_ON_ARCHIVE_DESC,
'type' => 'boolean',
'default' => true,
),
array(
'var' => 'copyright',
'name' => COPYRIGHT,
'type' => 'string',
'default' => 'Copyright &copy; ' . $serendipity['blogTitle'] . ' ' . date(Y) . '. <a href="#">Link 1</a> | <a href="#">Link 2</a> | <a href="' . $serendipity['baseURL'] . 'serendipity_admin.php">Login</a>',
),
array(
'var' => 'social_icons_amount',
'name' => SOCIAL_ICONS_AMOUNT,
'type' => 'string',
'default' => '2',
),
);
// register footer sidebar with smarty
$FooterSidebarElements = serendipity_plugin_api::count_plugins('footer');
$serendipity['smarty']->assign_by_ref('FooterSidebarElements', $FooterSidebarElements);
//$template_global_config = array('navigation' => true);
//$template_loaded_config = serendipity_loadThemeOptions($template_config, $serendipity['smarty_vars']['template_option'], true);
//$serendipity['template_loaded_config'][$serendipity['template']] = $template_loaded_config; // copy into global scope for extended plugin API usage
//serendipity_loadGlobalThemeOptions($template_config, $template_loaded_config, $template_global_config);
$template_global_config = array('navigation' => true);
$serendipity['template_loaded_config'] = $template_loaded_config = serendipity_loadThemeOptions($template_config, $serendipity['smarty_vars']['template_option'], true);
serendipity_loadGlobalThemeOptions($template_config, $template_loaded_config, $template_global_config);
// $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);
// if number of icons has changed, show new count
if(isset($_POST['serendipity']['template']['social_icons_amount']) && serendipity_userLoggedIn() && serendipity_checkPermission('adminTemplates')) {
$temp_post=$_POST['serendipity']['template']['social_icons_amount'];
if(is_numeric($temp_post)) {
$template_loaded_config['social_icons_amount'] =$temp_post;
}
}
$socialicons = array();
for ($i = 0; $i < $template_loaded_config['social_icons_amount']; $i++) {
$template_config[] = array(
'var' => 'social_icon' . $i . 'service',
'name' => SOCIAL_NETWORK_SERVICE . ' #' .($i+1),
'type' => 'select',
'default' => 'RSS',
'select_values' => array('Amazon' => 'Amazon',
'Digg' => 'Digg',
'Dribbble' => 'Dribbble',
'Dropbox' => 'Dropbox',
'Facebook' => 'Facebook',
'Flickr' => 'Flickr',
'Github' => 'Github',
'Google' => 'Google',
'Google Plus' => 'Google Plus',
'Instagram' => 'Instagram',
'LastFM' => 'LastFM',
'Linkedin' => 'Linkedin',
'Paypal' => 'Paypal',
'Pinterest' => 'Pinterest',
'RSS' => 'RSS',
'Skype' => 'Skype',
'Reddit' => 'Reddit',
'Stumbleupon' => 'Stumbleupon',
'Tumblr' => 'Tumblr',
'Twitter' => 'Twitter',
'Vimeo' => 'Vimeo',
'Vine' => 'Vine',
'Xing' => 'Xing',
'YouTube' => 'YouTube')
);
$template_config[] = array(
'var' => 'social_icon' . $i . 'url',
'name' => SOCIAL_ICON_URL . ' #' .($i+1),
'type' => 'string',
'default' => '#',
);
$socialicons[] = array(
'service' => $template_loaded_config['social_icon' . $i . 'service'],
'url' => $template_loaded_config['social_icon' . $i . 'url'],
);
}
$serendipity['smarty']->assign_by_ref('socialicons', $socialicons);
function getIcon($service) {
$icons = array('Amazon' => 'fa-amazon', 'Digg' => 'fa-digg', 'Dribbble' => 'fa-dribbble', 'Dropbox' => 'fa-dropbox', 'Facebook' => 'fa-facebook', 'Flickr' => 'fa-flickr', 'Github' => 'fa-github', 'Google' =>'fa-google', 'Google Plus' => 'fa-google-plus', 'Instagram' => 'fa-instagram', 'LastFM' => 'fa-lastfm', 'Linkedin' => 'fa-linkedin', 'Paypal' => 'fa-paypal', 'Pinterest' => 'fa-pinterest', 'RSS' => 'fa-rss', 'Skype' => 'fa-skype', 'Reddit' => 'fa-reddit', 'Stumbleupon' => 'fa-stumbleupon', 'Tumblr' => 'fa-tumblr', 'Twitter' => 'fa-twitter', 'Vimeo' => 'fa-vimeo', 'Vine' => 'fa-vine', 'Xing' => 'fa-xing', 'YouTube' => 'fa-youtube',);
return $icons[$service];
}
$serendipity['smarty']->register_function('service_icon', 'getServiceIcon');
function getServiceIcon ($params, &$smarty) {
return getIcon($params['from_service']);
}
$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');
}
$sociallinks_collapse = array('social_icons_amount');
for ($i = 0; $i < $template_loaded_config['social_icons_amount']; $i++) {
array_push($sociallinks_collapse, 'social_icon' . $i . 'service' ,'social_icon' . $i . 'url');
}
$template_config_groups = array(
THEME_README => array('theme_instructions'),
THEME_IDENTITY => array('sidebars', 'header_img', 'subheader_img', 'colorset', 'skinset', 'copyright'),
THEME_PAGE_OPTIONS => array('date_format', 'comment_time_format', 'display_as_timeline', 'months_on_timeline', 'months_on_timeline_format', 'categories_on_archive', 'category_rss_archive', 'tags_on_archive'),
THEME_NAVIGATION => $navlinks_collapse,
THEME_SOCIAL_LINKS => $sociallinks_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
$timeline_image_key = 'timeline_image';
// Check what our special key is set to (checks both POST data as well as the actual data)
$is_timeline_image = entry_option_get_value ($timeline_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 ' <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_' . $timeline_image_key . '">';
echo ' <label for="' . $timeline_image_key . '">' . THEME_ENTRY_IMAGE. '</label>';
echo ' <textarea data-configitem="' . $timeline_image_key . '" name="serendipity[properties][' . $timeline_image_key . ']" class="change_preview" id="prop' . $timeline_image_key . '">' . $is_timeline_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="' . $timeline_image_key . '_preview">';
echo ' <figcaption>' . PREVIEW . '</figcaption>';
echo ' <img alt="" src="' . $is_timeline_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('timeline_image', $serendipity['POST']['properties']['timeline_image'], $eventData);
break;
case 'css':
$tfile = dirname(__FILE__) . '/' . $serendipity['template_loaded_config']['skinset'] . '_skin.css';
if ($tfile) {
$tfilecontent = str_replace('img/', 'templates/' . $serendipity['template'] . '/img/', @file_get_contents($tfile));
}
if (!empty($tfilecontent)) {
$eventData .= "/* Skinset styles loaded via theme config */ \n\n" . $tfilecontent . "\n\n";
$tfilecontent = ''; // so as not to have content in next condition since reusing var.
}
$tfile = dirname(__FILE__) . '/' . $serendipity['template_loaded_config']['colorset'] . '_style.css';
if ($tfile) {
$tfilecontent = str_replace('img/', 'templates/' . $serendipity['template'] . '/img/', @file_get_contents($tfile));
}
if (!empty($tfilecontent)) {
$eventData .= "/* Colorset styles loaded via theme config */ \n\n" . $tfilecontent . "\n\n";
}
break;
}
}

View File

@ -0,0 +1,111 @@
{if $searchresult_tooShort || $searchresult_noEntries}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-warning">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.CLOSE}</span></button>
<h3 class="panel-title">{$CONST.SEARCH}</h3>
</div>
<div class="panel-body">
<p><span class="fa-stack text-warning" aria-hidden="true"><i class="fa fa-frown-o fa-2x"></i></span> {$content_message}</p>
<div class="input-group" style="width:100%; margin-bottom: 20px;">{* REMOVE INLINE STYLES *}
<form id="searchform" class="input-group" action="{$serendipityHTTPPath}{$serendipityIndexFile}" method="get">
<input type="hidden" name="serendipity[action]" value="search" />
<label for="serendipityQuickSearchTermFieldBox" class="sr-only">{$CONST.QUICKSEARCH}</label>
<input class="form-control" alt="{$CONST.SEARCH_SITE}" type="text" id="serendipityQuickSearchTermFieldBox" name="serendipity[searchTerm]" value="{$CONST.SEARCH}..." onfocus="if(this.value=='{$CONST.SEARCH}...')value=''" onblur="if(this.value=='')value='{$CONST.SEARCH}...';" />
<span class="input-group-btn">
<input class="btn btn-sm btn-default btn-theme quicksearch_submit" type="submit" value="{$CONST.GO}" alt="{$CONST.SEARCH_SITE}" name="serendipity[searchButton]" title="{$CONST.SEARCH}" />
</span>
<div id="LSResult" style="display: none;"><div id="LSShadow"></div></div>
</form>
</div>
{serendipity_hookPlugin hook="quicksearch_plugin" hookAll="true"}
</div>
</div>
</div>
</div>
{elseif $searchresult_error}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-danger">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.CLOSE}</span></button>
<h3 class="panel-title">{$CONST.SEARCH}</h3>
</div>
<div class="panel-body">
<p><span class="fa-stack text-danger" 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}</p>
<div class="input-group" style="width:100%; margin-bottom: 20px;">{* REMOVE INLINE STYLES *}
<form id="searchform" class="input-group" action="{$serendipityHTTPPath}{$serendipityIndexFile}" method="get">
<input type="hidden" name="serendipity[action]" value="search" />
<label for="serendipityQuickSearchTermFieldBox" class="sr-only">{$CONST.QUICKSEARCH}</label>
<input class="form-control" alt="{$CONST.SEARCH_SITE}" type="text" id="serendipityQuickSearchTermFieldBox" name="serendipity[searchTerm]" value="{$CONST.SEARCH}..." onfocus="if(this.value=='{$CONST.SEARCH}...')value=''" onblur="if(this.value=='')value='{$CONST.SEARCH}...';" />
<span class="input-group-btn">
<input class="btn btn-sm btn-default btn-theme quicksearch_submit" type="submit" value="{$CONST.GO}" alt="{$CONST.SEARCH_SITE}" name="serendipity[searchButton]" title="{$CONST.SEARCH}" />
</span>
<div id="LSResult" style="display: none;"><div id="LSShadow"></div></div>
</form>
</div>
{serendipity_hookPlugin hook="quicksearch_plugin" hookAll="true"}
</div>
</div>
</div>
</div>
{elseif $searchresult_results}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-success">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.CLOSE}</span></button>
<h3 class="panel-title">{$CONST.SEARCH}</h3>
</div>
<div class="panel-body">
<span class="fa-stack text-success" aria-hidden="true"></i><i class="fa fa-smile-o fa-2x"></i></span> {$content_message}
</div>
</div>
</div>
</div>
{elseif $subscribe_confirm_error}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-danger">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.ERROR}</span></button>
<h3 class="panel-title">{$CONST.ERROR}</h3>
</div>
<div class="panel-body">
<span class="fa-stack text-danger" 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>
</div>
</div>
</div>
{elseif $subscribe_confirm_success}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-success">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.CLOSE}</span></button>
<h3 class="panel-title">{$CONST.SUCCESS}</h3>
</div>
<div class="panel-body">
<span class="fa-stack text-success" aria-hidden="true"></i><i class="fa fa-smile-o fa-2x"></i></span> {$content_message}
</div>
</div>
</div>
</div>
{elseif $content_message}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div class="alert alert-info alert-dismissible fade in" role="alert">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span></button>
<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></span> {$content_message}
</div>
</div>
</div>
{/if}
{$ENTRIES}
{$ARCHIVES}

View File

@ -0,0 +1,861 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
dark skin
*/
body {
background-color: #252525;
color: #999;
}
.RightSideBar a{
color: #999;
}
.wrapper {
background-color: #252525;
}
.header {
background-color: #222;
border-bottom: 2px solid #333;
}
.header-custom.is-fixed {
background-color: rgba(83, 83, 83, 0.9);
}
.subheader {
background-color: #1c1c1c;
border-bottom: 1px solid #252525;
}
.staticpage_subheader {
color: #808080;
}
.header .navbar-default .navbar-toggle .fa { /* navbar toggle icon */
color: #fff;
}
.header .navbar-default .navbar-nav > li > a { /* top navbar items */
color: #999;
}
.header .navbar-default .navbar-nav > li a {
border-bottom: 1px solid #383838;
}
.is-fixed .navbar-default .navbar-nav > li > a { /* top navbar items when scrolling up */
color: #ccc;
}
.modal-content {
background: #444444;
}
.modal-header {border-bottom: 1px solid #252525}
.modal-footer {border:0}
.modal-dialog button.close {color: inherit; opacity: 0.5;}
#serendipityQuickSearchTermField {
background: #252525;
border: 1px solid #252525;
color: #fff;
}
h1, h2, h3, h4, h5, h6 {
color: #ccc;
}
hr {
border-color:#383838;
}
.post-info,
.archives_summary .post-info {color: #777;}
.btn-theme.disabled {
background-color: #535353;
border: 1px solid #535353;
color: #888;
}
.timeline:before { /* this is the vertical line */
background-color: #383838;
}
.timeline > li > .timeline-panel {
border: 1px solid #383838;
}
.timeline > li > .timeline-panel:before {
border-left: 15px solid #383838;
border-right: 0 solid #383838;
}
.timeline > li > .timeline-panel:after {
border-left: 14px solid #383838;
border-right: 0 solid #383838;
}
.timeline > li.timeline-month-heading {
color: #ccc;
}
.tldate {
background-color: #444;
border: 2px solid #383838;
color: #adadad;
}
.entry-footer .fa,
.timeline > li > .timeline-badge {
color: #777;
}
.timeline .timeline-footer{
border-top: 1px solid #383838;
}
.timeline .timeline-footer i {
color: #777;
}
@media (max-width: 992px) {
.timeline > li > .timeline-panel:before {
border-left: 11px solid #383838;
}
.timeline > li > .timeline-panel:after {
border-left: 10px solid #383838;
}
}
@media (max-width: 767px) {
ul.timeline > li > .timeline-panel:before {
border-left: 0;
}
ul.timeline > li > .timeline-panel:after {
border-left: 0;
}
}
.footer-container .footer {
background-color: #1c1c1c;
}
.footer-container .footer,
.footer-container .footer li,
.footer-container .footer p {
color: #999;
}
.FooterSideBar a {
color: #555;
}
.copyright {
background: #222;
}
.footer-socials a {
color: #777;
}
.comment-date {
color: #808080;
font-weight: normal;
}
.serendipity_imageComment_txt {
color: #555555;
}
blockquote {
color: #555555;
}
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;
}
#captcha,
#serendipity_replyTo,
.form-control {
background-color: #222;
border: 1px solid #383838;
color: #999;
}
/* bootstrap classes for darker skin */
.alert-success {
background-color: #62c462;
border-color: #62bd4f;
color: #ffffff;
}
.alert-success hr {
border-top-color: #55b142;
}
.alert-success .alert-link {
color: #e6e6e6;
}
.alert-info {
background-color: #5bc0de;
border-color: #3dced8;
color: #ffffff;
}
.alert-info hr {
border-top-color: #2ac7d2;
}
.alert-info .alert-link {
color: #e6e6e6;
}
.alert-warning {
background-color: #f89406;
border-color: #e96506;
color: #ffffff;
}
.alert-warning hr {
border-top-color: #d05a05;
}
.alert-warning .alert-link {
color: #e6e6e6;
}
.alert-danger {
background-color: #ee5f5b;
border-color: #ed4d63;
color: #ffffff;
}
.alert-danger hr {
border-top-color: #ea364f;
}
.alert-danger .alert-link {
color: #e6e6e6;
}
.panel {
margin-bottom: 20px;
background-color: #2e3338;
border: 1px solid transparent;
border-radius: 4px;
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}
.panel-body {
padding: 15px;
}
.panel-heading {
padding: 10px 15px;
border-bottom: 1px solid transparent;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel-heading > .dropdown .dropdown-toggle {
color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
color: inherit;
}
.panel-footer {
padding: 10px 15px;
background-color: #3e444c;
border-top: 1px solid rgba(0, 0, 0, 0.6);
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
.list-group + .panel-footer {
border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
padding-left: 15px;
padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
border-top-right-radius: 3px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
border-top: 1px solid #1c1e22;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 0;
}
.panel > .table-responsive {
border: 0;
margin-bottom: 0;
}
.panel-group {
margin-bottom: 20px;
}
.panel-group .panel {
margin-bottom: 0;
border-radius: 4px;
}
.panel-group .panel + .panel {
margin-top: 5px;
}
.panel-group .panel-heading {
border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid rgba(0, 0, 0, 0.6);
}
.panel-group .panel-footer {
border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
border-bottom: 1px solid rgba(0, 0, 0, 0.6);
}
.panel-default {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading {
color: #c8c8c8;
background-color: #3e444c;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-default > .panel-heading .badge {
color: #3e444c;
background-color: #c8c8c8;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-primary {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading {
color: #ffffff;
background-color: #7a8288;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-primary > .panel-heading .badge {
color: #7a8288;
background-color: #ffffff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-success {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading {
color: #ffffff;
background-color: #62c462;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-success > .panel-heading .badge {
color: #62c462;
background-color: #ffffff;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-info {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading {
color: #ffffff;
background-color: #5bc0de;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-info > .panel-heading .badge {
color: #5bc0de;
background-color: #ffffff;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-warning {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading {
color: #ffffff;
background-color: #f89406;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-warning > .panel-heading .badge {
color: #f89406;
background-color: #ffffff;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
.panel-danger {
border-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading {
color: #ffffff;
background-color: #ee5f5b;
border-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: rgba(0, 0, 0, 0.6);
}
.panel-danger > .panel-heading .badge {
color: #ee5f5b;
background-color: #ffffff;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: rgba(0, 0, 0, 0.6);
}
table {
background-color: #2e3338;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #7a8288;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #1c1e22;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #1c1e22;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #1c1e22;
}
.table .table {
background-color: #272b30;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #1c1e22;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #1c1e22;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #353a41;
}
.table-hover > tbody > tr:hover {
background-color: #49515a;
}
table col[class*="col-"] {
position: static;
float: none;
display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
float: none;
display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #49515a;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #3e444c;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #62c462;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #4fbd4f;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #5bc0de;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #46b8da;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #f89406;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #df8505;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #ee5f5b;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ec4844;
}
table, .table .success, .table .warning, .table .danger, .table .info {
color: #fff;
}
.table-responsive {
overflow-x: auto;
min-height: 0.01%;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #1c1e22;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}

View File

@ -0,0 +1,324 @@
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
{if $template_option.display_as_timeline and $entries and !$is_single_entry and not $entry.is_extended and not $is_preview}{* THIS IS OUR FRONTPAGE SCENARIO - OPEN TIMELINE*}
<ul class="timeline">
{assign var="prevmonth" value=''}
{/if}
{foreach from=$entries item="dategroup" name="entrytop"}
{foreach from=$dategroup.entries item="entry"}
{assign var="entry" value=$entry scope="parent"}
{if !$is_single_entry and not $entry.is_extended and not $is_preview}{* THIS IS OUR FRONTPAGE SCENARIO *}
{if $template_option.display_as_timeline}
{if $template_option.months_on_timeline == true}
{assign var="curmonth" value=$entry.timestamp|@formatTime:"%B"}
{if $prevmonth != $curmonth}
<li class="timeline-month-heading"><div class="tldate">{$entry.timestamp|@formatTime:$template_option.months_on_timeline_format}</div></li>
{assign var="timelinetmargin" value="timeline-no-top-margin"}
{else}
{if $timelinetmargin =="timeline-top-margin"}{assign var="timelinetmargin" value="timeline-no-top-margin"}{else}{assign var="timelinetmargin" value="timeline-top-margin"}{/if}
{/if}
<li class="{cycle values='left,timeline-inverted'} {$timelinetmargin}">
{else}
<li class="{cycle values='left,timeline-inverted timeline-top-margin'}">
{/if}
<div class="timeline-badge"><i class="fa fa-dot-circle-o" aria-hidden="true"></i></div>
<div class="timeline-panel">
<div class="timeline-heading">
{if $entry.properties.timeline_image|is_in_string:'<iframe,<embed,<object'}{* we assume this is a video, just emit the contents of the var *}
{$entry.properties.timeline_image}
{else}
<a href="{$entry.link}" title="{$entry.title}"><img class="img-responsive" {if $entry.properties.timeline_image}src="{$entry.properties.timeline_image}"{else}src="{serendipity_getFile file='img/image_unavailable.jpg'}"{/if} alt=""/></a>
{/if}
</div>
<div class="timeline-body">
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
{$entry.body}
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
<p class="read_more"><a class="btn btn-md btn-default btn-readmore btn-theme clearfix" href="{$entry.link}#extended">{$CONST.READ_MORE} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></p>
{/if}
</div>
<div class="timeline-footer">
<span class="timeline-footer-date"><i class="fa fa-clock-o"></i><time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time></span>
<span class="timeline-footer-comments"><i class="fa {if $entry.comments == 0}fa-comment-o{elseif $entry.comments == 1}fa-comment{else}fa-comments-o{/if}" aria-hidden="true"></i> <a href="{$entry.link}#comments">{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}</a></span>
</div>
</div>
</li>
{assign var="prevmonth" value=$entry.timestamp|@formatTime:"%B"}
{else}{* not using timeline - use blog format instead *}
{if $entry.body || $entry.properties.timeline_image}
<div class="row each-blogstyle-entry">
<div class="col-md-5 blogstyle-post-thumb">
{if $entry.properties.timeline_image|is_in_string:'<iframe,<embed,<object'}{* we assume this is a video, just emit the contents of the var *}
<div>{$entry.properties.timeline_image}</div>
{else}
<a href="{$entry.link}" title="{$entry.title}"><img class="img-responsive" {if $entry.properties.timeline_image}src="{$entry.properties.timeline_image}"{else}src="{serendipity_getFile file='img/image_unavailable.jpg'}"{/if} alt=""/></a>
{/if}
</div>
<div class="col-md-7 blogstyle-post-body">
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
<p class="post-info"><span class="sr-only">{$CONST.POSTED_BY}</span>
<span class="sr-only"> {$CONST.ON}</span><span class="entry-timestamp"><i class="fa fa-clock-o" aria-hidden="true"></i><time datetime="{$entry.timestamp|serendipity_html5time}">{$entry.timestamp|formatTime:$template_option.date_format}</time></span>
<span class="entry-comment-link"><i class="fa {if $entry.comments == 0}fa-comment-o{elseif $entry.comments == 1}fa-comment{else}fa-comments-o{/if}" aria-hidden="true"></i><a href="{$entry.link}#comments">{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}</a></span>
</p>
{$entry.body}
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
<p class="read_more"><a class="btn btn-md btn-default btn-readmore btn-theme clearfix" href="{$entry.link}#extended">{$CONST.READ_MORE} <i class="fa fa-arrow-right" aria-hidden="true"></i></a></p>
{/if}
</div>
</div>
<hr>
{/if}
{/if}
{else} {* THIS IS A DETAILED ENTRY VIEW *}
<section id="entry">
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
<p class="post-info clearfix">
<span class="sr-only">{$CONST.POSTED_BY}</span>
<span class="entry-author-link"><i class ="fa fa-user" aria-hidden="true"></i><a href="{$entry.link_author}">{$entry.author}</a></span>
<span class="sr-only"> {$CONST.ON}</span><span class="entry-timestamp"><i class="fa fa-clock-o" aria-hidden="true"></i><time datetime="{$entry.timestamp|serendipity_html5time}">{$entry.timestamp|formatTime:$template_option.date_format}</time></span>
<span class="entry-comment-link"><i class="fa {if $entry.comments == 0}fa-comment-o{elseif $entry.comments == 1}fa-comment{else}fa-comments-o{/if}" aria-hidden="true"></i><a href="{$entry.link}#comments">{if $entry.comments == 0}{$CONST.NO_COMMENTS}{else}{$entry.comments} {$entry.label_comments}{/if}</a></span>
{if $entry.is_entry_owner and not $is_preview}<span class="entry-edit-link"><i class="fa fa-lg fa-edit"></i><a href="{$entry.link_edit}" title="{$CONST.EDIT_ENTRY}">{$CONST.EDIT_ENTRY}</a></span>{/if}
</p>
{if $is_preview}
{append var='entry' value=$smarty.session.save_entry_POST.properties index='properties'}{* gives us access to entry properties in preview *}
{/if}
{if $entry.properties.timeline_image}
{if $entry.properties.timeline_image|is_in_string:'<iframe,<embed,<object'}{* we assume this is a video, just emit the contents of the var *}
{$entry.properties.timeline_image}
{else}
{serendipity_getImageSize file=$entry.properties.timeline_image assign="img_size"}
<img class="{if $img_size[0]>=800}image-full-width{else}serendipity_image_left{/if}" src="{$entry.properties.timeline_image}" width="{$img_size[0]}" height="{$img_size[1]}" alt=""/>
{/if}
{/if}
<div class="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}
</div>
{if $entry.is_extended}
<div id="extended" class="serendipity_extended_body clearfix">
{$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 btn-theme" 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="timeline_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="timeline_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}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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.DATA_UNSUBSCRIBED|@sprintf:$CONST.UNSUBSCRIBE_OK}</p>
</div>
</div>
{/if}
{if $CONST.DATA_TRACKBACK_DELETED}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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.DATA_TRACKBACK_DELETED|@sprintf:$CONST.TRACKBACK_DELETED}</p>
</div>
</div>
{/if}
{if $CONST.DATA_TRACKBACK_APPROVED}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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.DATA_TRACKBACK_APPROVED|@sprintf:$CONST.TRACKBACK_APPROVED}</p>
</div>
</div>
{/if}
{if $CONST.DATA_COMMENT_DELETED}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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.DATA_COMMENT_DELETED|@sprintf:$CONST.COMMENT_DELETED}</p>
</div>
</div>
{/if}
{if $CONST.DATA_COMMENT_APPROVED}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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.DATA_COMMENT_APPROVED|@sprintf:$CONST.COMMENT_APPROVED}</p>
</div>
</div>
{/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 btn-theme" 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 btn-theme" 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 btn-theme">{$CONST.COMMENTS_DISABLE}</button></a>
{else}
<a href="{$entry.link_allow_comments}"><button class="btn btn-sm btn-default btn-theme">{$CONST.COMMENTS_ENABLE}</button></a>
{/if}
</small>
</p>
{/if}
</section>
{foreach from=$comments_messagestack item="message"}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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>
</div>
</div>
{/foreach}
{if $is_comment_added}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<div class="alert alert-success alert-dismissible fade in" role="alert">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span></button>
<span class="fa-stack text-success" aria-hidden="true"><i class="fa fa-smile-o fa-2x"></i></span> {$CONST.COMMENT_ADDED}
</div>
</div>
</div>
{elseif $is_comment_moderate}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<div class="alert alert-warning alert-dismissible fade in" role="alert">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span></button>
<p class="text-success"><span class="fa-stack" aria-hidden="true"><i class="fa fa-smile-o fa-2x"></i></span> {$CONST.COMMENT_ADDED}</p>
<p class="text-warning"><span class="fa-stack" aria-hidden="true"><i class="fa fa-info-circle fa-2x"></i></span> {$CONST.THIS_COMMENT_NEEDS_REVIEW}</p>
</div>
</div>
</div>
{elseif not $entry.allow_comments}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<p class="alert alert-danger text-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.COMMENTS_CLOSED}</p>
</div>
</div>
{else}
<section id="respond" class="serendipity_section_commentform">
<h3>{$CONST.ADD_COMMENT}</h3>
{$COMMENTFORM}
</section>
{/if}
{/if}
{$entry.backend_preview}
{/foreach}
{foreachelse}
{if not $plugin_clean_page}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<p class="alert alert-info noentries"><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>
</div>
</div>
{/if}
{/foreach}
{if $template_option.display_as_timeline and $entries and !$is_single_entry and not $entry.is_extended and not $is_preview}{* THIS IS OUR FRONTPAGE SCENARIO - CLOSE TIMELINE *}
<li class="clearfix" style="float: none;"></li>
</ul>
{/if}
{if $footer_info or $footer_prev_page or $footer_next_page}
<div class='serendipity_pageSummary'>
{if $footer_info}
<p class="summary serendipity_center">{$footer_info}</p>
{/if}
{if $footer_totalPages >1 }
<nav class="pagination">
{assign var="paginationStartPage" value="`$footer_currentPage-3`"}
{if $footer_currentPage+3 > $footer_totalPages}
{assign var="paginationStartPage" value="`$footer_totalPages-4`"}
{/if}
{if $paginationStartPage <= 0}
{assign var="paginationStartPage" value="1"}
{/if}
{if $footer_prev_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><i class="fa fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{/if}
{if $paginationStartPage > 1}
<a class="btn btn-md btn-default btn-theme" href="{'1'|string_format:$footer_pageLink}">1</a>
{/if}
{if $paginationStartPage > 2}
&hellip;
{/if}
{section name=i start=$paginationStartPage loop=$footer_totalPages+1 max=5}
{if $smarty.section.i.index != $footer_currentPage}
<a class="btn btn-md btn-default btn-theme" href="{$smarty.section.i.index|string_format:$footer_pageLink}">{$smarty.section.i.index}</a>
{else}
<span class="thispage btn btn-md btn-default btn-theme disabled">{$smarty.section.i.index}</span>
{/if}
{/section}
{if $smarty.section.i.index < $footer_totalPages}
&hellip;
{/if}
{if $smarty.section.i.index <= $footer_totalPages}
<a class="btn btn-md btn-default btn-theme" href="{$footer_totalPages|string_format:$footer_pageLink}">{$footer_totalPages}</a>
{/if}
{if $footer_next_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><i class="fa fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{/if}
</nav>
{/if}
</div>
{/if}
{serendipity_hookPlugin hook="entries_footer"}

View File

@ -0,0 +1,54 @@
{serendipity_hookPlugin hook="entries_header"}
{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 archive-categories">
{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 archive-tags">
{serendipity_showPlugin class="serendipity_plugin_freetag" template="archive_freetag.tpl"}
</section>
{/if}
</div>
{/if}
<div class="row">
<section class="col-lg-12 archive-archive_history">
{if $template_option.categories_on_archive || $template_option.tags_on_archive}
<h3>{if $category}{$category_info.category_name} - {/if}{$CONST.ARCHIVES}</h3>
{/if}
<ul class="timeline">
{foreach from=$archives item="archive"}
<li class="{cycle values='left,timeline-inverted timeline-top-margin'}">
<div class="timeline-badge"><i class="fa fa-dot-circle-o" aria-hidden="true"></i></div>
<div class="timeline-panel">
<div class="timeline-heading">
<h4>{$archive.year}</h4>
</div>
<div class="timeline-body clearfix">
{foreach from=$archive.months item="month"}
<div class="{if $rightSidebarElements > 0}col-md-4{else}col-md-3{/if} col-xs-6">
<div class="btn-group archive-button">
{if $month.entry_count}
<button type="button" class="btn btn-default btn-theme dropdown-toggle archive-button-months archive-button-months-entries" 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-dot-circle-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 btn-theme disabled dropdown-toggle archive-button-months" data-toggle="dropdown" aria-expanded="false">{$month.date|@formatTime:"%b"}</button>
{/if}
</div>
</div>
{/foreach}
</div>
</div>
</li>
{/foreach}
<li class="clearfix" style="float: none;"></li>
</ul>
</section>
</div>
{serendipity_hookPlugin hook="entries_footer"}

View File

@ -0,0 +1,42 @@
{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">
<h3>{if $category}{$category_info.category_name} - {/if}{$entry_count} {$CONST.TOPICS_OF} {$dateRange.0|@formatTime:"%B, %Y"}</h3>
<div class="archives_summary">
{foreach from=$entries item="sentries" name="archivesummarylist"}
{foreach from=$sentries.entries item="entry"}
{if $entry.body || $entry.extended || $entry.properties.timeline_image}
<div class="row each-archive-entry">
<div class="col-md-2 archive-post-thumb">
{if $entry.properties.timeline_image|is_in_string:'<iframe,<embed,<object'}{* we assume this is a video, just emit the contents of the var *}
<div>{$entry.properties.timeline_image}</div>
{else}
<a href="{$entry.link}" title="{$entry.title}"><img class="img-thumbnail" {if $entry.properties.timeline_image}src="{$entry.properties.timeline_image}"{else}src="{serendipity_getFile file='img/image_unavailable.jpg'}"{/if} alt=""/></a>
{/if}
</div>
<div class="col-md-10 archive-post-body">
<h4><a href="{$entry.link}">{$entry.title}</a></h4>
<p class="post-info"><span class="sr-only">{$CONST.POSTED_BY}</span>
<span class="sr-only"> {$CONST.ON}</span><span class="entry-timestamp"><i class="fa fa-clock-o" aria-hidden="true"></i><time datetime="{$entry.timestamp|serendipity_html5time}">{$entry.timestamp|formatTime:$template_option.date_format}</time></span>
</p>
{if $entry.body}
{$entry.body|strip_tags|truncate:180:" ..."}
{else}
{$entry.extended|strip_tags|truncate:180:" ..."}
{/if}
</div>
</div>
<hr>
{/if}
{/foreach}
{/foreach}
</div>
</article>
{serendipity_hookPlugin hook="entries_footer"}

View File

@ -0,0 +1,18 @@
{if $is_raw_mode}
<div id="serendipity{$pluginside}FooterBar">
{/if}
{foreach from=$plugindata item=item}
{if $item.class != "serendipity_plugin_quicksearch"}
<div class="{if $FooterSidebarElements == '1'}col-md-12{elseif $FooterSidebarElements == '2'}col-md-6{elseif $FooterSidebarElements == '3' || $FooterSidebarElements == '6' || $FooterSidebarElements == '5'}col-md-4{else}col-md-3{/if}">
<section class="sidebar_plugin clearfix {cycle values="odd,even"} {$item.class}">
{if $item.title != ""}
<h3>{$item.title}</h3>
{/if}
<div class="footerbar_content">{$item.content}</div>
</section>
</div>
{/if}
{/foreach}
{if $is_raw_mode}
</div>
{/if}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
light green colorset
*/
/*
* Light Green Color: #79d5b3;
* Light Green Hover Color: #59b795;
* Darkest color: #42a984;
*/
a {
color: #79d5b3;
}
a:hover,
a:focus {
color: #59b795;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-green-light.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-green-light.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #59b795;
}
.header .navbar-default .navbar-toggle {
border-color: #59b795;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #79d5b3;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #79d5b3;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #79d5b3;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #79d5b3;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #79d5b3;
}
}
.btn-theme {
background: none repeat scroll 0 0 #79d5b3;
border: 1px solid #79d5b3;
}
.btn-theme:hover {color: #79d5b3;}
.pager li > a,
.pager li > span {
background-color: #79d5b3;
border: 1px solid #79d5b3;
}
.pager li > a:hover,
.pager li > a:focus {
color: #59b795;
}
.sidebar_plugin h3{
border-bottom: 2px solid #79d5b3;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #59b795;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #59b795;
}
.archive-button-months-entries {border: 1px solid #79d5b3;}
.archive-button-months-entries .badge {
background-color: #42a984; /* much darker */
}
blockquote {
border-left: 5px solid #59b795;
}
.timeline_freeTag a {
background-color: #79d5b3;
border: 1px solid #79d5b3;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #59b795;
}
#scrollUp {
background-color: #79d5b3;
border: 1px solid #79d5b3;
}
#scrollUp:hover {
color: #59b795;
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
green colorset
*/
/*
* Green Color: #72c02c;
* Green Hover Color: #57a70f;
* Darkest color: #4b920c;
*/
a {
color: #72c02c;
}
a:hover,
a:focus {
color: #57a70f;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-green.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-green.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #57a70f;
}
.header .navbar-default .navbar-toggle {
border-color: #57a70f;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #72c02c;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #72c02c;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #72c02c;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #72c02c;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #72c02c;
}
}
.btn-theme {
background: none repeat scroll 0 0 #72c02c;
border: 1px solid #72c02c;
}
.btn-theme:hover {color: #72c02c;}
.pager li > a,
.pager li > span {
background-color: #72c02c;
border: 1px solid #72c02c;
}
.pager li > a:hover,
.pager li > a:focus {
color: #57a70f;
}
.sidebar_plugin h3{
border-bottom: 2px solid #72c02c;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #57a70f;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #57a70f;
}
.archive-button-months-entries {border: 1px solid #72c02c;}
.archive-button-months-entries .badge {
background-color: #4b920c; /* much darker */
}
blockquote {
border-left: 5px solid #57a70f;
}
.timeline_freeTag a {
background-color: #72c02c;
border: 1px solid #72c02c;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #57a70f;
}
#scrollUp {
background-color: #72c02c;
border: 1px solid #72c02c;
}
#scrollUp:hover {
color: #57a70f;
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
grey colorset
*/
/*
* Grey Color: #8ba4a5;
* Grey Hover Color: #768b8c;
* Darkest color: #61797a;
*/
a {
color: #8ba4a5;
}
a:hover,
a:focus {
color: #768b8c;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-grey.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-grey.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #768b8c;
}
.header .navbar-default .navbar-toggle {
border-color: #768b8c;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #8ba4a5;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #8ba4a5;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #8ba4a5;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #8ba4a5;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #8ba4a5;
}
}
.btn-theme {
background: none repeat scroll 0 0 #8ba4a5;
border: 1px solid #8ba4a5;
}
.btn-theme:hover {color: #8ba4a5;}
.pager li > a,
.pager li > span {
background-color: #8ba4a5;
border: 1px solid #8ba4a5;
}
.pager li > a:hover,
.pager li > a:focus {
color: #768b8c;
}
.sidebar_plugin h3{
border-bottom: 2px solid #8ba4a5;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #768b8c;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #768b8c;
}
.archive-button-months-entries {border: 1px solid #8ba4a5;}
.archive-button-months-entries .badge {
background-color: #61797a; /* much darker */
}
blockquote {
border-left: 5px solid #768b8c;
}
.timeline_freeTag a {
background-color: #8ba4a5;
border: 1px solid #8ba4a5;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #768b8c;
}
#scrollUp {
background-color: #8ba4a5;
border: 1px solid #8ba4a5;
}
#scrollUp:hover {
color: #768b8c;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

View File

@ -0,0 +1,255 @@
{if $is_embedded != true}
<!DOCTYPE html>
<html lang="{$lang}">
<head>
<meta charset="{$head_charset}">
<title>{$head_title|default:$blogTitle}{if $head_subtitle} | {$head_subtitle}{/if}</title>
<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}">
{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="https://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="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400' rel='stylesheet' type='text/css'>
{serendipity_hookPlugin hook="frontend_header"}
<script src="{$head_link_script}"></script>
{* SUBHEADER IMAGE *}
{if $template_option.subheader_img}
<style type="text/css">.subheader_image {ldelim}background-image: url('{$template_option.subheader_img}');{rdelim}</style>
{/if}
{* ADDTIONAL COLORSET & SKIN STYLESHEETS - INCLUDED SETS ARE LOADED VIA CONFIG.INC.PHP *}
</head>
<body class="{if $template_option.colorset}{$template_option.colorset}-style{else}green-style{/if} {if $template_option.skinset}{$template_option.skinset}-skin{else}light-skin{/if}">
{else}
{serendipity_hookPlugin hook="frontend_header"}
{/if}
{if $is_raw_mode != true}
<div class="wrapper">
<div class="header header-custom">
{if $template_option.use_corenav}
<div class="container container-logonav">
<a class="sr-only sr-only-focusable" href="#content"><span lang="en">Skip to main content</span></a>{* LANG? *}
<div class="navbar navbar-default" role="navigation">
<div> {* this was class="container" *}
{* Brand and toggle get grouped for better mobile display *}
<div class="navbar-header">
{if $template_option.header_img}
<a class="logo" href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}"><img src="{$template_option.header_img}" alt="{$blogTitle} Logo"><h1 class="sr-only">{$blogTitle}</h1></a>
{else}
<a class="navbar-brand" href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}"><h1>{$blogTitle}</h1></a>
{/if}
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
<span class="sr-only">Toggle navigation</span>{* LANG? *}
<span class="fa fa-bars"></span>
</button>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-responsive-collapse">
<ul class="nav navbar-nav navbar-right">{foreach from=$navlinks item="navlink" name="sitenav"}<li><a {if $currpage==$navlink.href}class="navbar_current_page"{/if} href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>{/foreach}<li><a href="#basicModal" data-toggle="modal" data-target="#basicModal" title="{$CONST.SEARCH}"><i class="fa fa-search" aria-hidden="true"></i></a></li></ul>
</div><!--/navbar-collapse-->
</div>
</div>{* End Navbar *}
</div>
{/if}
</div>{* End Header *}
<div class="modal fade" id="basicModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">{* CLEAN THIS UP - UNWANTED CLASSES, ETC *}
<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">
<input type="hidden" name="serendipity[action]" value="search">
<label for="serendipityQuickSearchTermField" class="sr-only">{$CONST.QUICKSEARCH}</label>
<input id="serendipityQuickSearchTermField" class="form-control" name="serendipity[searchTerm]" type="search" value="" placeholder="{$CONST.SEARCH} ...">
<div class="modal-footer">
<input class="btn btn-default btn-theme" 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>
<div class="subheader{if $template_option.subheader_img} subheader_image{/if}">
<div class="container">
<h2 class="pull-left">
{if $view == 'start' || $view == 'entry' || $view == '404' || $view == 'search' || ($head_title =='' && $head_subtitle=='')}{$blogDescription}
{elseif $view == 'categories'}{$CONST.ENTRIES_FOR|sprintf:{$category_info.category_name|escape}}
{elseif $view == 'authors' || $view == 'comments'}{$head_title}
{elseif $staticpage_pagetitle !=''}
{if $staticpage_headline}{$staticpage_headline|escape}
{elseif $staticpage_articleformattitle}{$staticpage_articleformattitle|escape}
{elseif $plugin_contactform_pagetitle}{$plugin_contactform_pagetitle}
{else}{$head_title}{/if}
{elseif $view == 'archives' && $category}{$head_title} - {$head_subtitle}
{elseif $view == 'archive' && $category}{$category_info.category_name} - {$head_subtitle}
{elseif $head_subtitle}{$head_subtitle}
{/if}
</h2>
{if $footer_totalPages >1 && !isset($staticpage_pagetitle)}
<nav class="pagination pull-right">
{assign var="paginationStartPage" value="`$footer_currentPage-3`"}
{if $footer_currentPage+3 > $footer_totalPages}
{assign var="paginationStartPage" value="`$footer_totalPages-4`"}
{/if}
{if $paginationStartPage <= 0}
{assign var="paginationStartPage" value="1"}
{/if}
{if $footer_prev_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.PREVIOUS_PAGE}" href="{$footer_prev_page}"><i class="fa fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.PREVIOUS_PAGE}</span></a>
{/if}
{if $paginationStartPage > 1}
<a class="btn btn-md btn-default btn-theme" href="{'1'|string_format:$footer_pageLink}">1</a>
{/if}
{if $paginationStartPage > 2}
&hellip;
{/if}
{section name=i start=$paginationStartPage loop=$footer_totalPages+1 max=5}
{if $smarty.section.i.index != $footer_currentPage}
<a class="btn btn-md btn-default btn-theme" href="{$smarty.section.i.index|string_format:$footer_pageLink}">{$smarty.section.i.index}</a>
{else}
<span class="thispage btn btn-md btn-default btn-theme disabled">{$smarty.section.i.index}</span>
{/if}
{/section}
{if $smarty.section.i.index < $footer_totalPages}
&hellip;
{/if}
{if $smarty.section.i.index <= $footer_totalPages}
<a class="btn btn-md btn-default btn-theme" href="{$footer_totalPages|string_format:$footer_pageLink}">{$footer_totalPages}</a>
{/if}
{if $footer_next_page}
<a class="btn btn-md btn-default btn-theme" title="{$CONST.NEXT_PAGE}" href="{$footer_next_page}"><i class="fa fa-arrow-right" aria-hidden="true"></i><span class="sr-only">{$CONST.NEXT_PAGE}</span></a>
{/if}
</nav>
{/if}
</div>
</div>{* End subheader *}
{* MAIN CONTENT *}
<div class="container content">
<div class="row">
<main class="{if ($rightSidebarElements > 0 && $staticpage_pagetitle =='') || ($rightSidebarElements > 0 && $staticpage_pagetitle !='' && $staticpage_custom.show_sidebars != 'false')}col-md-9{else}col-md-12{/if} mainpanel">
{if $view=='404'}
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<div id="search-response" class="panel panel-danger">
<div class="panel-heading">
<button type="button" class="close" data-target="#search-block" data-dismiss="alert" aria-label="Close" title="{$CONST.CLOSE}"><span aria-hidden="true">&times;</span><span class="sr-only">{$CONST.CLOSE}</span></button>
<h3 class="panel-title">{$CONST.ERROR}</h3>
</div>
<div class="panel-body">
<p><span class="fa-stack text-danger" 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>
<div class="input-group" style="width:100%; margin-bottom: 20px;">{* REMOVE INLINE STYLES *}
<form id="searchform" class="input-group" action="{$serendipityHTTPPath}{$serendipityIndexFile}" method="get">
<input type="hidden" name="serendipity[action]" value="search" />
<label for="serendipityQuickSearchTermFieldBox" class="sr-only">{$CONST.QUICKSEARCH}</label>
<input class="form-control" alt="{$CONST.SEARCH_SITE}" type="text" id="serendipityQuickSearchTermFieldBox" name="serendipity[searchTerm]" value="{$CONST.SEARCH}..." onfocus="if(this.value=='{$CONST.SEARCH}...')value=''" onblur="if(this.value=='')value='{$CONST.SEARCH}...';" />
<span class="input-group-btn">
<input class="btn btn-sm btn-default btn-theme quicksearch_submit" type="submit" value="{$CONST.GO}" alt="{$CONST.SEARCH_SITE}" name="serendipity[searchButton]" title="{$CONST.SEARCH}" />
</span>
<div id="LSResult" style="display: none;"><div id="LSShadow"></div></div>
</form>
</div>
{serendipity_hookPlugin hook="quicksearch_plugin" hookAll="true"}
</div>
</div>
</div>
</div>
<div id="search-block" class="row">
<div class="col-md-8 col-md-offset-2">
<nav class="text-center">
<button class="btn btn-md btn-default btn-theme" onclick="goBack()" title="{$CONST.BACK}"><i class="fa fa-arrow-left" aria-hidden="true"></i><span class="sr-only">{$CONST.BACK}</span> {$CONST.BACK}</button>
<script>
function goBack() {
window.history.back();
}
</script>
<a class="read_more btn btn-md btn-default btn-theme" href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}"> <i class="fa fa-home" aria-hidden="true"></i> {$CONST.HOMEPAGE}</a>
</nav>
</div>
</div>
{else}
{$CONTENT}
{/if}
</main>
{if ($rightSidebarElements > 0 && $staticpage_pagetitle =='') || ($rightSidebarElements > 0 && $staticpage_pagetitle !='' && $staticpage_custom.show_sidebars != 'false')}
<aside class="col-md-3 RightSideBarContainer">
<div id="serendipityRightSideBar" class="RightSideBar">
{serendipity_printSidebar side="right"}
</div>
</aside>
{/if}
</div>
</div>
<div class="footer-container">
{if $FooterSidebarElements > 0}
<div class="footer">
<div class="container">
<div class="row">
<div id="serendipityFooterSideBar" class="FooterSideBar">
{serendipity_printSidebar side="footer" template="footerbar.tpl"}
</div>
</div>
</div>
</div><!--/footer-->
{/if}
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-md-6">
<p class="copyright-text">{$template_option.copyright}</p>
</div>
<div class="col-md-6">
<ul class="footer-socials list-inline">
{foreach from=$socialicons item="socialicon" name="social_networking"}
<li>
<a href="{$socialicon.url}" title="{$socialicon.service}"><i class="fa fa-lg {service_icon from_service=$socialicon.service}"></i></a>
</li>
{/foreach}
</ul>
</div>
</div>
</div>
</div><!--/copyright-->
</div>
</div>{* wrapper *}
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src={serendipity_getFile file="js/timeline.js"}></script>
<!--[if lt IE 9]>
<script src={serendipity_getFile file="js/respond.js"}></script>
<script src={serendipity_getFile file="js/html5shiv.js"}></script>
<script src={serendipity_getFile file="js/placeholder-IE-fixes.js"}></script>
<![endif]-->
{/if}
{$raw_data}
{serendipity_hookPlugin hook="frontend_footer"}
{if $is_embedded != true}
</body>
</html>
{/if}

View File

@ -0,0 +1,5 @@
Name: Timeline
Author: Don Chambers
Date: 2016-04-20
Require Serendipity: 2.0
Backend: No

322
templates/timeline/js/html5shiv.js vendored Normal file
View File

@ -0,0 +1,322 @@
/**
* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
var version = '3.7.2';
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv';
/** The id for the the documents expando */
var expanID = 0;
/** Cached data for each document */
var expandoData = {};
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
try {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
(document.createElement)('a');
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
} catch(e) {
// assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true;
supportsUnknownElements = true;
}
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Extends the built-in list of html5 elements
* @memberOf html5
* @param {String|Array} newElements whitespace separated list or array of new element names to shiv
* @param {Document} ownerDocument The context document.
*/
function addElements(newElements, ownerDocument) {
var elements = html5.elements;
if(typeof elements != 'string'){
elements = elements.join(' ');
}
if(typeof newElements != 'string'){
newElements = newElements.join(' ');
}
html5.elements = elements +' '+ newElements;
shivDocument(ownerDocument);
}
/**
* Returns the data associated to the given document
* @private
* @param {Document} ownerDocument The document.
* @returns {Object} An object of data.
*/
function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]];
if (!data) {
data = {};
expanID++;
ownerDocument[expando] = expanID;
expandoData[expanID] = data;
}
return data;
}
/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createElement(nodeName);
}
if (!data) {
data = getExpandoData(ownerDocument);
}
var node;
if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else {
node = data.createElem(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
}
/**
* returns a shived DocumentFragment for the given document
* @memberOf html5
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment.
*/
function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createDocumentFragment();
}
data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(),
i = 0,
elems = getElements(),
l = elems.length;
for(;i<l;i++){
clone.createElement(elems[i]);
}
return clone;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document.
*/
function shivMethods(ownerDocument, data) {
if (!data.cache) {
data.cache = {};
data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag();
}
ownerDocument.createElement = function(nodeName) {
//abort shiv
if (!html5.shivMethods) {
return data.createElem(nodeName);
}
return createElement(nodeName, ownerDocument, data);
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
data.createElem(nodeName);
data.frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, data.frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
if (!ownerDocument) {
ownerDocument = document;
}
var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}' +
// hides non-rendered elements
'template{display:none}'
);
}
if (!supportsUnknownElements) {
shivMethods(ownerDocument, data);
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
/**
* current version of html5shiv
*/
'version': version,
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': (options.shivCSS !== false),
/**
* Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5
* @type boolean
*/
'supportsUnknownElements': supportsUnknownElements,
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': (options.shivMethods !== false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument,
//creates a shived element
createElement: createElement,
//creates a shived documentFragment
createDocumentFragment: createDocumentFragment,
//extends list of elements
addElements: addElements
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));

View File

@ -0,0 +1,65 @@
var PlaceholderIEFixes = function () {
return {
//Placeholder IE Fixes
initPlaceholderIEFixes: function () {
if (jQuery.browser.msie && jQuery.browser.version.substr(0, 1) < 9) { // ie7&ie8
jQuery('input[placeholder], textarea[placeholder]').each(function () {
var input = jQuery(this);
var inputCloneTypePass = $('<input type="text">');
var displayCss = input.css('display');
if ( input.val() == '' ) {
if ( input.attr('type') == 'password' ) {
$.each(input.get(0).attributes, function(v,n) {
n = n.nodeName||n.name;
if ( n != 'type' && n != 'name' ) {
v = input.attr(n); // relay on $.fn.attr, it makes some filtering and checks
if(v != undefined && v !== false) {
inputCloneTypePass.attr(n,v);
}
}
});
input.css('display', 'none');
inputCloneTypePass
.appendTo(input.parent())
.val(input.attr('placeholder'))
.focus(function () {
if (inputCloneTypePass.val() == inputCloneTypePass.attr('placeholder')) {
inputCloneTypePass.css('display', 'none');
input.css('display', displayCss);
input.focus();
}
});
}
input.val(input.attr('placeholder'));
}
jQuery(input).focus(function () {
if (input.val() == input.attr('placeholder')) {
input.val('');
}
});
jQuery(input).blur(function () {
if (input.val() == '' || input.val() == input.attr('placeholder')) {
if (input.attr('type') == 'password') {
inputCloneTypePass.css('display', displayCss);
input.css('display', 'none');
}else {
input.val(input.attr('placeholder'));
}
}
});
});
}
}
};
}();

View File

@ -0,0 +1,326 @@
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
window.matchMedia = window.matchMedia || (function(doc, undefined){
var bool,
docElem = doc.documentElement,
refNode = docElem.firstElementChild || docElem.firstChild,
// fakeBody required for <FF4 when executed in <head>
fakeBody = doc.createElement('body'),
div = doc.createElement('div');
div.id = 'mq-test-1';
div.style.cssText = "position:absolute;top:-100em";
fakeBody.style.background = "none";
fakeBody.appendChild(div);
return function(q){
div.innerHTML = '&shy;<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>';
docElem.insertBefore(fakeBody, refNode);
bool = div.offsetWidth == 42;
docElem.removeChild(fakeBody);
return { matches: bool, media: q };
};
})(document);
/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
(function( win ){
//exposed namespace
win.respond = {};
//define update even in native-mq-supporting browsers, to avoid errors
respond.update = function(){};
//expose media query support flag for external use
respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches;
//if media queries are supported, exit here
if( respond.mediaQueriesSupported ){ return; }
//define vars
var doc = win.document,
docElem = doc.documentElement,
mediastyles = [],
rules = [],
appendedEls = [],
parsedSheets = {},
resizeThrottle = 30,
head = doc.getElementsByTagName( "head" )[0] || docElem,
base = doc.getElementsByTagName( "base" )[0],
links = head.getElementsByTagName( "link" ),
requestQueue = [],
//loop stylesheets, send text content to translate
ripCSS = function(){
var sheets = links,
sl = sheets.length,
i = 0,
//vars for loop:
sheet, href, media, isCSS;
for( ; i < sl; i++ ){
sheet = sheets[ i ],
href = sheet.href,
media = sheet.media,
isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
//only links plz and prevent re-parsing
if( !!href && isCSS && !parsedSheets[ href ] ){
// selectivizr exposes css through the rawCssText expando
if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
translate( sheet.styleSheet.rawCssText, href, media );
parsedSheets[ href ] = true;
} else {
if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base)
|| href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){
requestQueue.push( {
href: href,
media: media
} );
}
}
}
}
makeRequests();
},
//recurse through request queue, get css text
makeRequests = function(){
if( requestQueue.length ){
var thisRequest = requestQueue.shift();
ajax( thisRequest.href, function( styles ){
translate( styles, thisRequest.href, thisRequest.media );
parsedSheets[ thisRequest.href ] = true;
makeRequests();
} );
}
},
//find media blocks in css text, convert to style blocks
translate = function( styles, href, media ){
var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ),
ql = qs && qs.length || 0,
//try to get CSS path
href = href.substring( 0, href.lastIndexOf( "/" )),
repUrls = function( css ){
return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" );
},
useMedia = !ql && media,
//vars used in loop
i = 0,
j, fullq, thisq, eachq, eql;
//if path exists, tack on trailing slash
if( href.length ){ href += "/"; }
//if no internal queries exist, but media attr does, use that
//note: this currently lacks support for situations where a media attr is specified on a link AND
//its associated stylesheet has internal CSS media queries.
//In those cases, the media attribute will currently be ignored.
if( useMedia ){
ql = 1;
}
for( ; i < ql; i++ ){
j = 0;
//media attr
if( useMedia ){
fullq = media;
rules.push( repUrls( styles ) );
}
//parse for styles
else{
fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1;
rules.push( RegExp.$2 && repUrls( RegExp.$2 ) );
}
eachq = fullq.split( "," );
eql = eachq.length;
for( ; j < eql; j++ ){
thisq = eachq[ j ];
mediastyles.push( {
media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all",
rules : rules.length - 1,
hasquery: thisq.indexOf("(") > -1,
minw : thisq.match( /\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ),
maxw : thisq.match( /\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" )
} );
}
}
applyMedia();
},
lastCall,
resizeDefer,
// returns the value of 1em in pixels
getEmValue = function() {
var ret,
div = doc.createElement('div'),
body = doc.body,
fakeUsed = false;
div.style.cssText = "position:absolute;font-size:1em;width:1em";
if( !body ){
body = fakeUsed = doc.createElement( "body" );
body.style.background = "none";
}
body.appendChild( div );
docElem.insertBefore( body, docElem.firstChild );
ret = div.offsetWidth;
if( fakeUsed ){
docElem.removeChild( body );
}
else {
body.removeChild( div );
}
//also update eminpx before returning
ret = eminpx = parseFloat(ret);
return ret;
},
//cached container for 1em value, populated the first time it's needed
eminpx,
//enable/disable styles
applyMedia = function( fromResize ){
var name = "clientWidth",
docElemProp = docElem[ name ],
currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp,
styleBlocks = {},
lastLink = links[ links.length-1 ],
now = (new Date()).getTime();
//throttle resize calls
if( fromResize && lastCall && now - lastCall < resizeThrottle ){
clearTimeout( resizeDefer );
resizeDefer = setTimeout( applyMedia, resizeThrottle );
return;
}
else {
lastCall = now;
}
for( var i in mediastyles ){
var thisstyle = mediastyles[ i ],
min = thisstyle.minw,
max = thisstyle.maxw,
minnull = min === null,
maxnull = max === null,
em = "em";
if( !!min ){
min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
}
if( !!max ){
max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 );
}
// if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true
if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){
if( !styleBlocks[ thisstyle.media ] ){
styleBlocks[ thisstyle.media ] = [];
}
styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] );
}
}
//remove any existing respond style element(s)
for( var i in appendedEls ){
if( appendedEls[ i ] && appendedEls[ i ].parentNode === head ){
head.removeChild( appendedEls[ i ] );
}
}
//inject active styles, grouped by media type
for( var i in styleBlocks ){
var ss = doc.createElement( "style" ),
css = styleBlocks[ i ].join( "\n" );
ss.type = "text/css";
ss.media = i;
//originally, ss was appended to a documentFragment and sheets were appended in bulk.
//this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one!
head.insertBefore( ss, lastLink.nextSibling );
if ( ss.styleSheet ){
ss.styleSheet.cssText = css;
}
else {
ss.appendChild( doc.createTextNode( css ) );
}
//push to appendedEls to track for later removal
appendedEls.push( ss );
}
},
//tweaked Ajax functions from Quirksmode
ajax = function( url, callback ) {
var req = xmlHttp();
if (!req){
return;
}
req.open( "GET", url, true );
req.onreadystatechange = function () {
if ( req.readyState != 4 || req.status != 200 && req.status != 304 ){
return;
}
callback( req.responseText );
}
if ( req.readyState == 4 ){
return;
}
req.send( null );
},
//define ajax obj
xmlHttp = (function() {
var xmlhttpmethod = false;
try {
xmlhttpmethod = new XMLHttpRequest();
}
catch( e ){
xmlhttpmethod = new ActiveXObject( "Microsoft.XMLHTTP" );
}
return function(){
return xmlhttpmethod;
};
})();
//translate CSS
ripCSS();
//expose update for re-running respond later on
respond.update = ripCSS;
//adjust on resize
function callMedia(){
applyMedia( true );
}
if( win.addEventListener ){
win.addEventListener( "resize", callMedia, false );
}
else if( win.attachEvent ){
win.attachEvent( "onresize", callMedia );
}
})(this);

View File

@ -0,0 +1,198 @@
// 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 = $('.header-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 && $('.header-custom').hasClass('is-fixed')) {
$('.header-custom').addClass('is-visible');
} else {
$('.header-custom').removeClass('is-visible is-fixed');
}
} else if (currentTop > this.previousTop) {
//if scrolling down...
$('.header-custom').removeClass('is-visible');
if (currentTop > headerHeight && !$('.header-custom').hasClass('is-fixed')) $('.header-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();
});
/*---------------------------------*/
/* SCROLL TO TOP
/*---------------------------------*/
! function (a, b, c) {
a.fn.scrollUp = function (b) {
a.data(c.body, "scrollUp") || (a.data(c.body, "scrollUp", !0), a.fn.scrollUp.init(b))
}, a.fn.scrollUp.init = function (d) {
var e = a.fn.scrollUp.settings = a.extend({}, a.fn.scrollUp.defaults, d),
f = e.scrollTitle ? e.scrollTitle : e.scrollText,
g = a("<a/>", {
id: e.scrollName,
//class: "btn-md btn-theme", //specific to this theme
href: "#top",
title: f
}).appendTo("body");
e.scrollImg || g.html(e.scrollText), g.css({
display: "none",
position: "fixed",
zIndex: e.zIndex
}), e.activeOverlay && a("<div/>", {
id: e.scrollName + "-active"
}).css({
position: "absolute",
top: e.scrollDistance + "px",
width: "100%",
borderTop: "1px dotted" + e.activeOverlay,
zIndex: e.zIndex
}).appendTo("body"), scrollEvent = a(b).scroll(function () {
switch (scrollDis = "top" === e.scrollFrom ? e.scrollDistance : a(c).height() - a(b).height() - e.scrollDistance, e.animation) {
case "fade":
a(a(b).scrollTop() > scrollDis ? g.fadeIn(e.animationInSpeed) : g.fadeOut(e.animationOutSpeed));
break;
case "slide":
a(a(b).scrollTop() > scrollDis ? g.slideDown(e.animationInSpeed) : g.slideUp(e.animationOutSpeed));
break;
default:
a(a(b).scrollTop() > scrollDis ? g.show(0) : g.hide(0))
}
}), g.click(function (b) {
b.preventDefault(), a("html, body").animate({
scrollTop: 0
}, e.topSpeed, e.easingType)
})
}, a.fn.scrollUp.defaults = {
scrollName: "scrollUp",
scrollDistance: 300,
scrollFrom: "top",
scrollSpeed: 300,
easingType: "linear",
animation: "fade",
animationInSpeed: 200,
animationOutSpeed: 200,
scrollText: "Scroll to top",
scrollTitle: !1,
scrollImg: !1,
activeOverlay: !1,
zIndex: 2147483647
}, a.fn.scrollUp.destroy = function (d) {
a.removeData(c.body, "scrollUp"), a("#" + a.fn.scrollUp.settings.scrollName).remove(), a("#" + a.fn.scrollUp.settings.scrollName + "-active").remove(), a.fn.jquery.split(".")[1] >= 7 ? a(b).off("scroll", d) : a(b).unbind("scroll", d)
}, a.scrollUp = a.fn.scrollUp
}(jQuery, window, document);
jQuery(document).ready(function () {
jQuery.scrollUp({
scrollName: 'scrollUp', // Element ID
scrollDistance: 300, // Distance from top/bottom before showing element (px)
scrollFrom: 'top', // 'top' or 'bottom'
scrollSpeed: 200, // Speed back to top (ms)
easingType: 'linear', // Scroll to top easing (see http://easings.net/)
animation: 'fade', // Fade, slide, none
animationInSpeed: 100, // Animation in speed (ms)
animationOutSpeed: 100, // Animation out speed (ms)
scrollText: '<i class="fa fa-chevron-up"></i>', // Text for element, can contain HTML
scrollTitle: 'Top', // Set a custom <a> title if required. Defaults to scrollText
scrollImg: false, // Set true to use image
activeOverlay: false, // Set CSS color to display scrollUp active point, e.g '#00FFFF'
zIndex: 1001 // Z-Index for the overlay
});
});

View File

@ -0,0 +1,70 @@
<?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_SOCIAL_LINKS', 'Social-Links');
@define('THEME_PAGE_OPTIONS', 'Seiten-Optionen');
@define('THEME_NAVIGATION', 'Navigations-Optionen');
@define('THEME_README','Lies mich');
@define('THEME_IDENTITY','Seiten-Identität');
@define('THEME_EP_YES','<p class="msg_success">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="msg_error">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>This theme displays blog posts on a linear timeline. Each group of month titles can also be displayed or hidden on the timeline.</p><p>This theme uses a right and bottom sidebar. Either, or both sidebars can be disabled by deleting sidebar plugins or relocating sidebar plugins to the sidebar colum labeled "hidden" in plugin configuration.</p><p>This theme can 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_CUSTOM_FIELD_HEADING', 'Freie Felder für Einträge');
@define('THEME_CUSTOM_FIELD_DEFINITION','These optional field(s) are only available when using this theme (timeline). The event plugin serendipity_event_entryproperties (extended properties for entries) must also be installed to use these field(s). The entry image will appear on both the timeline, and at the top of each detailed entry.');
@define('THEME_ENTRY_IMAGE','Entry Image.');
@define('THEME_DEMO_AVAILBLE', 'Eine komplette englische Anleitung zur <a href="http://www.optional-necessity.com/demo/timeline/archives/13-Using-the-Timeline-theme.html">Konfiguration und Benutzung von Timeline</a> findet sich in der <a href="http://www.optional-necessity.com/demo/timeline/">Timeline theme demo</a>.');
//Page Options
@define('THEME_COLORSET', 'Colorset');
@define('THEME_SKINSET', 'Theme skin');
@define('HEADER_IMG','Optional Header Image. Leave blank to use Blog Name.');
@define('HEADER_IMG_DESC', 'Header image recommended size: 150px x 40px.');
@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('DISPLAY_AS_TIMELINE','Timeline-Format verwenden');
@define('DISPLAY_AS_TIMELINE_DESC','Timeline-Format für Blog-Posts verwenden. Falls Nein werden Blog-Posts im üblichen Blog-Format ausgegeben.');
@define('MONTHS_ON_TIMELINE','Show month names on timeline');
@define('MONTHS_ON_TIMELINE_DESC','Month name will appear as a heading on the timeline for each month of entries.');
@define('MONTHS_ON_TIMELINE_FORMAT','Timeline month format');
@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('CATEGORY_RSS_ON_ARCHIVE','Show RSS icon next to each category on archive page');
@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.');
//Navigation
@define('USE_CORENAV', 'Globale Navigation verwenden?');
//Social media
@define('SOCIAL_ICONS_AMOUNT', 'Enter number of social media links');
@define('SOCIAL_NETWORK_SERVICE', 'Select social media service for link');
@define('SOCIAL_ICON_URL', 'URL for social media service link');
@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
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Autorennamen anzeigen');
@define('STATIC_SHOW_DATE_TEXT','Datum anzeigen');
@define('STATIC_SHOW_SIDEBARS_TEXT','Show sidebars?');

View File

@ -0,0 +1,73 @@
<?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_SOCIAL_LINKS', 'Social links');
@define('THEME_PAGE_OPTIONS', 'Page Options');
@define('THEME_NAVIGATION', 'Navigation Options');
@define('THEME_README','Read me');
@define('THEME_IDENTITY','Site Identity');
@define('THEME_EP_YES','<p class="msg_success">Extended Property for Entries plugin (serendipity_event_entryproperties) is required for this theme, and is installed.</p>');
@define('THEME_EP_NO','<p class="msg_error">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 displays blog posts on a linear timeline. Each group of month titles can also be displayed or hidden on the timeline.</p><p>This theme uses a right and bottom sidebar. Either, or both sidebars can be disabled by deleting sidebar plugins or relocating sidebar plugins to the sidebar colum labeled "hidden" in plugin configuration.</p><p>This theme can 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_CUSTOM_FIELD_HEADING', 'Custom Entry Fields');
@define('THEME_CUSTOM_FIELD_DEFINITION','These optional field(s) are only available when using this theme (timeline). The event plugin serendipity_event_entryproperties (extended properties for entries) must also be installed to use these field(s). The entry image will appear on both the timeline, and at the top of each detailed entry.');
@define('THEME_ENTRY_IMAGE','Entry Image.');
@define('THEME_DEMO_AVAILABLE', 'A complete English explanation of <a href="http://www.optional-necessity.com/demo/timeline/archives/13-Using-the-Timeline-theme.html">configuring and using Timeline</a> can be found on the <a href="http://www.optional-necessity.com/demo/timeline/">Timeline theme demo</a>.');
//Page Options
@define('THEME_COLORSET', 'Colorset');
@define('THEME_SKINSET', 'Theme skin');
@define('HEADER_IMG','Optional Header Image. Leave blank to use Blog Name.');
@define('HEADER_IMG_DESC', 'Header image recommended size: 150px x 40px.');
@define('SUBHEADER_IMG','Optional Subheader Image.');
@define('SUBHEADER_IMG_DESC', 'This full width background image appears below the header logo and site navigation.');
@define('ENTRY_DATE_FORMAT','Entry Date Format');
@define('COMMENT_TIME_FORMAT','Comment and trackback time format');
@define('WORDS','Words');
@define('TIMESTAMP','Timestamp');
@define('DISPLAY_AS_TIMELINE','Use timeline format');
@define('DISPLAY_AS_TIMELINE_DESC','Use timeline format for blog posts. If false, blog posts will be shown in a more typical blog format.');
@define('MONTHS_ON_TIMELINE','Show month names on timeline');
@define('MONTHS_ON_TIMELINE_DESC','Month name will appear as a heading on the timeline for each month of entries.');
@define('MONTHS_ON_TIMELINE_FORMAT','Timeline month format');
@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.');//Used in theme readme and archive page
@define('CATEGORY_RSS_ON_ARCHIVE','Show RSS icon next to each category on 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.'); //Used in theme readme and archive page
//Navigation
@define('USE_CORENAV', 'Use global navigation?');
//Social media
@define('SOCIAL_ICONS_AMOUNT', 'Enter number of social media links');
@define('SOCIAL_NETWORK_SERVICE', 'Select social media service for link');
@define('SOCIAL_ICON_URL', 'URL for social media service link');
@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
//Static Pages
@define('STATIC_SHOW_AUTHOR_TEXT','Show Author\'s name?');
@define('STATIC_SHOW_DATE_TEXT','Show date last modified?');
@define('STATIC_SHOW_SIDEBARS_TEXT','Show sidebars?');

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
orange colorset
*/
/*
* Orange Color: #e67e22;
* Orange Hover Color: #d35400;
* Darkest color: #bf4d02;
*/
a {
color: #e67e22;
}
a:hover,
a:focus {
color: #d35400;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-orange.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-orange.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #d35400;
}
.header .navbar-default .navbar-toggle {
border-color: #d35400;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #e67e22;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #e67e22;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #e67e22;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #e67e22;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #e67e22;
}
}
.btn-theme {
background: none repeat scroll 0 0 #e67e22;
border: 1px solid #e67e22;
}
.btn-theme:hover {color: #e67e22;}
.pager li > a,
.pager li > span {
background-color: #e67e22;
border: 1px solid #e67e22;
}
.pager li > a:hover,
.pager li > a:focus {
color: #d35400;
}
.sidebar_plugin h3{
border-bottom: 2px solid #e67e22;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #d35400;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #d35400;
}
.archive-button-months-entries {border: 1px solid #e67e22;}
.archive-button-months-entries .badge {
background-color: #bf4d02; /* much darker */
}
blockquote {
border-left: 5px solid #d35400;
}
.timeline_freeTag a {
background-color: #e67e22;
border: 1px solid #e67e22;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #d35400;
}
#scrollUp {
background-color: #e67e22;
border: 1px solid #e67e22;
}
#scrollUp:hover {
color: #d35400;
}

View File

@ -0,0 +1,59 @@
<article{if $plugin_contactform_articleformat} class="post serendipity_staticpage serendipity_entry{/if}">
<h3>{if $plugin_contactform_articleformat}{$plugin_contactform_name}{else}{$plugin_contactform_pagetitle}{/if}</h3>
<section id="entry">
<div class="content serendipity_entry_body">
{if $is_contactform_error}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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>
</div>
</div>
{foreach from=$comments_messagestack item="message"}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<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>
</div>
</div>
{/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 btn-theme" type="submit" value="{$CONST.SUBMIT_COMMENT}">
</div>
</form>
</div>
</div>
</section>
{/if}
</article>

View File

@ -0,0 +1,59 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h3>{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}</h3>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$blogTitle}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&nbsp;/&nbsp; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{$crumb.name|@escape}</a>{else}{$crumb.name|@escape}{/if}
{/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="serendipity_preface">
{$staticpage_precontent}
</div>
{/if}
{if $staticpage_show_childpages && is_array($staticpage_childpages)}
<nav>
<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="{if $staticpage_articleformat}serendipity_entry_body clearfix{else}staticpage_content{/if}">
{$staticpage_content}
</div>
{/if}
</section>
{/if}
{if $staticpage_navigation && $staticpage_shownavi && ($staticpage_navigation.prev.link || $staticpage_navigation.next.link)}
<nav>
<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 btn-theme"><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,54 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h3>{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}</h3>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$blogTitle}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&nbsp;/&nbsp; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{$crumb.name|@escape}</a>{else}{$crumb.name|@escape}{/if}
{/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="serendipity_preface">
{$staticpage_precontent}
</div>
{/if}
</section>
{/if}
{if $staticpage_navigation && $staticpage_shownavi && ($staticpage_navigation.prev.link || $staticpage_navigation.next.link)}
<nav>
<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 btn-theme"><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,64 @@
<article id="staticpage_{$staticpage_pagetitle|@makeFilename}" class="serendipity_staticpage{if $staticpage_articleformat} post serendipity_entry{/if}">
<header>
<h3>{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}</h3>
{if $staticpage_show_breadcrumb}
<div class="staticpage_breadcrumbs">
<a href="{$serendipityBaseURL}" title="{$CONST.HOMEPAGE}">{$blogTitle}</a>
{foreach name="crumbs" from=$staticpage_navigation.crumbs item="crumb"}
&nbsp;/&nbsp; {if !$smarty.foreach.crumbs.last}<a href="{$crumb.link}">{$crumb.name|@escape}</a>{else}{$crumb.name|@escape}{/if}
{/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="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="{if $staticpage_articleformat}serendipity_entry_body clearfix{else}staticpage_content{/if}">
{$staticpage_content}
</div>
{/if}
{*NOTE: file staticpage-entries-listing.tpl must exist in theme folder *}
<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>
<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 btn-theme"><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>
{assign var="footer_totalPages" value="0" scope="parent"}{* prevent pagination on related category from showing on index.tpl in this theme *}

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: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 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.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400' rel='stylesheet' type='text/css'>
{* ADDTIONAL COLORSET & SKIN STYLESHEETS - INCLUDED SETS ARE LOADED VIA CONFIG *}
{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 content" role="main" style="margin: 0 auto;">
<div class="row">
<div class="col-md-9">
{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 text-success" aria-hidden="true"></i><i class="fa fa-smile-o fa-2x"></i></span> {$CONST.ENTRY_SAVED}. &nbsp;&nbsp; <a class="btn btn-md btn-default btn-theme" href="{$entrylink}" target="_blank">{$CONST.VIEW_ENTRY}</a></span>
{/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/timeline.js"}></script>
<!--[if lt IE 9]>
<script src={serendipity_getFile file="js/respond.js"}></script>
<script src={serendipity_getFile file="js/html5shiv.js"}></script>
<script src={serendipity_getFile file="js/placeholder-IE-fixes.js"}></script>
<![endif]-->
</body>
</html>

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
purple colorset
*/
/*
* Purple Color: #9b6bcc;
* Purple Hover Color: #814fb5;
* Darkest color: #7240a6;
*/
a {
color: #9b6bcc;
}
a:hover,
a:focus {
color: #814fb5;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-purple.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-purple.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #814fb5;
}
.header .navbar-default .navbar-toggle {
border-color: #814fb5;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #9b6bcc;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #9b6bcc;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #9b6bcc;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #9b6bcc;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #9b6bcc;
}
}
.btn-theme {
background: none repeat scroll 0 0 #9b6bcc;
border: 1px solid #9b6bcc;
}
.btn-theme:hover {color: #9b6bcc;}
.pager li > a,
.pager li > span {
background-color: #9b6bcc;
border: 1px solid #9b6bcc;
}
.pager li > a:hover,
.pager li > a:focus {
color: #814fb5;
}
.sidebar_plugin h3{
border-bottom: 2px solid #9b6bcc;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #814fb5;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #814fb5;
}
.archive-button-months-entries {border: 1px solid #9b6bcc;}
.archive-button-months-entries .badge {
background-color: #7240a6; /* much darker */
}
blockquote {
border-left: 5px solid #814fb5;
}
.timeline_freeTag a {
background-color: #9b6bcc;
border: 1px solid #9b6bcc;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #814fb5;
}
#scrollUp {
background-color: #9b6bcc;
border: 1px solid #9b6bcc;
}
#scrollUp:hover {
color: #814fb5;
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
dark red colorset
*/
/*
* Dark Red Color: #a10f2b;
* Dark Red Hover Color: #b61332; lighter
* Darkest color: #7b031b;
*/
a {
color: #a10f2b;
}
a:hover,
a:focus {
color: #b61332;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-red-dark.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-red-dark.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #b61332;
}
.header .navbar-default .navbar-toggle {
border-color: #b61332;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #a10f2b;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #a10f2b;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #a10f2b;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #a10f2b;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #b61332;
}
}
.btn-theme {
background: none repeat scroll 0 0 #a10f2b;
border: 1px solid #a10f2b;
}
.btn-theme:hover {color: #a10f2b;}
.pager li > a,
.pager li > span {
background-color: #a10f2b;
border: 1px solid #a10f2b;
}
.pager li > a:hover,
.pager li > a:focus {
color: #b61332;
}
.sidebar_plugin h3{
border-bottom: 2px solid #a10f2b;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #b61332;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #b61332;
}
.archive-button-months-entries {border: 1px solid #a10f2b;}
.archive-button-months-entries .badge {
background-color: #7b031b; /* much darker */
}
blockquote {
border-left: 5px solid #b61332;
}
.timeline_freeTag a {
background-color: #a10f2b;
border: 1px solid #a10f2b;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #b61332;
}
#scrollUp {
background-color: #a10f2b;
border: 1px solid #a10f2b;
}
#scrollUp:hover {
color: #b61332;
}

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
red colorset
*/
/*
* Red Color: #e74c3c;
* Red Hover Color: #c0392b;
* Darkest color: #b02d20;
*/
a {
color: #e74c3c;
}
a:hover,
a:focus {
color: #c0392b;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-red.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-red.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #c0392b;
}
.header .navbar-default .navbar-toggle {
border-color: #c0392b;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #e74c3c;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #e74c3c;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #e74c3c;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #e74c3c;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #e74c3c;
}
}
.btn-theme {
background: none repeat scroll 0 0 #e74c3c;
border: 1px solid #e74c3c;
}
.btn-theme:hover {color: #e74c3c;}
.pager li > a,
.pager li > span {
background-color: #e74c3c;
border: 1px solid #e74c3c;
}
.pager li > a:hover,
.pager li > a:focus {
color: #c0392b;
}
.sidebar_plugin h3{
border-bottom: 2px solid #e74c3c;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #c0392b;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #c0392b;
}
.archive-button-months-entries {border: 1px solid #e74c3c;}
.archive-button-months-entries .badge {
background-color: #b02d20; /* much darker */
}
blockquote {
border-left: 5px solid #c0392b;
}
.timeline_freeTag a {
background-color: #e74c3c;
border: 1px solid #e74c3c;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #c0392b;
}
#scrollUp {
background-color: #e74c3c;
border: 1px solid #e74c3c;
}
#scrollUp:hover {
color: #c0392b;
}

View File

@ -0,0 +1,16 @@
{if $is_raw_mode}
<div id="serendipity{$pluginside}SideBar">
{/if}
{foreach from=$plugindata item=item}
{if $item.class != "serendipity_plugin_quicksearch"}
<section class="sidebar_plugin clearfix {cycle values="odd,even"} {$item.class}">
{if $item.title != "" && $item.class != "serendipity_plugin_freetag"}
<h3>{$item.title}</h3>
{/if}
<div class="sidebar_content clearfix">{$item.content}</div>
</section>
{/if}
{/foreach}
{if $is_raw_mode}
</div>
{/if}

View File

@ -0,0 +1,22 @@
<h4>{$CONST.STATICPAGE_NEW_HEADLINES|capitalize}</h4>
{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 class="btn btn-md btn-default btn-theme" href="{$serendipityBaseURL}{$serendipityRewritePrefix}{getCategoryLinkByID cid=$staticpage_related_category_id}">{$CONST.STATICPAGE_ARTICLE_OVERVIEW|capitalize} <i class="fa fa-arrow-right" aria-hidden="true"></i></a><br />
{else}
<a class="btn btn-md btn-default btn-theme" href="{$serendipityArchiveURL}/P1.html">{$CONST.STATICPAGE_ARTICLE_OVERVIEW|capitalize} <i class="fa fa-arrow-right" aria-hidden="true"></i></a><br />
{/if}
{else}
<div id="search-block" class="row">
<div class="col-md-10 col-md-offset-1">
<p class="alert alert-info noentries"><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>
</div>
</div>
{/if}

1199
templates/timeline/style.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
/*
Theme: Timeline
Theme developed for Serendipity by Don Chambers (www.optional-necessity.com)
teal colorset
*/
/*
* Teal Color: #18ba9b;
* Teal Hover Color: #2cd5b6;
* Darkest color: #029377;
*/
a {
color: #18ba9b;
}
a:hover,
a:focus {
color: #2cd5b6;
}
a.subtome:link,
a.subtome:visited {
background: url('img/subtome-teal.png') left bottom no-repeat;
}
a.subtome:hover,
a.subtome:focus {
background: url('img/subtome-teal.png') -64px center no-repeat;
}
a.subtome img {
visibility: hidden;
}
.navbar-default .navbar-brand:hover h1,
.navbar-default .navbar-brand:focus h1{
color: #2cd5b6;
}
.header .navbar-default .navbar-toggle {
border-color: #2cd5b6;
}
.header .navbar-toggle, .header .navbar-default .navbar-toggle:hover, .header .navbar-default .navbar-toggle:focus {
background-color: #18ba9b;
}
@media (max-width: 991px) {
.header .navbar-default .navbar-nav > li > a:hover {
color: #18ba9b;
}
.header .navbar-default .navbar-nav > .active > a, .header .navbar-default .navbar-nav > .active > a:hover, .header .navbar-default .navbar-nav > .active > a:focus {
background-color: #18ba9b;
}
}
@media (min-width: 992px) {
.header .navbar-default .navbar-nav a.navbar_current_page,
.header .navbar-default .navbar-nav > li > a:hover {
border-bottom: 2px solid #18ba9b;
}
.header .navbar-default .navbar-nav > li:hover > a {
color: #18ba9b;
}
}
.btn-theme {
background: none repeat scroll 0 0 #18ba9b;
border: 1px solid #18ba9b;
}
.btn-theme:hover {color: #18ba9b;}
.pager li > a,
.pager li > span {
background-color: #18ba9b;
border: 1px solid #18ba9b;
}
.pager li > a:hover,
.pager li > a:focus {
color: #2cd5b6;
}
.sidebar_plugin h3{
border-bottom: 2px solid #18ba9b;
}
.btn-group.archive-button .dropdown-menu > li > a {color: #2cd5b6;}
.btn-group.archive-button .dropdown-menu > li > a:hover,
.btn-group.archive-button .dropdown-menu > li > a:focus {
background-color: #2cd5b6;
}
.archive-button-months-entries {border: 1px solid #18ba9b;}
.archive-button-months-entries .badge {
background-color: #029377; /* much darker */
}
blockquote {
border-left: 5px solid #2cd5b6;
}
.timeline_freeTag a {
background-color: #18ba9b;
border: 1px solid #18ba9b;
}
.timeline_freeTag a:hover,
.timeline_freeTag a:focus {
color: #2cd5b6;
}
#scrollUp {
background-color: #18ba9b;
border: 1px solid #18ba9b;
}
#scrollUp:hover {
color: #2cd5b6;
}

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 class="comment-source-ownerlink btn btn-sm btn-default btn-theme" href="{$serendipityBaseURL}comment.php?serendipity[delete]={$trackback.id}&amp;serendipity[entry]={$trackback.entry_id}&amp;serendipity[type]=trackbacks" title="{$CONST.DELETE}"><i class="fa fa-lg fa-trash-o"></i><span class="sr-only"> {$CONST.DELETE}</span></a>
{/if}
</div>
</div>
</div>
</li>
{/foreach}
</ul>