From cbb8ece5799463303069f466c490494f24a78265 Mon Sep 17 00:00:00 2001 From: Daniel Rudolf Date: Mon, 1 May 2017 22:12:18 +0200 Subject: [PATCH] Move PicoDeprecated plugin and default theme to separate repos See https://github.com/picocms/pico-theme for Pico's default theme and https://github.com/picocms/pico-deprecated for the PicoDeprecated plugin. --- .gitignore | 13 - composer.json | 4 +- config/.gitignore | 3 + plugins/.gitignore | 3 + plugins/00-PicoDeprecated.php | 504 ------------------ themes/.gitignore | 2 + themes/default/font/LICENSE.txt | 23 - themes/default/font/fontello.eot | Bin 6012 -> 0 bytes themes/default/font/fontello.svg | 16 - themes/default/font/fontello.ttf | Bin 5844 -> 0 bytes themes/default/font/fontello.woff | Bin 3484 -> 0 bytes themes/default/font/fontello.woff2 | Bin 2924 -> 0 bytes themes/default/fontello.css | 60 --- themes/default/index.twig | 73 --- .../default/js/modernizr-3.3.1-custom.min.js | 3 - themes/default/js/pico.js | 70 --- themes/default/js/utils.js | 135 ----- themes/default/style.css | 357 ------------- 18 files changed, 11 insertions(+), 1255 deletions(-) create mode 100644 config/.gitignore create mode 100644 plugins/.gitignore delete mode 100644 plugins/00-PicoDeprecated.php create mode 100644 themes/.gitignore delete mode 100644 themes/default/font/LICENSE.txt delete mode 100644 themes/default/font/fontello.eot delete mode 100644 themes/default/font/fontello.svg delete mode 100644 themes/default/font/fontello.ttf delete mode 100644 themes/default/font/fontello.woff delete mode 100644 themes/default/font/fontello.woff2 delete mode 100644 themes/default/fontello.css delete mode 100644 themes/default/index.twig delete mode 100644 themes/default/js/modernizr-3.3.1-custom.min.js delete mode 100644 themes/default/js/pico.js delete mode 100644 themes/default/js/utils.js delete mode 100644 themes/default/style.css diff --git a/.gitignore b/.gitignore index 7cb4a74..67952a9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,18 +20,5 @@ desktop.ini /_build/phpdoc.cache /_build/deploy-*.git -# User config -/config/config.yml - -# User themes -/themes/* -!/themes/default - -# User plugins -/plugins/* -!/plugins/0?-* -!/plugins/1?-* -!/plugins/DummyPlugin.php - # User content /content diff --git a/composer.json b/composer.json index f925186..32403aa 100644 --- a/composer.json +++ b/composer.json @@ -25,8 +25,10 @@ "require": { "php": ">=5.3.6", "twig/twig": "^1.18", + "symfony/yaml" : "^2.3", "erusev/parsedown-extra": "^0.7", - "symfony/yaml" : "^2.3" + "picocms/pico-theme": "~2.0.0", + "picocms/pico-deprecated": "~2.0.0" }, "require-dev" : { "phpdocumentor/phpdocumentor": "^2.8", diff --git a/config/.gitignore b/config/.gitignore new file mode 100644 index 0000000..ffe73de --- /dev/null +++ b/config/.gitignore @@ -0,0 +1,3 @@ +# This directory is meant to be empty, except for config.yml.template +* +!config.yml.template diff --git a/plugins/.gitignore b/plugins/.gitignore new file mode 100644 index 0000000..a549bfa --- /dev/null +++ b/plugins/.gitignore @@ -0,0 +1,3 @@ +# This directory is meant to be empty, except for DummyPlugin.php +* +!DummyPlugin.php diff --git a/plugins/00-PicoDeprecated.php b/plugins/00-PicoDeprecated.php deleted file mode 100644 index ed00e7e..0000000 --- a/plugins/00-PicoDeprecated.php +++ /dev/null @@ -1,504 +0,0 @@ -isStatusChanged()) { - $this->setEnabled(true, true, true); - } - break; - } - } - } else { - // no plugins were found, so it actually isn't necessary to call deprecated events - // anyway, this plugin also ensures compatibility apart from events used by old plugins, - // so enable PicoDeprecated if it hasn't be explicitly enabled/disabled yet - if (!$this->isStatusChanged()) { - $this->setEnabled(true, true, true); - } - } - - if ($this->isEnabled()) { - $this->triggerEvent('plugins_loaded'); - } - } - - /** - * Triggers the deprecated event config_loaded($config) - * - * This method also defines deprecated constants, reads the `config.php` - * in Pico's root dir, enables the plugins {@link PicoParsePagesContent} - * and {@link PicoExcerpt} and makes `$config` globally accessible (the - * latter was removed with Pico 0.9 and was added again as deprecated - * feature with Pico 1.0) - * - * @see PicoDeprecated::defineConstants() - * @see PicoDeprecated::loadRootDirConfig() - * @see PicoDeprecated::enablePlugins() - * @see DummyPlugin::onConfigLoaded() - * @param array &$config array of config variables - * @return void - */ - public function onConfigLoaded(array &$config) - { - $this->defineConstants(); - $this->loadScriptedConfig($config); - $this->loadRootDirConfig($config); - $this->enablePlugins(); - $GLOBALS['config'] = &$config; - - $this->triggerEvent('config_loaded', array(&$config)); - } - - /** - * Defines deprecated constants - * - * `ROOT_DIR`, `LIB_DIR`, `PLUGINS_DIR`, `THEMES_DIR` and `CONTENT_EXT` - * are deprecated since v1.0, `CONTENT_DIR` existed just in v0.9, - * `CONFIG_DIR` just for a short time between v0.9 and v1.0 and - * `CACHE_DIR` was dropped with v1.0 without a replacement. - * - * @see PicoDeprecated::onConfigLoaded() - * @return void - */ - protected function defineConstants() - { - if (!defined('ROOT_DIR')) { - define('ROOT_DIR', $this->getRootDir()); - } - if (!defined('CONFIG_DIR')) { - define('CONFIG_DIR', $this->getConfigDir()); - } - if (!defined('LIB_DIR')) { - $picoReflector = new ReflectionClass('Pico'); - define('LIB_DIR', dirname($picoReflector->getFileName()) . '/'); - } - if (!defined('PLUGINS_DIR')) { - define('PLUGINS_DIR', $this->getPluginsDir()); - } - if (!defined('THEMES_DIR')) { - define('THEMES_DIR', $this->getThemesDir()); - } - if (!defined('CONTENT_DIR')) { - define('CONTENT_DIR', $this->getConfig('content_dir')); - } - if (!defined('CONTENT_EXT')) { - define('CONTENT_EXT', $this->getConfig('content_ext')); - } - } - - /** - * Read config.php in Pico's config dir (i.e. config/config.php) - * - * @see PicoDeprecated::onConfigLoaded() - * @see Pico::loadConfig() - * @param array &$realConfig array of config variables - * @return void - */ - protected function loadScriptedConfig(array &$realConfig) - { - if (file_exists($this->getConfigDir() . 'config.php')) { - // scope isolated require() - $includeClosure = function ($configFile) { - require($configFile); - return (isset($config) && is_array($config)) ? $config : array(); - }; - if (PHP_VERSION_ID >= 50400) { - $includeClosure = $includeClosure->bindTo(null); - } - - // config.php in Pico::$configDir (i.e. config/config.php) is deprecated - // use *.yml files in Pico::$configDir instead - $config = $includeClosure($this->getConfigDir() . 'config.php'); - - if ($config) { - if (!empty($config['base_url'])) { - $config['base_url'] = rtrim($config['base_url'], '/') . '/'; - } - if (!empty($config['content_dir'])) { - $config['content_dir'] = $this->getAbsolutePath($config['content_dir']); - } - if (!empty($config['theme_url'])) { - if (preg_match('#^[A-Za-z][A-Za-z0-9+\-.]*://#', $config['theme_url'])) { - $config['theme_url'] = rtrim($config['theme_url'], '/') . '/'; - } else { - $config['theme_url'] = $this->getBaseUrl() . rtrim($config['theme_url'], '/') . '/'; - } - } - if (!empty($config['timezone'])) { - date_default_timezone_set($config['timezone']); - } - - $realConfig = $config + $realConfig; - } - } - } - - /** - * Read config.php in Pico's root dir - * - * @see PicoDeprecated::onConfigLoaded() - * @see Pico::loadConfig() - * @param array &$realConfig array of config variables - * @return void - */ - protected function loadRootDirConfig(array &$realConfig) - { - if (file_exists($this->getRootDir() . 'config.php')) { - $config = null; - - // scope isolated require() - $includeClosure = function ($configFile) use (&$config) { - require($configFile); - }; - if (PHP_VERSION_ID >= 50400) { - $includeClosure = $includeClosure->bindTo(null); - } - - // config.php in Pico::$rootDir is deprecated - // use config.php in Pico::$configDir instead - $includeClosure($this->getRootDir() . 'config.php'); - - if (is_array($config)) { - if (isset($config['base_url'])) { - $config['base_url'] = rtrim($config['base_url'], '/') . '/'; - } - if (isset($config['content_dir'])) { - $config['content_dir'] = rtrim($config['content_dir'], '/\\') . '/'; - } - - $realConfig = $config + $realConfig; - } - } - } - - /** - * Enables the plugins PicoParsePagesContent and PicoExcerpt - * - * @see PicoParsePagesContent - * @see PicoExcerpt - * @return void - */ - protected function enablePlugins() - { - // enable PicoParsePagesContent and PicoExcerpt - // we can't enable them during onPluginsLoaded because we can't know - // if the user disabled us (PicoDeprecated) manually in the config - $plugins = $this->getPlugins(); - if (isset($plugins['PicoParsePagesContent'])) { - // parse all pages content if this plugin hasn't - // be explicitly enabled/disabled yet - if (!$plugins['PicoParsePagesContent']->isStatusChanged()) { - $plugins['PicoParsePagesContent']->setEnabled(true, true, true); - } - } - if (isset($plugins['PicoExcerpt'])) { - // enable excerpt plugin if it hasn't be explicitly enabled/disabled yet - if (!$plugins['PicoExcerpt']->isStatusChanged()) { - $plugins['PicoExcerpt']->setEnabled(true, true, true); - } - } - } - - /** - * Triggers the deprecated event request_url($url) - * - * @see DummyPlugin::onRequestUrl() - */ - public function onRequestUrl(&$url) - { - $this->triggerEvent('request_url', array(&$url)); - } - - /** - * Sets PicoDeprecated::$requestFile to trigger the deprecated - * events after_load_content() and after_404_load_content() - * - * @see PicoDeprecated::onContentLoaded() - * @see PicoDeprecated::on404ContentLoaded() - * @see DummyPlugin::onRequestFile() - */ - public function onRequestFile(&$file) - { - $this->requestFile = &$file; - } - - /** - * Triggers the deprecated before_load_content($file) - * - * @see DummyPlugin::onContentLoading() - */ - public function onContentLoading(&$file) - { - $this->triggerEvent('before_load_content', array(&$file)); - } - - /** - * Triggers the deprecated event after_load_content($file, $rawContent) - * - * @see DummyPlugin::onContentLoaded() - */ - public function onContentLoaded(&$rawContent) - { - $this->triggerEvent('after_load_content', array(&$this->requestFile, &$rawContent)); - } - - /** - * Triggers the deprecated before_404_load_content($file) - * - * @see DummyPlugin::on404ContentLoading() - */ - public function on404ContentLoading(&$file) - { - $this->triggerEvent('before_404_load_content', array(&$file)); - } - - /** - * Triggers the deprecated event after_404_load_content($file, $rawContent) - * - * @see DummyPlugin::on404ContentLoaded() - */ - public function on404ContentLoaded(&$rawContent) - { - $this->triggerEvent('after_404_load_content', array(&$this->requestFile, &$rawContent)); - } - - /** - * Triggers the deprecated event before_read_file_meta($headers) - * - * @see DummyPlugin::onMetaHeaders() - */ - public function onMetaHeaders(array &$headers) - { - $this->triggerEvent('before_read_file_meta', array(&$headers)); - } - - /** - * Triggers the deprecated event file_meta($meta) - * - * @see DummyPlugin::onMetaParsed() - */ - public function onMetaParsed(array &$meta) - { - $this->triggerEvent('file_meta', array(&$meta)); - } - - /** - * Triggers the deprecated event before_parse_content($rawContent) - * - * @see DummyPlugin::onContentParsing() - */ - public function onContentParsing(&$rawContent) - { - $this->triggerEvent('before_parse_content', array(&$rawContent)); - } - - /** - * Triggers the deprecated events after_parse_content($content) and - * content_parsed($content) - * - * @see DummyPlugin::onContentParsed() - */ - public function onContentParsed(&$content) - { - $this->triggerEvent('after_parse_content', array(&$content)); - - // deprecated since v0.8 - $this->triggerEvent('content_parsed', array(&$content)); - } - - /** - * Triggers the deprecated event get_page_data($pages, $meta) - * - * @see DummyPlugin::onSinglePageLoaded() - */ - public function onSinglePageLoaded(array &$pageData) - { - $this->triggerEvent('get_page_data', array(&$pageData, $pageData['meta'])); - } - - /** - * Triggers the deprecated event - * get_pages($pages, $currentPage, $previousPage, $nextPage) - * - * Please note that the `get_pages()` event gets `$pages` passed without a - * array index. The index is rebuild later using either the `id` array key - * or is derived from the `url` array key. Duplicates are prevented by - * adding `~dup` when necessary. - * - * @see DummyPlugin::onPagesLoaded() - */ - public function onPagesLoaded( - array &$pages, - array &$currentPage = null, - array &$previousPage = null, - array &$nextPage = null - ) { - // remove keys of pages array - $plainPages = array(); - foreach ($pages as &$pageData) { - $plainPages[] = &$pageData; - } - unset($pageData); - - $this->triggerEvent('get_pages', array(&$plainPages, &$currentPage, &$previousPage, &$nextPage)); - - // re-index pages array - $pages = array(); - foreach ($plainPages as &$pageData) { - if (!isset($pageData['id'])) { - $urlPrefixLength = strlen($this->getBaseUrl()) + intval(!$this->isUrlRewritingEnabled()); - $pageData['id'] = substr($pageData['url'], $urlPrefixLength); - } - - // prevent duplicates - $id = $pageData['id']; - for ($i = 1; isset($pages[$id]); $i++) { - $id = $pageData['id'] . '~dup' . $i; - } - - $pages[$id] = &$pageData; - } - } - - /** - * Triggers the deprecated event before_twig_register() - * - * @see DummyPlugin::onTwigRegistration() - */ - public function onTwigRegistration() - { - $this->triggerEvent('before_twig_register'); - } - - /** - * Adds the deprecated variables rewrite_url and is_front_page, triggers - * the deprecated event before_render($twigVariables, $twig, $templateName) - * - * Please note that the `before_render()` event gets `$templateName` passed - * without its file extension. The file extension is later added again. - * - * @see DummyPlugin::onPageRendering() - */ - public function onPageRendering(Twig_Environment &$twig, array &$twigVariables, &$templateName) - { - // rewrite_url and is_front_page are deprecated since Pico 2.0 - if (!isset($twigVariables['rewrite_url'])) { - $twigVariables['rewrite_url'] = $this->isUrlRewritingEnabled(); - } - - if (!isset($twigVariables['is_front_page'])) { - $frontPage = $this->getConfig('content_dir') . 'index' . $this->getConfig('content_ext'); - $twigVariables['is_front_page'] = ($this->getRequestFile() === $frontPage); - } - - // template name contains file extension since Pico 1.0 - $fileExtension = ''; - if (($fileExtensionPos = strrpos($templateName, '.')) !== false) { - $fileExtension = substr($templateName, $fileExtensionPos); - $templateName = substr($templateName, 0, $fileExtensionPos); - } - - $this->triggerEvent('before_render', array(&$twigVariables, &$twig, &$templateName)); - - // add original file extension - $templateName = $templateName . $fileExtension; - } - - /** - * Triggers the deprecated event after_render($output) - * - * @see DummyPlugin::onPageRendered() - */ - public function onPageRendered(&$output) - { - $this->triggerEvent('after_render', array(&$output)); - } - - /** - * Triggers a deprecated event on all plugins - * - * Deprecated events are also triggered on plugins which implement - * {@link PicoPluginInterface}. Please note that the methods are called - * directly and not through {@link PicoPluginInterface::handleEvent()}. - * - * @param string $eventName event to trigger - * @param array $params parameters to pass - * @return void - */ - protected function triggerEvent($eventName, array $params = array()) - { - foreach ($this->getPlugins() as $plugin) { - if (method_exists($plugin, $eventName)) { - call_user_func_array(array($plugin, $eventName), $params); - } - } - } -} diff --git a/themes/.gitignore b/themes/.gitignore new file mode 100644 index 0000000..24560b5 --- /dev/null +++ b/themes/.gitignore @@ -0,0 +1,2 @@ +# This directory is meant to be empty +* diff --git a/themes/default/font/LICENSE.txt b/themes/default/font/LICENSE.txt deleted file mode 100644 index 0e67558..0000000 --- a/themes/default/font/LICENSE.txt +++ /dev/null @@ -1,23 +0,0 @@ -Icon fonts generator - -## Fontello - - Copyright (C) 2011 by Vitaly Puzrin - - Author: Vitaly Puzrin - License: The MIT License - Homepage: http://fontello.com/ - - - -Font license info - -## Font Awesome - - Copyright (C) 2012 by Dave Gandy - - Author: Dave Gandy - License: SIL OFL 1.1 - Homepage: http://fortawesome.github.com/Font-Awesome/ - - Icons: menu, github-circled ("octocat"), chat diff --git a/themes/default/font/fontello.eot b/themes/default/font/fontello.eot deleted file mode 100644 index ed72da04fb03a22db8bcc8ffae1501b28c48c353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6012 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 diff --git a/themes/default/font/fontello.svg b/themes/default/font/fontello.svg deleted file mode 100644 index b48d933..0000000 --- a/themes/default/font/fontello.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - -Copyright (C) 2017 by original authors @ fontello.com - - - - - - - - - - - - \ No newline at end of file diff --git a/themes/default/font/fontello.ttf b/themes/default/font/fontello.ttf deleted file mode 100644 index fedcbb768616e5f7bcd8a6b1b6ec04755396b6d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5844 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 l)b=g>V>bJ(1+saJIeSTUKDdg{|A{2?n?jw diff --git a/themes/default/font/fontello.woff b/themes/default/font/fontello.woff deleted file mode 100644 index 41eaa45a4a30df12fccfc7c704b393f405c77bb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3484 zcmY+Gc{Ei28^`Y$#x`SLCR^5!ZR{z#!lXo&ELjGF$&6(XqKUFEHL_$UOHvftNP{7= z45lnuvnyM)phSMx_xt_l_c`Zvp3n2X&-3{__ndpqeTQ8zH3c95xDW*Z=V25W`Zqt^ z|Nkn$hy$pe0@Jc zaR6Y@1vOp}aoF$yqj#VW0o1GjfQbwM?19PYWJe!NFxbmH1J{`=?0*P3#7jf8k4J3ZiNa0O*fv3BdyZej>%DvXpy$7w>?Ku-1^n(>c_Hf5U17uyb zd{tR>z4RDpC$y(78pk2-eJhaxkauJ<2ma}G?K%+?lNA$Fm5k$rLQObhy`x&)ySf

F?hy0xegJHf-?@F4Y@t| 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 - - - - - - {% if meta.title %}{{ meta.title }} | {% endif %}{{ site_title }} - {% if meta.description %} - - {% endif %}{% if meta.robots %} - - {% endif %} - - - - - - - -

- -
-
- {{ content }} -
-
- - - - - - - - - diff --git a/themes/default/js/modernizr-3.3.1-custom.min.js b/themes/default/js/modernizr-3.3.1-custom.min.js deleted file mode 100644 index 33ad568..0000000 --- a/themes/default/js/modernizr-3.3.1-custom.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! modernizr 3.3.1 (Custom Build) | MIT * - * https://modernizr.com/download/?-classlist-csstransitions-requestanimationframe !*/ -!function(e,n,t){function r(e,n){return typeof e===n}function i(){var e,n,t,i,o,s,a;for(var f in y)if(y.hasOwnProperty(f)){if(e=[],n=y[f],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;tp;p++)if(v=e[p],h=P.style[v],s(v,"-")&&(v=o(v)),P.style[v]!==t){if(a||r(i,"undefined"))return f(),"pfx"==n?v:!0;try{P.style[v]=i}catch(g){}if(P.style[v]!=h)return f(),"pfx"==n?v:!0}return f(),!1}function v(e,n,t,i,o){var s=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+_.join(s+" ")+s).split(" ");return r(n,"string")||r(n,"undefined")?m(a,n,i,o):(a=(e+" "+E.join(s+" ")+s).split(" "),f(a,n,t))}function h(e,n,r){return v(e,t,t,n,r)}var y=[],g={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){y.push({name:e,fn:n,options:t})},addAsyncTest:function(e){y.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=g,Modernizr=new Modernizr;var C=[],w=n.documentElement;Modernizr.addTest("classlist","classList"in w);var x="Moz O ms Webkit",_=g._config.usePrefixes?x.split(" "):[];g._cssomPrefixes=_;var S=function(n){var r,i=prefixes.length,o=e.CSSRule;if("undefined"==typeof o)return t;if(!n)return!1;if(n=n.replace(/^@/,""),r=n.replace(/-/g,"_").toUpperCase()+"_RULE",r in o)return"@"+n;for(var s=0;i>s;s++){var a=prefixes[s],f=a.toUpperCase()+"_"+r;if(f in o)return"@-"+a.toLowerCase()+"-"+n}return!1};g.atRule=S;var E=g._config.usePrefixes?x.toLowerCase().split(" "):[];g._domPrefixes=E;var T="svg"===w.nodeName.toLowerCase(),z={elem:l("modernizr")};Modernizr._q.push(function(){delete z.elem});var P={style:z.elem.style};Modernizr._q.unshift(function(){delete P.style}),g.testAllProps=v;var b=g.prefixed=function(e,n,t){return 0===e.indexOf("@")?S(e):(-1!=e.indexOf("-")&&(e=o(e)),n?v(e,n,t):v(e,"pfx"))};Modernizr.addTest("requestanimationframe",!!b("requestAnimationFrame",e),{aliases:["raf"]}),g.testAllProps=h,Modernizr.addTest("csstransitions",h("transition","all",!0)),i(),delete g.addTest,delete g.addAsyncTest;for(var L=0;L .container > table'); - for (var i = 0; i < tables.length; i++) { - if (!/\btable-responsive\b/.test(tables[i].parentElement.className)) { - var tableWrapper = document.createElement('div'); - tableWrapper.className = 'table-responsive'; - - tables[i].parentElement.insertBefore(tableWrapper, tables[i]); - tableWrapper.appendChild(tables[i]); - } - } - - // responsive menu - var menu = document.getElementById('nav'), - menuToggle = document.getElementById('nav-toggle'), - toggleMenuEvent = function (event) { - if (event.type === 'keydown') { - if ((event.keyCode != 13) && (event.keyCode != 32)) { - return; - } - } - - event.preventDefault(); - - if (menuToggle.getAttribute('aria-expanded') === 'false') { - menuToggle.setAttribute('aria-expanded', 'true'); - utils.slideDown(menu, null, function () { - if (event.type === 'keydown') { - menu.focus(); - } - }); - } else { - menuToggle.setAttribute('aria-expanded', 'false'); - utils.slideUp(menu); - } - }, - onResizeEvent = function () { - if (utils.isElementVisible(menuToggle)) { - menu.className = 'hidden'; - menuToggle.addEventListener('click', toggleMenuEvent); - menuToggle.addEventListener('keydown', toggleMenuEvent); - } else { - menu.className = ''; - menu.removeAttribute('data-slide-id'); - menuToggle.removeEventListener('click', toggleMenuEvent); - menuToggle.removeEventListener('keydown', toggleMenuEvent); - } - }; - - window.addEventListener('resize', onResizeEvent); - onResizeEvent(); -} - -main(); diff --git a/themes/default/js/utils.js b/themes/default/js/utils.js deleted file mode 100644 index 3b48911..0000000 --- a/themes/default/js/utils.js +++ /dev/null @@ -1,135 +0,0 @@ -/** - * Pico's Default Theme - JavaScript helper - * - * Pico is a stupidly simple, blazing fast, flat file CMS. - * - * @author Daniel Rudolf - * @link http://picocms.org - * @license http://opensource.org/licenses/MIT The MIT License - * @version 2.0 - */ - -utils = {}; - -/** - * Checks whether the client's browser is able to slide elements or not - * - * @return boolean TRUE when the browser supports sliding, FALSE otherwise - */ -utils.canSlide = function () -{ - return (Modernizr.classlist && Modernizr.requestanimationframe && Modernizr.csstransitions); -}; - -/** - * Slides a element up (i.e. hide a element by changing its height to 0px) - * - * @param HTMLElement element the element to slide up - * @param function finishCallback function to call when the animation has - * been finished (i.e. the element is hidden) - * @param function startCallback function to call when the animation starts - * @return void - */ -utils.slideUp = function (element, finishCallback, startCallback) -{ - if (!utils.canSlide()) { - if (startCallback) startCallback(); - element.className += (element.className !== '') ? ' hidden' : 'hidden'; - if (finishCallback) window.requestAnimationFrame(finishCallback); - return; - } - - element.style.height = element.clientHeight + 'px'; - - var slideId = parseInt(element.getAttribute('data-slide-id')) || 0; - element.setAttribute('data-slide-id', ++slideId); - - window.requestAnimationFrame(function () { - element.classList.add('slide'); - - window.requestAnimationFrame(function () { - element.style.height = '0px'; - - if (startCallback) { - startCallback(); - } - - window.setTimeout(function () { - if (parseInt(element.getAttribute('data-slide-id')) !== slideId) return; - - element.classList.add('hidden'); - element.classList.remove('slide'); - element.style.height = null; - - if (finishCallback) { - window.requestAnimationFrame(finishCallback); - } - }, 500); - }); - }); -}; - -/** - * Slides a element down (i.e. show a hidden element) - * - * @param HTMLElement element the element to slide down - * @param function finishCallback function to call when the animation has - * been finished (i.e. the element is visible) - * @param function startCallback function to call when the animation starts - * @return void - */ -utils.slideDown = function (element, finishCallback, startCallback) -{ - if (!utils.canSlide()) { - if (startCallback) startCallback(); - element.className = element.className.replace(/\bhidden\b */g, ''); - if (finishCallback) window.requestAnimationFrame(finishCallback); - return; - } - - var cssRuleOriginalValue = element.clientHeight + 'px', - slideId = parseInt(element.getAttribute('data-slide-id')) || 0; - - element.setAttribute('data-slide-id', ++slideId); - - element.style.height = null; - element.classList.remove('hidden'); - element.classList.remove('slide'); - var cssRuleValue = element.clientHeight + 'px'; - - element.style.height = cssRuleOriginalValue; - - window.requestAnimationFrame(function () { - element.classList.add('slide'); - - window.requestAnimationFrame(function () { - element.style.height = cssRuleValue; - - if (startCallback) { - startCallback(); - } - - window.setTimeout(function () { - if (parseInt(element.getAttribute('data-slide-id')) !== slideId) return; - - element.classList.remove('slide'); - element.style.height = null; - - if (finishCallback) { - window.requestAnimationFrame(finishCallback); - } - }, 500); - }); - }); -}; - -/** - * Checks whether a element is visible or not - * - * @param HTMLElement element the element to check - * @return boolean TRUE when the element is visible, FALSE otherwise - */ -utils.isElementVisible = function (element) -{ - return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length); -}; diff --git a/themes/default/style.css b/themes/default/style.css deleted file mode 100644 index 331ba8b..0000000 --- a/themes/default/style.css +++ /dev/null @@ -1,357 +0,0 @@ -/** - * Pico's Default Theme - * - * Pico's default theme is a bit bare - but that's intentional! The default - * theme isn't meant for production use, it's actually a template for you to - * design your own theme around. - * - * Pico is a stupidly simple, blazing fast, flat file CMS. - * - * @author Gilbert Pellegrom - * @author Daniel Rudolf - * @link http://picocms.org - * @license http://opensource.org/licenses/MIT The MIT License - * @version 2.0 - */ - -* { - box-sizing: border-box; - border: 0 none; - margin: 0; - padding: 0; -} - -.hidden { display: none !important; } -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0 none; -} - -.slide { - overflow-y: hidden !important; - -webkit-transition: height .5s ease-in !important; - transition: height .5s ease-in !important; -} - -/*** BASIC LAYOUT ***/ - -html, body { height: 100%; } - -body { display: flex; flex-direction: column; } -#main { flex: 1 0 auto; } -#header, #footer { flex: 0 0 auto; } - -#main { - padding: 5em 0 4em; -} - -.container { - max-width: 48em; - padding: 0 0.5em; - margin: 0 auto; -} -.widescreen .container { max-width: 72em; } - -/* very ugly overflow fix, avoid this whenever possible! */ -#main .container { overflow-x: auto; } - -/*** BASIC LAYOUT: HEADER ***/ - -#header { background: #2EAE9B; } - -#header h1 { - float: left; - font-size: 2rem; - margin: 0; - padding: 1.5em 1em 1.5em 0; -} -#header h1 a, #header h1 a:hover { color: #fff; } - -#nav { - text-align: right; - padding: 3em 0; -} -#nav ul { - list-style: none; - margin: 0; - padding: 0; -} -#nav ul li { - display: inline-block; - margin-left: 1em; - padding: 0; - font-weight: bold; -} - -#nav a, #nav-toggle { color: #afe1da; } -#nav .active a, #nav a:hover, #nav-toggle:hover { color: #fff; } - -#nav-toggle { display: none; } - -/* IE8 + IE9 clearfix */ -#header > .container:after { - content: ''; - display: block; - clear: both; -} - -/*** BASIC LAYOUT: FOOTER ***/ - -#footer { - background: #707070; - color: #C0C0C0; -} - -#footer a { color: #ddd; } -#footer a:hover { color: #fff; } - -#footer p { - margin: 0; - padding: 3em 0; -} - -#footer .social { - float: right; - padding: 1.5em 0 1.5em 1em; - font-size: 2rem; -} - -/*** BASIC LAYOUT: EXTRA SMALL DEVICES ***/ - -@media (max-width: 767px) { - #main { padding: 2em 0 1em; } - - #header h1 { - float: none; - padding: 0.5em 0; - } - - #nav { - clear: right; - padding: 0; - } - #nav ul { - padding-bottom: 1em; - } - #nav ul li { - display: block; - margin-left: 0; - text-align: center; - } - #nav ul li a { - display: block; - padding: 0.5em 0; - } - - .js #nav-toggle { - display: block; - float: right; - width: 2em; - margin: 0.6667em 0 0.6667em 1.3333em; - font-size: 1.5rem; - line-height: 2em; - text-align: center; - cursor: pointer; - } - .js #nav-toggle > * { vertical-align: middle; } - - #footer p { padding: 1em 0; } - #footer .social { padding: 0.5em 0 0.5em 1em; } -} - -/*** TYPOGRAPHY ***/ - -html { font-size: 16px; } - -body { - font-family: 'Droid Sans', 'Helvetica', 'Arial', sans-serif; - font-size: 1rem; - line-height: 1.6; - font-variant-ligatures: common-ligatures; - text-rendering: optimizeLegibility; - font-kerning: normal; - color: #444; -} - -p, td, th, li, dd { - text-align: justify; - overflow-wrap: break-word; - word-wrap: break-word; -} - -p, hr, table, .table-responsive, ol, ul, dl, pre, blockquote, fieldset { - margin-bottom: 1em; -} - -a { - color: #2EAE9B; - text-decoration: none; - -webkit-transition: color .2s ease-in; - transition: color .2s ease-in; -} -a:hover { color: #444; } - -h1, h2, h3, h4, h5, h6 { - margin-bottom: 0.6em; - font-weight: bold; - color: #333; -} -h1 { font-size: 2rem; } -h2 { font-size: 1.7rem; } -h3 { font-size: 1.4rem; } -h4 { font-size: 1.1rem; } -h5 { font-size: 1rem; } -h6 { font-size: 1rem; font-weight: normal; font-style: italic; } - -img { max-width: 100%; } - -hr { - border: 0.15em solid #f5f5f5; - border-radius: 0.3em; - background: #f5f5f5; -} - -abbr { text-decoration: underline dotted; } - -/*** TABLES ***/ - -table { border-spacing: 0; } - -td, th { - padding: 0.4em 1em; - vertical-align: top; -} -th { - font-weight: bold; - text-align: center; - background: #f5f5f5; - color: #333; -} - -td, th { border: solid 1px #ccc; } -tr:not(:last-child) td, tr:not(:last-child) th { border-bottom: 0 none; } -thead tr:last-child th { border-bottom: 0 none; } -td:not(:last-child), th:not(:last-child) { border-right: 0 none; } - -tr:first-child td:first-child, tr:first-child th:first-child { border-top-left-radius: 0.3em; } -tr:first-child td:last-child, tr:first-child th:last-child { border-top-right-radius: 0.3em; } -tbody tr:last-child td:first-child { border-bottom-left-radius: 0.3em; } -tbody tr:last-child td:last-child { border-bottom-right-radius: 0.3em; } -table thead + tbody tr:first-child td { border-radius: 0 !important; } - -.table-responsive { overflow-x: auto; } -.table-responsive > table { margin-bottom: 0; } - -/*** LISTS ***/ - -ol, ul { - list-style-position: outside; - padding-left: 1.5em; -} -ol { padding-left: 2.5em; } -li { padding-left: 0.5em; } - -dt { font-weight: bold; } -dd { margin-left: 2em; } - -/*** CODE ***/ - -code { - margin: 0 0.1em; - padding: 0.1em 0.2em; - border: 1px solid #ccc; - border-radius: 0.3em; - background: #f5f5f5; - font-family: 'Droid Sans Mono', 'Courier New', 'Courier', monospace; - font-size: 0.9rem; -} - -pre { - padding: 0 1em; - border: 1px solid #ccc; - border-radius: 0.3em; - background: #f5f5f5; - line-height: 1.4; -} -pre code { - display: block; - margin: 0; - padding: 1.1111em 0; - border: 0 none; - background: transparent; - overflow-x: auto; -} - -/*** BLOCKQUOTE ***/ - -blockquote { - font-style: italic; - margin-left: 1em; - padding-left: 1em; - border-left: 0.5em solid #f5f5f5; -} - -/*** FORMS ***/ - -label, fieldset legend { font-weight: bold; } - -input:not([type="checkbox"]):not([type="radio"]), button, select, textarea, fieldset, fieldset legend { - border: solid 1px #ccc; - border-radius: 0.3em; - background: #fff; - -webkit-transition: none .2s ease-in; - transition: none .2s ease-in; - -webkit-transition-property: border-color, background, box-shadow; - transition-property: border-color, background, box-shadow; -} - -input:not([type="checkbox"]):not([type="radio"]), button, select, textarea { - padding: 0.5em 1em; - outline: 0 none; - font-size: 1rem; -} -input:focus:not([type="checkbox"]):not([type="radio"]), button:focus, select:focus, textarea:focus { - border-color: #2EAE9B; - box-shadow: 0 0 8px #2EAE9B; -} -input[type="button"]:focus, input[type="submit"]:focus, input[type="reset"]:focus, button:focus, -input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover, button:hover { - background: #f5f5f5; - cursor: pointer; -} - -textarea, select[multiple] { - vertical-align: bottom; - overflow: auto; -} - -fieldset { - padding: 1em; - background: #f5f5f5; -} -fieldset legend { padding: 0 0.5em; } - -fieldset label, fieldset input, fieldset button, -fieldset select, fieldset textarea { - margin: 0.2em 0.5em; -} -fieldset label:first-child, fieldset input:first-child, fieldset button:first-child, -fieldset select:first-child, fieldset textarea:first-child { - margin-left: 0; -} -fieldset label:last-child, fieldset input:last-child, fieldset button:last-child, -fieldset select:last-child, fieldset textarea:last-child { - margin-right: 0; -} - -/* Firefox input size fix */ -input::-moz-focus-inner, button::-moz-focus-inner { - border: 0; - padding: 0; -}