├── index.html ├── css ├── fix-bootstrap.css ├── widget-blocks │ └── calendar.css ├── flexvideo.css ├── main.css └── bootstrap-theme.min.css ├── screenshot.png ├── fonts ├── FontAwesome.otf ├── fontawesome-webfont.eot ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── fontawesome-webfont.woff2 ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── img ├── content-post-format-image.png ├── content-post-format-link.png ├── content-post-format-quote.png └── content-post-format-video.png ├── js ├── main.js └── vendor │ ├── npm.js │ ├── html5shiv.min.js │ ├── respond.min.js │ ├── html5shiv.js │ └── modernizr.min.js ├── sidebar-left.php ├── sidebar-right.php ├── inc ├── template-widgets-hook.php ├── BootstrapBasicAdminHelp.php ├── BootstrapBasic.php ├── BootstrapBasicWp5.php ├── widgets │ ├── BootstrapBasicAutoRegisterWidgets.php │ ├── BootstrapBasicSearchWidget.php │ └── BootstrapBasicLegacySearchWidget.php ├── template-functions.php ├── views │ └── BootstrapBasicAdminHelp_v.php ├── extras.php ├── BootstrapBasicMyWalkerNavMenu.php └── template-tags.php ├── .github └── FUNDING.yml ├── content-page.php ├── LICENSE ├── page.php ├── no-results.php ├── footer.php ├── single.php ├── index.php ├── readme.txt ├── searchform.php ├── search.php ├── content-single.php ├── changelog.md ├── content-quote.php ├── content-aside.php ├── content-link.php ├── content.php ├── 404.php ├── style.css ├── header.php ├── archive.php ├── image.php ├── comments.php ├── .phpcs.xml.dist ├── functions.php └── languages └── bootstrap-basic.pot /index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /css/fix-bootstrap.css: -------------------------------------------------------------------------------- 1 | /* 2 | This file is for hot fix for Bootstrap. 3 | */ 4 | 5 | 6 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/screenshot.png -------------------------------------------------------------------------------- /fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /img/content-post-format-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/img/content-post-format-image.png -------------------------------------------------------------------------------- /img/content-post-format-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/img/content-post-format-link.png -------------------------------------------------------------------------------- /img/content-post-format-quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/img/content-post-format-quote.png -------------------------------------------------------------------------------- /img/content-post-format-video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/img/content-post-format-video.png -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rundiz-WP/bootstrap-basic/HEAD/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Main Javascript. 3 | * This file is for who want to make this theme as a new parent theme and you are ready to code your js here. 4 | */ -------------------------------------------------------------------------------- /sidebar-left.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /sidebar-right.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /js/vendor/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /css/widget-blocks/calendar.css: -------------------------------------------------------------------------------- 1 | /* 2 | Override widget block calendar to display the same as original design. 3 | 4 | @since 1.2.0 5 | */ 6 | 7 | 8 | .wp-block-calendar table th { 9 | background-color: transparent; 10 | } 11 | .wp-block-calendar .table caption { 12 | text-align: center; 13 | } 14 | .wp-block-calendar .wp-calendar-nav::after { 15 | clear: both; 16 | } 17 | .wp-block-calendar .wp-calendar-nav-prev { 18 | float: left; 19 | } 20 | .wp-block-calendar .wp-calendar-nav-next { 21 | float: right; 22 | } 23 | .wp-block-calendar tbody td, 24 | .wp-block-calendar th { 25 | border-left: none; 26 | border-right: none; 27 | } -------------------------------------------------------------------------------- /inc/template-widgets-hook.php: -------------------------------------------------------------------------------- 1 | ' . $new_calendar . ''; 21 | 22 | return $new_calendar; 23 | }// bootstrapBasicWidgetHooksGetCalendar 24 | } 25 | add_filter('get_calendar', 'bootstrapBasicWidgetHooksGetCalendar', 10, 1); 26 | 27 | -------------------------------------------------------------------------------- /inc/BootstrapBasicAdminHelp.php: -------------------------------------------------------------------------------- 1 | " > 2 |
3 |

4 |
5 | 6 |
7 | 8 |
9 | '', 17 | 'separator' => '', 18 | )); 19 | ?> 20 |
21 | 22 | 25 | -------------------------------------------------------------------------------- /css/flexvideo.css: -------------------------------------------------------------------------------- 1 | /* 2 | Flex video for responsive video. 3 | 4 | Link: https://gist.github.com/jgarber/2302238 5 | */ 6 | .flex-video { 7 | position: relative; 8 | padding-top: 25px; 9 | padding-bottom: 67.5%; 10 | height: 0; 11 | margin-bottom: 16px; 12 | overflow: hidden; 13 | } 14 | 15 | .flex-video.widescreen { 16 | padding-bottom: 57.25%; 17 | } 18 | .flex-video.vimeo { 19 | padding-top: 0; 20 | } 21 | 22 | .flex-video iframe, 23 | .flex-video object, 24 | .flex-video embed { 25 | position: absolute; 26 | top: 0; 27 | left: 0; 28 | width: 100%; 29 | height: 100%; 30 | } 31 | @media only screen and (max-device-width: 800px), 32 | only screen and (device-width: 1024px) and (device-height: 600px), 33 | only screen and (width: 1280px) and (orientation: landscape), 34 | only screen and (device-width: 800px), 35 | only screen and (max-width: 767px) { 36 | .flex-video { 37 | padding-top: 0; 38 | } 39 | } 40 | 41 | 42 | /* gutenberg support */ 43 | .wp-block-embed embed, 44 | .wp-block-embed iframe, 45 | .wp-block-embed object { 46 | max-width: 100%; 47 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Rundiz.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /page.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 35 |
36 |
37 | 38 | -------------------------------------------------------------------------------- /inc/BootstrapBasic.php: -------------------------------------------------------------------------------- 1 | 8 |
9 | 12 | 13 |
14 | 15 |

Get started here.', 'bootstrap-basic'), esc_url(admin_url('post-new.php'))); 18 | ?>

19 | 20 |

21 | 22 | 23 |

24 | 25 | 26 |
27 |
-------------------------------------------------------------------------------- /footer.php: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /single.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 39 |
40 |
41 | 42 | 43 | -------------------------------------------------------------------------------- /inc/BootstrapBasicWp5.php: -------------------------------------------------------------------------------- 1 | registerCommonStyles(); 46 | } 47 | wp_enqueue_style('bootstrap-style'); 48 | }// enqueueBlockEditorAssets 49 | 50 | 51 | } 52 | } -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 19 | 34 | 35 | 36 | 37 |
38 |
39 | 40 | -------------------------------------------------------------------------------- /inc/widgets/BootstrapBasicAutoRegisterWidgets.php: -------------------------------------------------------------------------------- 1 | isDot() && $fileinfo->isFile() && strtolower($fileinfo->getExtension()) === 'php') { 26 | $file_name_only = $fileinfo->getBasename('.php'); 27 | $namespace = __NAMESPACE__; 28 | $class_name = $namespace . (!empty($namespace) ? '\\' : '') . $file_name_only; 29 | require_once($fileinfo->getRealPath());// needs require to use `class_exists()`. 30 | 31 | if ($class_name !== __CLASS__ && class_exists($class_name)) { 32 | add_action('widgets_init', function () use ($class_name) { 33 | return register_widget($class_name); 34 | }); 35 | } 36 | 37 | unset($class_name, $file_name_only, $namespace); 38 | } 39 | }// endforeach; 40 | unset($DirectoryIterator, $fileinfo, $widgets_folder); 41 | }// registerAll 42 | 43 | 44 | }// BootstrapBasicAutoRegisterWidgets 45 | } 46 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Bootstrap Basic === 2 | Contributors: okvee, christianoliff 3 | Tags: one-column, two-columns, three-columns, left-sidebar, right-sidebar, custom-background, custom-menu, featured-images, post-formats, threaded-comments, translation-ready 4 | Tested up to: 6.8 5 | Requires at least: 4.0 6 | Requires PHP: 5.4 7 | Stable Tag: 1.2.6 8 | License: MIT 9 | License URI: https://opensource.org/licenses/MIT 10 | 11 | Bootstrap Basic WordPress theme, Copyright (C) Rundiz.com 12 | Bootstrap Basic WordPress theme is licensed under the MIT. 13 | 14 | Bootstrap Basic Uses Bootstrap https://getbootstrap.com/ licensed under Apache 2.0. 15 | Bootstrap Basic Uses Font Awesome https://fontawesome.com/ licensed under MIT. 16 | Bootstrap Basic Uses Font Awesome (font files) https://fontawesome.com/ licensed under SIL OFL 1.1. 17 | Bootstrap Basic Uses html5shiv https://github.com/afarkas/html5shiv licensed under MIT. 18 | Bootstrap Basic Uses Modernizr https://modernizr.com licensed under MIT. 19 | Bootstrap Basic Uses Respond https://github.com/scottjehl/Respond licensed under MIT. 20 | 21 | Bootstrap Basic is based on the _s (Underscores) starter theme by Automattic Inc., licensed under GPL. 22 | 23 | == Description == 24 | 25 | Bootstrap v.3 basic theme for developers to build their new theme very fast and easy. 26 | To follow what was changed, please look for commits ( https://github.com/Rundiz-WP/bootstrap-basic ) of this theme at Github or changelog.md file that come with the theme. 27 | 28 | == More feature == 29 | 30 | WordPress Menu 31 | To display menu correctly, please create at least 1 menu and set as primary and save. 32 | 33 | Bootstrap features 34 | This theme can use all Bootstrap 3 classes, elements and styles. 35 | 36 | Responsive image 37 | For responsive image please add img-responsive class to img element. 38 | 39 | Responsive video 40 | Cloak video element (video element or embeded video) with
...
. 41 | -------------------------------------------------------------------------------- /searchform.php: -------------------------------------------------------------------------------- 1 | 20 |
role="search" method="get" action=""> 21 | 22 |
23 | 24 |
25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 | 33 |
34 | 35 |
-------------------------------------------------------------------------------- /search.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 19 | 25 | 40 | 41 | 42 | 43 |
44 |
45 | 46 | 47 | -------------------------------------------------------------------------------- /content-single.php: -------------------------------------------------------------------------------- 1 |
> 2 |
3 |

4 | 5 | 8 |
9 | 10 |
11 | 12 |
13 | '', 21 | 'separator' => '', 22 | )); 23 | ?> 24 |
25 | 26 | 46 |
-------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # Theme change log. 2 | Started since v1.1 3 | 4 | ### v1.2.6 5 | 2024-07-07 6 | 7 | * Update style.css on these classes ( `.screen-reader-text`, `.aligncenter` ). 8 | 9 | ### v1.2.5 10 | 2023-12-25 11 | 12 | * Add dropdown header supported in navbar. 13 | * Update BootstrapBasic help message. 14 | 15 | ### v1.2.4 16 | 2022-12-29 17 | 18 | * Remove paypal link as never use. 19 | * Fix "Warning: Missing singular placeholder" error. 20 | * Fix missing active class on parent menu item that have child item active. 21 | * Update theme help page to properly use translation. 22 | * Update help page, add link to Bootstrap 3 doc. 23 | 24 | ### v1.2.3 25 | 2022-12-18 26 | 27 | * Fix incorrect check type scalar. 28 | * Fix "Overriding WordPress globals is prohibited" error. 29 | * Fix using `var_export()`. 30 | 31 | ### v1.2.2 32 | 2022-12-18 33 | 34 | * Fix missing `$depth` argument cause fatal error in WP 6.2. 35 | 36 | ### v1.2.1 37 | 2022-01-24 38 | 39 | * Add more condition to check calendar widget block. 40 | * Removed fixed Bootstrap CSS. 41 | * Add check function exists in inc/BootstrapBasicWp5.php. 42 | 43 | ### v1.2.0 44 | 2022-01-14 45 | 46 | * Use common search elements from searchform.php template. The search form in these files were changed: **404.php**, **inc/widgets/BootstrapBasicSearchWidget.php** 47 | * Add legacy search widget to use on sidebar. 48 | * Add CSS to override widget block **calendar** to its original style. 49 | * Wrap calendar table with responsive table class. 50 | * Tested with WordPress 5.9-RC2-52567 51 | 52 | ### v1.1.7 53 | 2021-12-14 54 | 55 | * Prevent PHP 8.1 non-string argument errors. 56 | * Update `Tested up to` to `major.minor` version only as suggested by theme check plugin. 57 | 58 | ### v1.1.5 59 | 2021-08-18 60 | 61 | * Fix errors in PHP 8.0. 62 | * Minor bugs fix. 63 | * Now supported PHP 8.0. 64 | * Fix missing `wp_body_open()` function. 65 | 66 | ### v1.1.3 67 | 2019-03-14 68 | 69 | * Fix comment-reply does not enqueue. 70 | 71 | ### v1.1.2 72 | 2019-03-14 73 | 74 | * Un-depreacated wp_title 75 | * Update Bootstrap, Modernizr 76 | 77 | ### v1.1.1 78 | 2018-12-14 79 | 80 | * Update to [Bootstrap 3.4.0](https://blog.getbootstrap.com/2018/12/13/bootstrap-3-4-0/). 81 | * Update Modernizr. 82 | * Removed old, outdated, unnecessary document. 83 | 84 | ### v1.1 85 | 2018-12-08 86 | 87 | This release is for WordPress 5.0+. It is still support older version of WordPress. 88 | * Make better Gutenberg support. 89 | * Add more help text. 90 | * Add translators help message. `/* translators: xxx */` 91 | * Add translation template file (.POT). -------------------------------------------------------------------------------- /content-quote.php: -------------------------------------------------------------------------------- 1 | 8 |
> 9 |
10 | 11 |
12 | '', 20 | 'separator' => '', 21 | )); 22 | ?> 23 |
24 | 25 | 58 |
-------------------------------------------------------------------------------- /js/vendor/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?: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,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.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",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /content-aside.php: -------------------------------------------------------------------------------- 1 | 8 |
> 9 |
10 | 11 |
12 | '', 20 | 'separator' => '', 21 | )); 22 | ?> 23 |
24 | 25 | 66 |
-------------------------------------------------------------------------------- /content-link.php: -------------------------------------------------------------------------------- 1 | 8 |
> 9 |
10 |

11 | 12 |

13 | 14 | 19 |
20 | 21 |
22 | 23 |
24 | '', 32 | 'separator' => '', 33 | )); 34 | ?> 35 |
36 | 37 | 38 | 71 | 72 |
-------------------------------------------------------------------------------- /content.php: -------------------------------------------------------------------------------- 1 |
> 2 |
3 |

4 | 5 | 6 | 9 | 10 |
11 | 12 | 13 | 14 |
15 | 16 |
17 |
18 | 19 |
20 | 21 |
22 | '', 30 | 'separator' => '', 31 | )); 32 | ?> 33 |
34 | 35 | 36 | 37 | 70 |
-------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 | 9 | 10 |
11 |

12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 |
20 |
21 |
22 |

23 |
    24 | 'count', 27 | 'order' => 'DESC', 28 | 'show_count' => 1, 29 | 'title_li' => '', 30 | 'number' => 10, 31 | )); 32 | ?> 33 |
34 |
35 |
36 |
37 | ' . sprintf(__('Try looking in the monthly archives. %1$s', 'bootstrap-basic'), convert_smilies(':)')) . '

'; 40 | the_widget('WP_Widget_Archives', 'dropdown=1', "after_title=$archive_content"); 41 | ?> 42 |
43 |
44 | 45 |
46 |
47 |
48 |
49 |
50 |
51 | 52 | -------------------------------------------------------------------------------- /inc/template-functions.php: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 |

5 |

6 |

7 |

divider', 12 | '' . __('CSS Classes', 'bootstrap-basic') . '' 13 | ); 14 | ?>

15 |

16 |

dropdown-header', 21 | '' . __('CSS Classes', 'bootstrap-basic') . '' 22 | ); 23 | ?>

24 | 25 |

26 |

', 31 | '' 32 | ); 33 | ?>

34 | 35 |

36 |

<img src="..." alt="" class="img-responsive">' 41 | ); 42 | ?>

43 | 44 |

', 'bootstrap-basic'); ?> 45 | <div class="flexvideo">...</div>' 50 | ); 51 | ?> 52 | 53 |

54 |

55 | ', '' 60 | ); 61 | ?> 62 | 63 |

64 | 65 | 66 | 67 | 77 | -------------------------------------------------------------------------------- /js/vendor/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 3 | * */ 4 | 5 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b Appearance > Bootstrap Basic Help. 7 | Version: 1.2.6 8 | Requires PHP: 5.4 9 | Requires at least: 4.0 10 | Tested up to: 6.8 11 | License: MIT 12 | License URI: https://opensource.org/licenses/MIT 13 | Text Domain: bootstrap-basic 14 | Domain Path: /languages/ 15 | Tags: one-column, two-columns, three-columns, left-sidebar, right-sidebar, custom-background, custom-menu, featured-images, front-page-post-form, post-formats, threaded-comments, translation-ready 16 | 17 | This theme built with Twitter Bootstrap v.3. It is basic theme with basic style for build new theme with Bootstrap. 18 | 19 | */ 20 | 21 | 22 | /* 23 | Required WordPress CSS 24 | */ 25 | .aligncenter { 26 | text-align: center; 27 | } 28 | .alignleft { 29 | display: inline; 30 | float: left; 31 | margin-right: 1.5em; 32 | } 33 | .alignright { 34 | float: right; 35 | margin-left: 1.5em; 36 | } 37 | .bypostauthor { 38 | } 39 | 40 | 41 | /* WordPress gallery */ 42 | .gallery-caption { 43 | } 44 | .gallery { 45 | margin-bottom: 1.6em; 46 | } 47 | .gallery-item { 48 | display: inline-block; 49 | padding: 1.79104477%; 50 | text-align: center; 51 | vertical-align: top; 52 | width: 100%; 53 | } 54 | .gallery-columns-2 .gallery-item { 55 | max-width: 50%; 56 | } 57 | .gallery-columns-3 .gallery-item { 58 | max-width: 33.33%; 59 | } 60 | .gallery-columns-4 .gallery-item { 61 | max-width: 25%; 62 | } 63 | .gallery-columns-5 .gallery-item { 64 | max-width: 20%; 65 | } 66 | .gallery-columns-6 .gallery-item { 67 | max-width: 16.66%; 68 | } 69 | .gallery-columns-7 .gallery-item { 70 | max-width: 14.28%; 71 | } 72 | .gallery-columns-8 .gallery-item { 73 | max-width: 12.5%; 74 | } 75 | .gallery-columns-9 .gallery-item { 76 | max-width: 11.11%; 77 | } 78 | .gallery-icon img { 79 | margin: 0 auto; 80 | } 81 | .gallery-caption { 82 | color: #707070; 83 | color: rgba(51, 51, 51, 0.7); 84 | display: block; 85 | font-family: "Noto Sans", sans-serif; 86 | font-size: 12px; 87 | font-size: 1.2rem; 88 | line-height: 1.5; 89 | padding: 0.5em 0; 90 | } 91 | .gallery-columns-6 .gallery-caption, 92 | .gallery-columns-7 .gallery-caption, 93 | .gallery-columns-8 .gallery-caption, 94 | .gallery-columns-9 .gallery-caption { 95 | display: none; 96 | } 97 | 98 | 99 | .sticky { 100 | } 101 | .wp-caption { 102 | border: 1px solid #ccc; 103 | margin-bottom: 1.5em; 104 | max-width: 100%; 105 | } 106 | .wp-caption img[class*="wp-image-"] { 107 | display: block; 108 | margin: 1.2% auto 0; 109 | max-width: 98%; 110 | } 111 | .wp-caption-text { 112 | text-align: center; 113 | } 114 | .wp-caption .wp-caption-text { 115 | margin: 0.8075em 0; 116 | } 117 | /* 118 | Text meant only for screen readers. 119 | copied from https://codex.wordpress.org/CSS 120 | */ 121 | .screen-reader-text { 122 | border: 0; 123 | clip: rect(1px, 1px, 1px, 1px); 124 | clip-path: inset(50%); 125 | height: 1px; 126 | margin: -1px; 127 | overflow: hidden; 128 | padding: 0; 129 | position: absolute !important; 130 | width: 1px; 131 | word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */ 132 | } 133 | 134 | .screen-reader-text:focus { 135 | background-color: #f1f1f1; 136 | border-radius: 3px; 137 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); 138 | clip: auto !important; 139 | clip-path: none; 140 | color: #21759b; 141 | display: block; 142 | font-size: 14px; 143 | font-size: 0.875rem; 144 | font-weight: bold; 145 | height: auto; 146 | left: 5px; 147 | line-height: normal; 148 | padding: 15px 23px 14px; 149 | text-decoration: none; 150 | top: 5px; 151 | width: auto; 152 | z-index: 100000; /* Above WP toolbar. */ 153 | } 154 | -------------------------------------------------------------------------------- /inc/widgets/BootstrapBasicSearchWidget.php: -------------------------------------------------------------------------------- 1 | __('Display Search widget for Bootstrap navbar.', 'bootstrap-basic')) 29 | ); 30 | }// __construct 31 | 32 | 33 | /** 34 | * back-end widget form 35 | * 36 | * @see WP_Widget::form() 37 | * @param array $instance Previously saved values from database. 38 | */ 39 | public function form($instance) 40 | { 41 | // navbar align 42 | if (isset($instance['navbaralign'])) { 43 | $navbaralign = $instance['navbaralign']; 44 | } else { 45 | $navbaralign = $this->navbaralign; 46 | } 47 | 48 | // output form 49 | $output = '

'; 50 | $output .= ''; 51 | $output .= ''; 55 | $output .= '

'; 56 | 57 | echo $output; 58 | 59 | unset($output); 60 | }// form 61 | 62 | 63 | /** 64 | * Sanitize widget form values as they are saved. 65 | * 66 | * @see WP_Widget::update() 67 | * @param array $new_instance Values just sent to be saved. 68 | * @param array $old_instance Previously saved values from database. 69 | * @return array Updated safe values to be saved. 70 | */ 71 | public function update($new_instance, $old_instance) 72 | { 73 | $instance = array(); 74 | 75 | if ($new_instance['navbaralign'] !== 'navbar-left' && $new_instance['navbaralign'] !== 'navbar-right') { 76 | $instance['navbaralign'] = $this->navbaralign; 77 | } else { 78 | $instance['navbaralign'] = $new_instance['navbaralign']; 79 | } 80 | 81 | return $instance; 82 | }// update 83 | 84 | 85 | /** 86 | * front-end display of widget 87 | * 88 | * @see WP_Widget::widget() 89 | * @param array $args Widget arguments. 90 | * @param array $instance Saved values from database. 91 | */ 92 | public function widget($args, $instance) 93 | { 94 | $navbaralign = $this->navbaralign; 95 | if (isset($instance['navbaralign']) && !empty($instance['navbaralign'])) { 96 | $navbaralign = $instance['navbaralign']; 97 | } 98 | 99 | // set output front-end widget --------------------------------- 100 | $output = $args['before_widget']; 101 | 102 | $searchFormArgs = []; 103 | $searchFormArgs['echo'] = false; 104 | $searchFormArgs['bootstrapbasic']['form_classes'] = 'navbar-form ' . $navbaralign; 105 | $searchFormArgs['bootstrapbasic']['display_for'] = 'navbar'; 106 | 107 | $output .= get_search_form($searchFormArgs); 108 | unset($searchFormArgs); 109 | 110 | $output .= $args['after_widget']; 111 | 112 | echo $output; 113 | 114 | // clear unused variables 115 | unset($output); 116 | }// widget 117 | 118 | 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /inc/widgets/BootstrapBasicLegacySearchWidget.php: -------------------------------------------------------------------------------- 1 | __('Display Search widget for Bootstrap that can be use in sidebar.', 'bootstrap-basic')) 29 | ); 30 | }// __construct 31 | 32 | 33 | /** 34 | * back-end widget form 35 | * 36 | * @see WP_Widget::form() 37 | * @param array $instance Previously saved values from database. 38 | */ 39 | public function form($instance) 40 | { 41 | // search widget title 42 | if (isset($instance['bootstrapbasic-legacysearch-widget-title'])) { 43 | $this->widget_title = $instance['bootstrapbasic-legacysearch-widget-title']; 44 | } 45 | 46 | // output form 47 | $output = '

'; 48 | $output .= ''; 49 | $output .= ''; 50 | $output .= '

'; 51 | 52 | echo $output; 53 | 54 | unset($output); 55 | }// form 56 | 57 | 58 | /** 59 | * Sanitize widget form values as they are saved. 60 | * 61 | * @see WP_Widget::update() 62 | * @param array $new_instance Values just sent to be saved. 63 | * @param array $old_instance Previously saved values from database. 64 | * @return array Updated safe values to be saved. 65 | */ 66 | public function update($new_instance, $old_instance) 67 | { 68 | $instance = array(); 69 | 70 | if (isset($new_instance['bootstrapbasic-legacysearch-widget-title'])) { 71 | $instance['bootstrapbasic-legacysearch-widget-title'] = strip_tags($new_instance['bootstrapbasic-legacysearch-widget-title']); 72 | } else { 73 | $instance['bootstrapbasic-legacysearch-widget-title'] = ''; 74 | } 75 | 76 | return $instance; 77 | }// update 78 | 79 | 80 | /** 81 | * front-end display of widget 82 | * 83 | * @see WP_Widget::widget() 84 | * @param array $args Widget arguments. 85 | * @param array $instance Saved values from database. 86 | */ 87 | public function widget($args, $instance) 88 | { 89 | $widget_title = $this->widget_title; 90 | if (isset($instance['bootstrapbasic-legacysearch-widget-title'])) { 91 | $widget_title = $instance['bootstrapbasic-legacysearch-widget-title']; 92 | } 93 | 94 | // set output front-end widget --------------------------------- 95 | $output = $args['before_widget']; 96 | 97 | if (isset($instance['bootstrapbasic-legacysearch-widget-title']) && !empty($instance['bootstrapbasic-legacysearch-widget-title'])) { 98 | $output .= $args['before_title'] . apply_filters('widget_title', $instance['bootstrapbasic-legacysearch-widget-title']) . $args['after_title'] . "\n"; 99 | } 100 | 101 | $searchFormArgs = []; 102 | $searchFormArgs['echo'] = false; 103 | 104 | $output .= get_search_form($searchFormArgs); 105 | unset($searchFormArgs); 106 | 107 | $output .= $args['after_widget']; 108 | 109 | echo $output; 110 | 111 | // clear unused variables 112 | unset($output); 113 | }// widget 114 | 115 | 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | > 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | > 25 | 32 | 35 | 36 | 37 |
38 | 39 |
40 |
41 |
42 |

43 | 44 |

45 |
46 | 47 | 48 | 49 |
50 |
51 |
52 |
53 | 54 |
55 | 56 |
57 | 58 |
59 |
60 | 61 |
62 |
63 | 64 | 93 |
94 | 95 | 96 |
97 | -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Author's custom styles 3 | ========================================================================== */ 4 | @import 'flexvideo.css'; 5 | @import 'fix-bootstrap.css'; 6 | 7 | 8 | 9 | img.aligncenter { 10 | display: block; 11 | margin: 0 auto; 12 | } 13 | 14 | 15 | 16 | /* ancient-browser-alert error */ 17 | .ancient-browser-alert { 18 | background: #a00; 19 | color: #faa; 20 | display: block; 21 | padding: 3px 0; 22 | text-align: center; 23 | } 24 | .ancient-browser-alert a { 25 | color: #fff; 26 | text-decoration: underline; 27 | } 28 | 29 | 30 | 31 | .page-header-top-right { 32 | margin-top: 10px; 33 | } 34 | 35 | 36 | 37 | .pagination { 38 | margin: 0; 39 | } 40 | 41 | 42 | 43 | .pagination-center { 44 | text-align: center; 45 | } 46 | .pagination-row { 47 | margin-bottom: 20px; 48 | } 49 | 50 | 51 | 52 | .required { 53 | color: #f00; 54 | } 55 | 56 | 57 | 58 | .row-with-vspace { 59 | margin-bottom: 20px; 60 | } 61 | 62 | 63 | 64 | .site-main .format-aside { 65 | background: #f5f5f5; 66 | } 67 | .site-main .format-image { 68 | background: url('../img/content-post-format-image.png') left top no-repeat; 69 | } 70 | .site-main .format-link { 71 | background: url('../img/content-post-format-link.png') left top no-repeat; 72 | } 73 | .site-main .format-quote { 74 | background: url('../img/content-post-format-quote.png') left top no-repeat; 75 | } 76 | .site-main .format-video { 77 | background: url('../img/content-post-format-video.png') left top no-repeat; 78 | } 79 | 80 | 81 | 82 | .site-title { 83 | margin-bottom: 0; 84 | margin-top: 10px; 85 | } 86 | .site-title > a { 87 | text-decoration: none; 88 | } 89 | .site-title > div { 90 | height: auto; 91 | line-height: 18px; 92 | } 93 | .site-title .site-description { 94 | color: #999; 95 | font-size: 16px; 96 | } 97 | .site-title .site-title-heading { 98 | margin: 0; 99 | } 100 | 101 | 102 | 103 | .widget_calendar #wp-calendar { 104 | margin: 0; 105 | } 106 | .widget_calendar #wp-calendar #next { 107 | text-align: right; 108 | } 109 | 110 | 111 | 112 | #comments .comment-navigation { 113 | margin-bottom: 0; 114 | } 115 | #comments .comment-navigation-below { 116 | margin-bottom: 20px; 117 | margin-top: 15px; 118 | } 119 | #comments .media-list li .media { 120 | margin-top: 15px; 121 | } 122 | #comments .media-list li .media .media-body { 123 | border: 1px solid #eee; 124 | padding: 10px; 125 | } 126 | #comments .media-list li .media .media-body .comment-author { 127 | font-size: 12px; 128 | margin-bottom: 10px; 129 | } 130 | #comments .media-list ul.children { 131 | list-style: none; 132 | margin-left: 2.5em; 133 | } 134 | 135 | 136 | #main-column .wp-video-shortcode { 137 | display: block; 138 | height: auto; 139 | max-width: 100%; 140 | } 141 | #main-column .attachment .entry-content { 142 | margin-bottom: 20px; 143 | } 144 | #main-column .attachment .entry-content .attachment { 145 | text-align: center; 146 | } 147 | #main-column .attachment .entry-meta { 148 | margin-bottom: 20px; 149 | } 150 | #main-column .post, 151 | #main-column .page { 152 | border: 1px solid #eee; 153 | margin-bottom: 20px; 154 | padding: 10px; 155 | } 156 | #main-column .post .entry-header .entry-meta { 157 | color: #999; 158 | } 159 | #main-column .post .entry-header .entry-meta a { 160 | color: inherit; 161 | } 162 | #main-column .post .entry-header .entry-meta .posted-on .updated { 163 | display: none; 164 | } 165 | #main-column .post .entry-meta .categories-icon { 166 | cursor: default; 167 | } 168 | #main-column .post .entry-meta .comments-link a { 169 | color: #333; 170 | } 171 | #main-column .post .entry-meta .comments-link a .comment-icon .comment-total, 172 | #main-column .page .entry-meta .comments-link a .comment-icon .comment-total { 173 | color: #555; 174 | font-size: 12px; 175 | margin-left: 5px; 176 | } 177 | #main-column .attachment .edit-post-link a, 178 | #main-column .attachment .entry-meta .edit-post-link a, 179 | #main-column .post .entry-meta .edit-post-link a, 180 | #main-column .page .entry-meta .edit-post-link a { 181 | color: #333; 182 | } 183 | #main-column .post .entry-meta .tags-icon { 184 | cursor: default; 185 | } 186 | #main-column .attachment .entry-title, 187 | #main-column .post .entry-title, 188 | #main-column .page .entry-title { 189 | margin-top: 0; 190 | word-wrap: break-word; 191 | } 192 | 193 | 194 | 195 | #sidebar-left .widget, 196 | #sidebar-right .widget { 197 | border: 1px solid #eee; 198 | margin-bottom: 20px; 199 | overflow: hidden; 200 | padding: 10px; 201 | } 202 | #sidebar-left .widget ul, 203 | #sidebar-right .widget ul { 204 | padding-left: 20px; 205 | } 206 | #sidebar-left .widget .widget-title, 207 | #sidebar-right .widget .widget-title { 208 | font-size: 18px; 209 | margin-top: 0; 210 | } 211 | 212 | 213 | 214 | #site-footer { 215 | background: #f5f5f5; 216 | border-top: 3px solid #ddd; 217 | font-size: 12px; 218 | padding: 10px; 219 | } -------------------------------------------------------------------------------- /archive.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 |
18 | 19 | 20 |
', $term_description); 84 | } //endif; 85 | ?> 86 | 87 | 88 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 |
111 | 112 | -------------------------------------------------------------------------------- /image.php: -------------------------------------------------------------------------------- 1 | 10 |
11 |
12 | 16 | 17 |
> 18 |
19 | ', ''); ?> 20 | 21 | 41 | 42 | 46 |
47 | 48 |
49 |
50 |
51 | 52 |
53 | 54 | 55 |
56 | 57 |
58 | 59 |
60 | 61 | '', 76 | 'separator' => '' 77 | )); 78 | */ 79 | ?> 80 |
81 | 82 | 83 |
84 | 85 | 91 | 92 | 95 |
96 |
97 | -------------------------------------------------------------------------------- /inc/extras.php: -------------------------------------------------------------------------------- 1 | 0) { 62 | $html = str_replace('rel="attachment wp-att-'.$id.'"', '', $html); 63 | } 64 | 65 | return $html; 66 | }// bootstrapBasicImageSendToEditor 67 | } 68 | add_filter('image_send_to_editor', 'bootstrapBasicImageSendToEditor', 10, 2); 69 | 70 | 71 | if (!function_exists('bootstrapBasicLinkPagesLink')) { 72 | /** 73 | * replace pagination in posts/pages content to support bootstrap pagination class. 74 | * 75 | * @param string $link 76 | * @param integer $i 77 | * @return string 78 | */ 79 | function bootstrapBasicLinkPagesLink($link, $i) 80 | { 81 | if (!is_scalar($link)) { 82 | $link = ''; 83 | } 84 | 85 | if (strpos($link, '' . $link . ''; 87 | } else { 88 | return '
  • ' . $link . '
  • '; 89 | } 90 | }// bootstrapBasicLinkPagesLink 91 | } 92 | add_filter('wp_link_pages_link', 'bootstrapBasicLinkPagesLink', 10, 2); 93 | 94 | 95 | if (!function_exists('bootstrapBasicNavMenuCssClass')) { 96 | /** 97 | * Add custom class to nav menu 98 | * @param array $classes 99 | * @param object $menu_item 100 | * @return array 101 | */ 102 | function bootstrapBasicNavMenuCssClass($classes = array(), $menu_item = false) 103 | { 104 | if (!is_array($menu_item->classes)) { 105 | return $classes; 106 | } 107 | 108 | if (in_array('current-menu-item', $menu_item->classes)) { 109 | $classes[] = 'active'; 110 | } 111 | 112 | if (in_array('menu-item-has-children', $menu_item->classes)) { 113 | $classes[] = 'dropdown'; 114 | } 115 | 116 | if (in_array('sub-menu', $menu_item->classes)) { 117 | $classes[] = 'dropdown-menu'; 118 | } 119 | 120 | return $classes; 121 | }// bootstrapBasicNavMenuCssClass 122 | } 123 | add_filter('nav_menu_css_class', 'bootstrapBasicNavMenuCssClass', 10, 2); 124 | 125 | 126 | if (!function_exists('bootstrapBasicWpTitle')) { 127 | /** 128 | * Filters wp_title to print a neat tag based on what is being viewed. 129 | * 130 | * copy from underscore theme. 131 | * 132 | * @link https://developer.wordpress.org/reference/functions/wp_title/ Document. 133 | * @link https://make.wordpress.org/core/2015/10/20/document-title-in-4-4/ wp_title was deprecated. 134 | * @link https://core.trac.wordpress.org/changeset/35624 wp_title now un-deprecated. 135 | */ 136 | function bootstrapBasicWpTitle($title, $sep) 137 | { 138 | global $page, $paged; 139 | 140 | if (is_feed()) { 141 | return $title; 142 | } 143 | 144 | // Add the blog name 145 | $title .= get_bloginfo('name'); 146 | 147 | // Add the blog description for the home/front page. 148 | $site_description = get_bloginfo('description', 'display'); 149 | if ($site_description && (is_home() || is_front_page())) { 150 | $title .= " $sep $site_description"; 151 | } 152 | 153 | // Add a page number if necessary: 154 | if ($paged >= 2 || $page >= 2) { 155 | /* translators: %s: Page number. */ 156 | $title .= " $sep " . sprintf(__('Page %s', 'bootstrap-basic'), max($paged, $page)); 157 | } 158 | 159 | return $title; 160 | }// bootstrapBasicWpTitle 161 | } 162 | add_filter('wp_title', 'bootstrapBasicWpTitle', 10, 2); 163 | 164 | 165 | if (!function_exists('bootstrapBasicWpTitleSeparator')) { 166 | /** 167 | * Replace title separator from its original (-) to the new one (|).<br> 168 | * The old function `wp_title` has been deprecated. For more info please read at the link below 169 | * 170 | * @link https://developer.wordpress.org/reference/hooks/document_title_separator/ Document. 171 | */ 172 | function bootstrapBasicWpTitleSeparator($sep) 173 | { 174 | return '|'; 175 | }// bootstrapBasicWpTitleSeparator 176 | } 177 | add_filter('document_title_separator', 'bootstrapBasicWpTitleSeparator', 10, 1); 178 | 179 | -------------------------------------------------------------------------------- /inc/BootstrapBasicMyWalkerNavMenu.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * My walker nav menu extends WordPress walker nav menu class. 4 | * 5 | * @package bootstrap-basic 6 | */ 7 | 8 | 9 | if (!class_exists('BootstrapBasicMyWalkerNavMenu')) { 10 | class BootstrapBasicMyWalkerNavMenu extends \Walker_Nav_Menu 11 | { 12 | 13 | 14 | /** 15 | * Overwrite display_element function to add has_children attribute. Not needed in >= WordPress 3.4 16 | * 17 | * @link https://gist.github.com/duanecilliers/1817371 copy from this url 18 | * @inheritDoc 19 | */ 20 | public function display_element($element, &$children_elements, $max_depth, $depth, $args, &$output) 21 | { 22 | if (!$element) { 23 | return; 24 | } 25 | $id_field = $this->db_fields['id']; 26 | 27 | if (!is_numeric($depth)) { 28 | $depth = 0; 29 | } else { 30 | $depth = (int) $depth; 31 | } 32 | 33 | // display this element 34 | if (is_array($args[0])) { 35 | $args[0]['has_children'] = !empty($children_elements[$element->$id_field]); 36 | } elseif (is_object($args[0])) { 37 | $args[0]->has_children = !empty($children_elements[$element->$id_field]); 38 | } 39 | $cb_args = array_merge(array(&$output, $element, $depth), $args); 40 | call_user_func_array(array(&$this, 'start_el'), $cb_args); 41 | 42 | $id = $element->$id_field; 43 | 44 | // descend only when the depth is right and there are childrens for this element 45 | if ((0 === intval($max_depth) || $max_depth > $depth + 1) && isset($children_elements[$id])) { 46 | 47 | foreach ($children_elements[$id] as $child) { 48 | 49 | if (!isset($newlevel)) { 50 | $newlevel = true; 51 | // start the child delimiter 52 | $cb_args = array_merge(array(&$output, $depth), $args); 53 | call_user_func_array(array(&$this, 'start_lvl'), $cb_args); 54 | } 55 | $this->display_element($child, $children_elements, $max_depth, $depth + 1, $args, $output); 56 | } 57 | unset($children_elements[$id]); 58 | } 59 | 60 | if (isset($newlevel) && $newlevel) { 61 | // end the child delimiter 62 | $cb_args = array_merge(array(&$output, $depth), $args); 63 | call_user_func_array(array(&$this, 'end_lvl'), $cb_args); 64 | } 65 | 66 | // end this element 67 | $cb_args = array_merge(array(&$output, $element, $depth), $args); 68 | call_user_func_array(array(&$this, 'end_el'), $cb_args); 69 | }// display_element 70 | 71 | 72 | /** 73 | * Start element. 74 | * 75 | * @link https://gist.github.com/duanecilliers/1817371 copy from this URL. 76 | */ 77 | public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) 78 | { 79 | if ((is_object($item) && empty($item->title)) || (!is_object($item))) { 80 | return ; 81 | } 82 | if (!is_numeric($depth)) { 83 | $depth = 0; 84 | } else { 85 | $depth = (int) $depth; 86 | } 87 | 88 | $indent = ($depth) ? str_repeat("\t", $depth) : ''; 89 | 90 | $li_attributes = ''; 91 | $value = ''; 92 | $class_names = $value; 93 | $classes = empty($item->classes) ? array() : (array) $item->classes; 94 | // Add class and attribute to LI element that contains a submenu UL. 95 | if (is_object($args) && $args->has_children) { 96 | // $classes[] = 'dropdown'; 97 | $li_attributes .= ' data-dropdown="dropdown"'; 98 | } 99 | if (isset($classes) && in_array('divider', $classes)) { 100 | $li_attributes .= ' role="separator"'; 101 | } 102 | $classes[] = 'menu-item-' . $item->ID; 103 | // If we are on the current page, add the active class to that menu item. 104 | $classes[] = ($item->current) ? 'active' : ''; 105 | 106 | // Make sure you still add all of the WordPress classes. 107 | $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args, $depth)); 108 | if (strpos($class_names, 'current-menu-parent') !== false && strpos($class_names, 'active') === false) { 109 | $class_names .= ' active'; 110 | } 111 | $class_names = ' class="' . esc_attr($class_names) . '"'; 112 | 113 | $id = apply_filters('nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth); 114 | $id = strlen($id) ? ' id="' . esc_attr($id) . '"' : ''; 115 | 116 | $output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>'; 117 | 118 | if (isset($classes) && in_array('divider', $classes)) { 119 | // if it is Bootstrap dropdown divider, use this instead of link. 120 | $item_output = (is_object($args)) ? $args->before : ''; 121 | // no need to set link item content. refer to Bootstrap 3 document, it has just `<li role="separator" class="divider"></li>`. 122 | $item_output .= (is_object($args) ? $args->after : ''); 123 | } elseif (isset($classes) && in_array('dropdown-header', $classes)) { 124 | // if it is Bootstrap dropdown header, use this instead of link. 125 | $item_output = (is_object($args)) ? $args->before : ''; 126 | $item_output .= $item->title; 127 | $item_output .= (is_object($args) ? $args->after : ''); 128 | } else { 129 | // Add attributes to link element. 130 | $attributes = !empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) . '"' : ''; 131 | $attributes .=!empty($item->target) ? ' target="' . esc_attr($item->target) . '"' : ''; 132 | $attributes .=!empty($item->xfn) ? ' rel="' . esc_attr($item->xfn) . '"' : ''; 133 | $attributes .=!empty($item->url) ? ' href="' . esc_attr($item->url) . '"' : ''; 134 | $attributes .= (is_object($args) && $args->has_children) ? ' class="dropdown-toggle" data-toggle="dropdown"' : ''; 135 | 136 | $item_output = (is_object($args)) ? $args->before : ''; 137 | $item_output .= '<a' . $attributes . '>'; 138 | $item_output .= (is_object($args) ? $args->link_before : '') . apply_filters('the_title', $item->title, $item->ID) . (is_object($args) ? $args->link_after : ''); 139 | $item_output .= (is_object($args) && $args->has_children) ? ' <span class="caret"></span> ' : ''; 140 | $item_output .= '</a>'; 141 | $item_output .= (is_object($args) ? $args->after : ''); 142 | } 143 | 144 | // cleanup. 145 | unset($class_names, $classes, $li_attributes); 146 | 147 | $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args); 148 | }// start_el 149 | 150 | 151 | /** 152 | * Set start level HTML. 153 | * 154 | * @param string $output 155 | * @param int $depth 156 | * @param array $args 157 | */ 158 | public function start_lvl(&$output, $depth = 0, $args = array()) 159 | { 160 | $indent = str_repeat("\t", $depth); 161 | $output .= "\n$indent<ul class=\"sub-menu dropdown-menu\">\n"; 162 | } 163 | 164 | 165 | } 166 | }// endif; 167 | 168 | -------------------------------------------------------------------------------- /comments.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * Template for displaying comments 4 | * 5 | * @package bootstrap-basic 6 | */ 7 | 8 | 9 | if (post_password_required()) { 10 | return; 11 | } 12 | ?> 13 | <div id="comments" class="comments-area"> 14 | 15 | <?php // You can start editing here -- including this comment! ?> 16 | 17 | <?php if (have_comments()) { ?> 18 | <h2 class="comments-title"> 19 | <?php 20 | printf( 21 | /* translators: %1$s: Number of comments, %2$s: Post title. */ 22 | _nx( 23 | '%1$s comment on “%2$s”', 24 | '%1$s comments on “%2$s”', 25 | get_comments_number(), 26 | 'comments title', 27 | 'bootstrap-basic' 28 | ), 29 | number_format_i18n(get_comments_number()), 30 | '<span>' . get_the_title() . '</span>' 31 | ); 32 | ?> 33 | </h2> 34 | 35 | <?php if (get_comment_pages_count() > 1 && get_option('page_comments')) { // are there comments to navigate through ?> 36 | <h3 class="screen-reader-text sr-only"><?php _e('Comment navigation', 'bootstrap-basic'); ?></h3> 37 | <ul id="comment-nav-above" class="comment-navigation pager" role="navigation"> 38 | <li class="nav-previous previous"><?php previous_comments_link(__('← Older Comments', 'bootstrap-basic')); ?></li> 39 | <li class="nav-next next"><?php next_comments_link(__('Newer Comments →', 'bootstrap-basic')); ?></li> 40 | </ul><!-- #comment-nav-above --> 41 | <?php } // check for comment navigation ?> 42 | 43 | <ul class="media-list"> 44 | <?php 45 | /* 46 | * Loop through and list the comments. Tell wp_list_comments() 47 | * to use bootstrapBasicComment() to format the comments. 48 | * If you want to override this in a child theme, then you can 49 | * define bootstrapBasicComment() and that will be used instead. 50 | * See bootstrapBasicComment() in inc/template-tags.php for more. 51 | */ 52 | wp_list_comments(array('avatar_size' => '64', 'callback' => 'bootstrapBasicComment')); 53 | ?> 54 | </ul><!-- .comment-list --> 55 | 56 | <?php if (get_comment_pages_count() > 1 && get_option('page_comments')) { // are there comments to navigate through ?> 57 | <h3 class="screen-reader-text sr-only"><?php _e('Comment navigation', 'bootstrap-basic'); ?></h3> 58 | <ul id="comment-nav-below" class="comment-navigation comment-navigation-below pager" role="navigation"> 59 | <li class="nav-previous previous"><?php previous_comments_link(__('← Older Comments', 'bootstrap-basic')); ?></li> 60 | <li class="nav-next next"><?php next_comments_link(__('Newer Comments →', 'bootstrap-basic')); ?></li> 61 | </ul><!-- #comment-nav-below --> 62 | <?php } // check for comment navigation ?> 63 | 64 | <?php } // have_comments() ?> 65 | 66 | <?php 67 | // If comments are closed and there are comments, let's leave a little note, shall we? 68 | if (!comments_open() && '0' !== strval(get_comments_number()) && post_type_supports(get_post_type(), 'comments')) { ?> 69 | <p class="no-comments"><?php _e('Comments are closed.', 'bootstrap-basic'); ?></p> 70 | <?php 71 | } //endif; 72 | ?> 73 | 74 | <?php 75 | $req = get_option('require_name_email'); 76 | $aria_req = ($req ? " aria-required='true'" : ''); 77 | $html5 = true; 78 | 79 | // re-format comment allowed tags 80 | $comment_allowedtags = allowed_tags(); 81 | $comment_allowedtags = str_replace(array("\r\n", "\r", "\n"), '', $comment_allowedtags); 82 | $comment_allowedtags_array = explode('> <', $comment_allowedtags); 83 | $formatted_comment_allowedtags = ''; 84 | foreach ($comment_allowedtags_array as $item) { 85 | $formatted_comment_allowedtags .= '<code>'; 86 | 87 | if ($comment_allowedtags_array[0] !== $item) { 88 | $formatted_comment_allowedtags .= '<'; 89 | } 90 | 91 | $formatted_comment_allowedtags .= $item; 92 | 93 | if (end($comment_allowedtags_array) !== $item) { 94 | $formatted_comment_allowedtags .= '>'; 95 | } 96 | 97 | $formatted_comment_allowedtags .= '</code> '; 98 | } 99 | $comment_allowed_tags = $formatted_comment_allowedtags; 100 | unset($comment_allowedtags, $comment_allowedtags_array, $formatted_comment_allowedtags, $item); 101 | 102 | ob_start(); 103 | comment_form( 104 | array( 105 | 'class_submit' => 'btn btn-primary', 106 | 'fields' => array( 107 | 'author' => '<div class="form-group">' . 108 | '<label class="control-label col-md-2" for="author">' . __('Name', 'bootstrap-basic') . ($req ? ' <span class="required">*</span>' : '') . '</label> ' . 109 | '<div class="col-md-10">' . 110 | '<input id="author" name="author" type="text" value="' . esc_attr($commenter['comment_author']) . '" size="30"' . $aria_req . ' class="form-control" />' . 111 | '</div>' . 112 | '</div>', 113 | 'email' => '<div class="form-group">' . 114 | '<label class="control-label col-md-2" for="email">' . __('Email', 'bootstrap-basic') . ($req ? ' <span class="required">*</span>' : '') . '</label> ' . 115 | '<div class="col-md-10">' . 116 | '<input id="email" name="email" ' . ($html5 ? 'type="email"' : 'type="text"') . ' value="' . esc_attr($commenter['comment_author_email']) . '" size="30"' . $aria_req . ' class="form-control" />' . 117 | '</div>' . 118 | '</div>', 119 | 'url' => '<div class="form-group">' . 120 | '<label class="control-label col-md-2" for="url">' . __('Website', 'bootstrap-basic') . '</label> ' . 121 | '<div class="col-md-10">' . 122 | '<input id="url" name="url" ' . ($html5 ? 'type="url"' : 'type="text"') . ' value="' . esc_attr($commenter['comment_author_url']) . '" size="30" class="form-control" />' . 123 | '</div>' . 124 | '</div>', 125 | ), 126 | 'comment_field' => '<div class="form-group">' . 127 | '<label class="control-label col-md-2" for="comment">' . __('Comment') . '</label> ' . 128 | '<div class="col-md-10">' . 129 | '<textarea id="comment" name="comment" cols="45" rows="8" aria-required="true" class="form-control"></textarea>' . 130 | '</div>' . 131 | '</div>', 132 | 'comment_notes_after' => '<p class="help-block">' . 133 | /* translators: %s Allowed HTML tags for comment. */ 134 | sprintf(__('You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s', 'bootstrap-basic'), $comment_allowed_tags) . 135 | '</p>', 136 | ) 137 | ); 138 | 139 | /** 140 | * WordPress comment form does not support action/filter form and input submit elements. Rewrite these code when there is support available. 141 | * @todo Change form class modification to use WordPress hook action/filter when it's available. 142 | */ 143 | $comment_form = str_replace('class="comment-form', 'class="comment-form form form-horizontal', ob_get_clean()); 144 | echo $comment_form; 145 | 146 | unset($comment_allowed_tags, $comment_form); 147 | ?> 148 | 149 | </div><!-- #comments --> 150 | -------------------------------------------------------------------------------- /.phpcs.xml.dist: -------------------------------------------------------------------------------- 1 | <?xml version="1.0"?> 2 | <ruleset name="WordPress Coding Standards based custom ruleset for your plugin"> 3 | <description>Generally-applicable sniffs for WordPress plugins.</description> 4 | 5 | <!-- What to scan --> 6 | <file>.</file> 7 | <exclude-pattern>/\.backup/</exclude-pattern> 8 | <exclude-pattern>/\.dev-notes/</exclude-pattern> 9 | <exclude-pattern>/\.img-src/</exclude-pattern> 10 | <exclude-pattern>/assets/css/bootstrap.*</exclude-pattern> 11 | <exclude-pattern>/assets/fontawesome/</exclude-pattern> 12 | <exclude-pattern>/assets/img/</exclude-pattern> 13 | <exclude-pattern>/assets/js/bootstrap\..*</exclude-pattern> 14 | <exclude-pattern>/gulpfile.js/</exclude-pattern> 15 | <exclude-pattern>/tests/</exclude-pattern> 16 | <exclude-pattern>/node_modules/</exclude-pattern> 17 | <exclude-pattern>/vendor/</exclude-pattern> 18 | 19 | <!-- How to scan --> 20 | <!-- Usage instructions: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage --> 21 | <!-- Annotated ruleset: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml --> 22 | <arg value="sp"/> <!-- Show sniff and progress --> 23 | <arg name="basepath" value="./"/><!-- Strip the file paths down to the relevant bit --> 24 | <arg name="colors"/> 25 | <arg name="extensions" value="php"/> 26 | <arg name="parallel" value="8"/><!-- Enables parallel processing when available for faster results. --> 27 | 28 | <ini name="memory_limit" value="256M"/> 29 | 30 | <!-- Rules: Check PHP version compatibility --> 31 | <!-- https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions --> 32 | <config name="testVersion" value="5.4-"/> 33 | <!-- https://github.com/PHPCompatibility/PHPCompatibilityWP --> 34 | <rule ref="PHPCompatibilityWP"/> 35 | 36 | <!-- Rules: WordPress Coding Standards --> 37 | <!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards --> 38 | <!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/wiki/Customizable-sniff-properties --> 39 | <config name="minimum_supported_wp_version" value="5.0"/> 40 | <rule ref="WordPress"> 41 | <exclude name="Generic.Arrays.DisallowShortArraySyntax.Found"></exclude> 42 | <exclude name="Generic.Classes.OpeningBraceSameLine.BraceOnNewLine"></exclude> 43 | <exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.Found"></exclude> 44 | <exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed"></exclude> 45 | <exclude name="Generic.Files.EndFileNewline.NotFound"></exclude> 46 | <exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning"></exclude> 47 | <exclude name="Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine"></exclude> 48 | <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceAfterOpen"></exclude> 49 | <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceBeforeClose"></exclude> 50 | <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed"></exclude> 51 | <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect"></exclude> 52 | <exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact"></exclude> 53 | <exclude name="NormalizedArrays.Arrays.ArrayBraceSpacing.SpaceAfterArrayOpenerSingleLine"></exclude> 54 | <exclude name="NormalizedArrays.Arrays.ArrayBraceSpacing.SpaceBeforeArrayCloserSingleLine"></exclude> 55 | <exclude name="PEAR"></exclude> 56 | <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody"></exclude> 57 | <exclude name="PSR2.Files.EndFileNewline.NoneFound"></exclude> 58 | <exclude name="PSR2.Files.EndFileNewline.TooMany"></exclude> 59 | <exclude name="Squiz.Commenting.BlockComment.NoCapital"></exclude> 60 | <exclude name="Squiz.Commenting.BlockComment.NoEmptyLineBefore"></exclude> 61 | <exclude name="Squiz.Commenting.ClassComment.Missing"></exclude> 62 | <exclude name="Squiz.Commenting.ClosingDeclarationComment.Incorrect"></exclude> 63 | <exclude name="Squiz.Commenting.FileComment.Missing"></exclude> 64 | <exclude name="Squiz.Commenting.FileComment.SpacingAfterComment"></exclude> 65 | <exclude name="Squiz.Commenting.FunctionComment.MissingParamComment"></exclude> 66 | <exclude name="Squiz.Commenting.FunctionComment.MissingParamTag"></exclude> 67 | <exclude name="Squiz.Commenting.FunctionComment.ParamCommentFullStop"></exclude> 68 | <exclude name="Squiz.Commenting.FunctionComment.SpacingAfterParamType"></exclude> 69 | <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar"></exclude> 70 | <exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"></exclude> 71 | <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen"></exclude> 72 | <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose"></exclude> 73 | <exclude name="Squiz.PHP.CommentedOutCode.Found"></exclude> 74 | <exclude name="Squiz.PHP.EmbeddedPhp.ContentAfterEnd"></exclude> 75 | <exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeEnd"></exclude> 76 | <exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeOpen"></exclude> 77 | <exclude name="Squiz.PHP.EmbeddedPhp.SpacingBeforeClose"></exclude> 78 | <exclude name="Squiz.Strings.ConcatenationSpacing.PaddingFound"></exclude> 79 | <exclude name="Squiz.WhiteSpace.SemicolonSpacing.Incorrect"></exclude> 80 | <exclude name="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile"></exclude> 81 | <exclude name="Squiz.WhiteSpace.SuperfluousWhitespace.EndLine"></exclude> 82 | <exclude name="Universal.Arrays.DisallowShortArraySyntax.Found"></exclude> 83 | <exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceAfterArrayOpener"></exclude> 84 | <exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceBeforeArrayCloser"></exclude> 85 | <exclude name="WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound"></exclude> 86 | <exclude name="WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys"></exclude> 87 | <exclude name="WordPress.Arrays.CommaAfterArrayItem.NoComma"></exclude> 88 | <exclude name="WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned"></exclude> 89 | <exclude name="WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition"></exclude> 90 | <exclude name="WordPress.Files.FileName.InvalidClassFileName"></exclude> 91 | <exclude name="WordPress.Files.FileName.NotHyphenatedLowercase"></exclude> 92 | <exclude name="WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid"></exclude> 93 | <exclude name="WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid"></exclude> 94 | <exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase"></exclude> 95 | <exclude name="WordPress.PHP.StrictComparisons.LooseComparison"></exclude> 96 | <exclude name="WordPress.PHP.StrictInArray.MissingTrueStrict"></exclude> 97 | <exclude name="WordPress.PHP.YodaConditions.NotYoda"></exclude> 98 | <exclude name="WordPress.Security.EscapeOutput.OutputNotEscaped"></exclude> 99 | <exclude name="WordPress.Security.EscapeOutput.UnsafePrintingFunction"></exclude> 100 | <exclude name="WordPress.WhiteSpace.ControlStructureSpacing"></exclude> 101 | <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore"></exclude> 102 | <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceAfter"></exclude> 103 | <exclude name="WordPress.WhiteSpace.PrecisionAlignment.Found"></exclude> 104 | <exclude name="WordPress.WP.AlternativeFunctions.strip_tags_strip_tags"></exclude> 105 | <exclude name="WordPress.WP.CapitalPDangit.Misspelled"></exclude> 106 | <exclude name="WordPress.WP.I18n.MissingArgDomain"></exclude> 107 | <exclude name="WordPress.WP.I18n.MissingSingularPlaceholder"></exclude> 108 | <exclude name="WordPress.WP.I18n.NonSingularStringLiteralText"></exclude> 109 | </rule> 110 | <rule ref="WordPress.WP.I18n"> 111 | <properties> 112 | <!-- Value: replace the text domain used. --> 113 | <property name="text_domain" type="array" value="bootstrap-basic"/> 114 | </properties> 115 | </rule> 116 | </ruleset> 117 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * Bootstrap Basic theme 4 | * 5 | * @package bootstrap-basic 6 | */ 7 | 8 | 9 | /** 10 | * Required WordPress variable. 11 | */ 12 | if (!isset($content_width)) { 13 | $content_width = 1170; 14 | } 15 | 16 | 17 | /** 18 | * The Bootstrap Basic main class. 19 | */ 20 | require_once get_template_directory() . '/inc/BootstrapBasic.php'; 21 | 22 | 23 | /** 24 | * Register commonly use scripts and styles. 25 | */ 26 | $BootstrapBasic = new \BootstrapBasic(); 27 | unset($BootstrapBasic); 28 | 29 | 30 | if (!function_exists('bootstrapBasicSetup')) { 31 | /** 32 | * Setup theme and register support wp features. 33 | */ 34 | function bootstrapBasicSetup() 35 | { 36 | /** 37 | * Make theme available for translation 38 | * Translations can be filed in the /languages/ directory 39 | * 40 | * copy from underscores theme 41 | */ 42 | load_theme_textdomain('bootstrap-basic', get_template_directory() . '/languages'); 43 | 44 | // add theme support title-tag 45 | add_theme_support('title-tag'); 46 | 47 | // add theme support post and comment automatic feed links 48 | add_theme_support('automatic-feed-links'); 49 | 50 | // enable support for post thumbnail or feature image on posts and pages 51 | add_theme_support('post-thumbnails'); 52 | 53 | // allow the use of html5 markup 54 | // @link https://codex.wordpress.org/Theme_Markup 55 | add_theme_support('html5', array('caption', 'comment-form', 'comment-list', 'gallery', 'search-form')); 56 | 57 | // add support menu 58 | register_nav_menus(array( 59 | 'primary' => __('Primary Menu', 'bootstrap-basic'), 60 | )); 61 | 62 | // add post formats support 63 | add_theme_support('post-formats', array('aside', 'image', 'video', 'quote', 'link')); 64 | 65 | // add support custom background 66 | add_theme_support( 67 | 'custom-background', 68 | apply_filters( 69 | 'bootstrap_basic_custom_background_args', 70 | array( 71 | 'default-color' => 'ffffff', 72 | 'default-image' => '', 73 | ) 74 | ) 75 | ); 76 | 77 | // @since 1.1 or WordPress 5.0+ 78 | // make gutenberg support. -------------------------------------------------------------------------------------- 79 | // @link https://wordpress.org/gutenberg/handbook/extensibility/theme-support/ reference. 80 | // add wide alignment ( https://wordpress.org/gutenberg/handbook/designers-developers/developers/themes/theme-support/#wide-alignment ) 81 | add_theme_support('align-wide'); 82 | // support default block styles for front-end ( https://wordpress.org/gutenberg/handbook/designers-developers/developers/themes/theme-support/#default-block-styles ) 83 | add_theme_support('wp-block-styles'); 84 | // support editor styles ( https://wordpress.org/gutenberg/handbook/designers-developers/developers/themes/theme-support/#editor-styles ) 85 | // this one make appearance in editor more close to Bootstrap 3. 86 | add_theme_support('editor-styles'); 87 | // support responsive embeds for front-end ( https://wordpress.org/gutenberg/handbook/designers-developers/developers/themes/theme-support/#responsive-embedded-content ) 88 | add_theme_support('responsive-embeds'); 89 | // end make gutenberg support. --------------------------------------------------------------------------------- 90 | }// bootstrapBasicSetup 91 | } 92 | add_action('after_setup_theme', 'bootstrapBasicSetup'); 93 | 94 | 95 | if (!function_exists('bootstrapBasicWidgetsInit')) { 96 | /** 97 | * Register widget areas 98 | */ 99 | function bootstrapBasicWidgetsInit() 100 | { 101 | register_sidebar(array( 102 | 'name' => __('Sidebar right', 'bootstrap-basic'), 103 | 'id' => 'sidebar-right', 104 | 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 105 | 'after_widget' => '</aside>', 106 | 'before_title' => '<h1 class="widget-title">', 107 | 'after_title' => '</h1>', 108 | )); 109 | 110 | register_sidebar(array( 111 | 'name' => __('Sidebar left', 'bootstrap-basic'), 112 | 'id' => 'sidebar-left', 113 | 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 114 | 'after_widget' => '</aside>', 115 | 'before_title' => '<h1 class="widget-title">', 116 | 'after_title' => '</h1>', 117 | )); 118 | 119 | register_sidebar(array( 120 | 'name' => __('Header right', 'bootstrap-basic'), 121 | 'id' => 'header-right', 122 | 'description' => __('Header widget area on the right side next to site title.', 'bootstrap-basic'), 123 | 'before_widget' => '<div id="%1$s" class="widget %2$s">', 124 | 'after_widget' => '</div>', 125 | 'before_title' => '<h1 class="widget-title">', 126 | 'after_title' => '</h1>', 127 | )); 128 | 129 | register_sidebar(array( 130 | 'name' => __('Navigation bar right', 'bootstrap-basic'), 131 | 'id' => 'navbar-right', 132 | 'before_widget' => '', 133 | 'after_widget' => '', 134 | 'before_title' => '', 135 | 'after_title' => '', 136 | )); 137 | 138 | register_sidebar(array( 139 | 'name' => __('Footer left', 'bootstrap-basic'), 140 | 'id' => 'footer-left', 141 | 'before_widget' => '<div id="%1$s" class="widget %2$s">', 142 | 'after_widget' => '</div>', 143 | 'before_title' => '<h1 class="widget-title">', 144 | 'after_title' => '</h1>', 145 | )); 146 | 147 | register_sidebar(array( 148 | 'name' => __('Footer right', 'bootstrap-basic'), 149 | 'id' => 'footer-right', 150 | 'before_widget' => '<div id="%1$s" class="widget %2$s">', 151 | 'after_widget' => '</div>', 152 | 'before_title' => '<h1 class="widget-title">', 153 | 'after_title' => '</h1>', 154 | )); 155 | }// bootstrapBasicWidgetsInit 156 | } 157 | add_action('widgets_init', 'bootstrapBasicWidgetsInit'); 158 | 159 | 160 | if (!function_exists('bootstrapBasicEnqueueScripts')) { 161 | /** 162 | * Enqueue scripts & styles 163 | * 164 | * @global \WP_Scripts $wp_scripts 165 | */ 166 | function bootstrapBasicEnqueueScripts() 167 | { 168 | global $wp_scripts; 169 | $Theme = wp_get_theme(); 170 | $themeVersion = $Theme->get('Version'); 171 | unset($Theme); 172 | 173 | wp_enqueue_style('bootstrap-style'); 174 | wp_enqueue_style('bootstrap-theme-style', get_template_directory_uri() . '/css/bootstrap-theme.min.css', array(), '3.4.1'); 175 | wp_enqueue_style('fontawesome-style', get_template_directory_uri() . '/css/font-awesome.min.css', array(), '4.7.0'); 176 | wp_enqueue_style('main-style', get_template_directory_uri() . '/css/main.css', array(), $themeVersion); 177 | 178 | // check if there are any calendar widget block. 179 | if (bootstrapBasicHasWidgetBlock('calendar') === true) { 180 | // if theme using widget blocks. 181 | // enqueue css to fix calendar widget block to render as non widget block. 182 | // if you would like it to be render as new widget block, please dequeue this handle. 183 | wp_enqueue_style('bootstrapbasic-widgetblocks-calendar', get_template_directory_uri() . '/css/widget-blocks/calendar.css', array(), $themeVersion); 184 | } 185 | 186 | // js that is useful for development. 187 | wp_enqueue_script('modernizr-script', get_template_directory_uri() . '/js/vendor/modernizr.min.js', array(), '3.6.0-20190314', true); 188 | // js that is useful for old browsers. 189 | wp_register_script('respond-script', get_template_directory_uri() . '/js/vendor/respond.min.js', array(), '1.4.2', true); 190 | $wp_scripts->add_data('respond-script', 'conditional', 'lt IE 9'); 191 | wp_enqueue_script('respond-script'); 192 | wp_register_script('html5-shiv-script', get_template_directory_uri() . '/js/vendor/html5shiv.min.js', array(), '3.7.3', true); 193 | $wp_scripts->add_data('html5-shiv-script', 'conditional', 'lte IE 9'); 194 | wp_enqueue_script('html5-shiv-script'); 195 | 196 | if (is_singular() && get_option('thread_comments')) { 197 | wp_enqueue_script('comment-reply'); 198 | } 199 | 200 | wp_enqueue_script('bootstrap-script'); 201 | wp_enqueue_script('main-script', get_template_directory_uri() . '/js/main.js', array('jquery'), $themeVersion, true); 202 | wp_enqueue_style('bootstrap-basic-style', get_stylesheet_uri(), array(), $themeVersion); 203 | 204 | // move jquery to bottom ( https://wordpress.stackexchange.com/a/225936/41315 ) 205 | $wp_scripts->add_data('jquery', 'group', 1); 206 | $wp_scripts->add_data('jquery-core', 'group', 1); 207 | $wp_scripts->add_data('jquery-migrate', 'group', 1); 208 | }// bootstrapBasicEnqueueScripts 209 | } 210 | add_action('wp_enqueue_scripts', 'bootstrapBasicEnqueueScripts'); 211 | 212 | 213 | /** 214 | * admin page displaying help. 215 | */ 216 | if (is_admin()) { 217 | require get_template_directory() . '/inc/BootstrapBasicAdminHelp.php'; 218 | $bbsc_adminhelp = new BootstrapBasicAdminHelp(); 219 | add_action('admin_menu', array($bbsc_adminhelp, 'themeHelpMenu')); 220 | unset($bbsc_adminhelp); 221 | } 222 | 223 | 224 | /** 225 | * Make WordPress 5 (Gutenberg) editor support Bootstrap CSS. 226 | */ 227 | require_once get_template_directory() . '/inc/BootstrapBasicWp5.php'; 228 | $BbWp5 = new BootstrapBasicWp5(); 229 | unset($BbWp5); 230 | 231 | 232 | /** 233 | * Custom template tags for this theme. 234 | */ 235 | require get_template_directory() . '/inc/template-tags.php'; 236 | 237 | 238 | /** 239 | * Custom functions that act independently of the theme templates. 240 | */ 241 | require get_template_directory() . '/inc/extras.php'; 242 | 243 | 244 | /** 245 | * Custom dropdown menu and navbar in walker class 246 | */ 247 | require get_template_directory() . '/inc/BootstrapBasicMyWalkerNavMenu.php'; 248 | 249 | 250 | /** 251 | * Template functions 252 | */ 253 | require get_template_directory() . '/inc/template-functions.php'; 254 | 255 | 256 | /** 257 | * -------------------------------------------------------------- 258 | * Theme widget & widget hooks 259 | * -------------------------------------------------------------- 260 | */ 261 | require get_template_directory() . '/inc/widgets/BootstrapBasicAutoRegisterWidgets.php'; 262 | $BootstrapBasicAutoRegisterWidgets = new BootstrapBasicAutoRegisterWidgets(); 263 | $BootstrapBasicAutoRegisterWidgets->registerAll(); 264 | unset($BootstrapBasicAutoRegisterWidgets); 265 | require get_template_directory() . '/inc/template-widgets-hook.php'; 266 | 267 | -------------------------------------------------------------------------------- /js/vendor/html5shiv.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | ;(function(window, document) { 5 | /*jshint evil:true */ 6 | /** version */ 7 | var version = '3.7.3'; 8 | 9 | /** Preset options */ 10 | var options = window.html5 || {}; 11 | 12 | /** Used to skip problem elements */ 13 | var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; 14 | 15 | /** Not all elements can be cloned in IE **/ 16 | 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; 17 | 18 | /** Detect whether the browser supports default html5 styles */ 19 | var supportsHtml5Styles; 20 | 21 | /** Name of the expando, to work with multiple documents or to re-shiv one document */ 22 | var expando = '_html5shiv'; 23 | 24 | /** The id for the the documents expando */ 25 | var expanID = 0; 26 | 27 | /** Cached data for each document */ 28 | var expandoData = {}; 29 | 30 | /** Detect whether the browser supports unknown elements */ 31 | var supportsUnknownElements; 32 | 33 | (function() { 34 | try { 35 | var a = document.createElement('a'); 36 | a.innerHTML = '<xyz></xyz>'; 37 | //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles 38 | supportsHtml5Styles = ('hidden' in a); 39 | 40 | supportsUnknownElements = a.childNodes.length == 1 || (function() { 41 | // assign a false positive if unable to shiv 42 | (document.createElement)('a'); 43 | var frag = document.createDocumentFragment(); 44 | return ( 45 | typeof frag.cloneNode == 'undefined' || 46 | typeof frag.createDocumentFragment == 'undefined' || 47 | typeof frag.createElement == 'undefined' 48 | ); 49 | }()); 50 | } catch(e) { 51 | // assign a false positive if detection fails => unable to shiv 52 | supportsHtml5Styles = true; 53 | supportsUnknownElements = true; 54 | } 55 | 56 | }()); 57 | 58 | /*--------------------------------------------------------------------------*/ 59 | 60 | /** 61 | * Creates a style sheet with the given CSS text and adds it to the document. 62 | * @private 63 | * @param {Document} ownerDocument The document. 64 | * @param {String} cssText The CSS text. 65 | * @returns {StyleSheet} The style element. 66 | */ 67 | function addStyleSheet(ownerDocument, cssText) { 68 | var p = ownerDocument.createElement('p'), 69 | parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; 70 | 71 | p.innerHTML = 'x<style>' + cssText + '</style>'; 72 | return parent.insertBefore(p.lastChild, parent.firstChild); 73 | } 74 | 75 | /** 76 | * Returns the value of `html5.elements` as an array. 77 | * @private 78 | * @returns {Array} An array of shived element node names. 79 | */ 80 | function getElements() { 81 | var elements = html5.elements; 82 | return typeof elements == 'string' ? elements.split(' ') : elements; 83 | } 84 | 85 | /** 86 | * Extends the built-in list of html5 elements 87 | * @memberOf html5 88 | * @param {String|Array} newElements whitespace separated list or array of new element names to shiv 89 | * @param {Document} ownerDocument The context document. 90 | */ 91 | function addElements(newElements, ownerDocument) { 92 | var elements = html5.elements; 93 | if(typeof elements != 'string'){ 94 | elements = elements.join(' '); 95 | } 96 | if(typeof newElements != 'string'){ 97 | newElements = newElements.join(' '); 98 | } 99 | html5.elements = elements +' '+ newElements; 100 | shivDocument(ownerDocument); 101 | } 102 | 103 | /** 104 | * Returns the data associated to the given document 105 | * @private 106 | * @param {Document} ownerDocument The document. 107 | * @returns {Object} An object of data. 108 | */ 109 | function getExpandoData(ownerDocument) { 110 | var data = expandoData[ownerDocument[expando]]; 111 | if (!data) { 112 | data = {}; 113 | expanID++; 114 | ownerDocument[expando] = expanID; 115 | expandoData[expanID] = data; 116 | } 117 | return data; 118 | } 119 | 120 | /** 121 | * returns a shived element for the given nodeName and document 122 | * @memberOf html5 123 | * @param {String} nodeName name of the element 124 | * @param {Document|DocumentFragment} ownerDocument The context document. 125 | * @returns {Object} The shived element. 126 | */ 127 | function createElement(nodeName, ownerDocument, data){ 128 | if (!ownerDocument) { 129 | ownerDocument = document; 130 | } 131 | if(supportsUnknownElements){ 132 | return ownerDocument.createElement(nodeName); 133 | } 134 | if (!data) { 135 | data = getExpandoData(ownerDocument); 136 | } 137 | var node; 138 | 139 | if (data.cache[nodeName]) { 140 | node = data.cache[nodeName].cloneNode(); 141 | } else if (saveClones.test(nodeName)) { 142 | node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); 143 | } else { 144 | node = data.createElem(nodeName); 145 | } 146 | 147 | // Avoid adding some elements to fragments in IE < 9 because 148 | // * Attributes like `name` or `type` cannot be set/changed once an element 149 | // is inserted into a document/fragment 150 | // * Link elements with `src` attributes that are inaccessible, as with 151 | // a 403 response, will cause the tab/window to crash 152 | // * Script elements appended to fragments will execute when their `src` 153 | // or `text` property is set 154 | return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; 155 | } 156 | 157 | /** 158 | * returns a shived DocumentFragment for the given document 159 | * @memberOf html5 160 | * @param {Document} ownerDocument The context document. 161 | * @returns {Object} The shived DocumentFragment. 162 | */ 163 | function createDocumentFragment(ownerDocument, data){ 164 | if (!ownerDocument) { 165 | ownerDocument = document; 166 | } 167 | if(supportsUnknownElements){ 168 | return ownerDocument.createDocumentFragment(); 169 | } 170 | data = data || getExpandoData(ownerDocument); 171 | var clone = data.frag.cloneNode(), 172 | i = 0, 173 | elems = getElements(), 174 | l = elems.length; 175 | for(;i<l;i++){ 176 | clone.createElement(elems[i]); 177 | } 178 | return clone; 179 | } 180 | 181 | /** 182 | * Shivs the `createElement` and `createDocumentFragment` methods of the document. 183 | * @private 184 | * @param {Document|DocumentFragment} ownerDocument The document. 185 | * @param {Object} data of the document. 186 | */ 187 | function shivMethods(ownerDocument, data) { 188 | if (!data.cache) { 189 | data.cache = {}; 190 | data.createElem = ownerDocument.createElement; 191 | data.createFrag = ownerDocument.createDocumentFragment; 192 | data.frag = data.createFrag(); 193 | } 194 | 195 | 196 | ownerDocument.createElement = function(nodeName) { 197 | //abort shiv 198 | if (!html5.shivMethods) { 199 | return data.createElem(nodeName); 200 | } 201 | return createElement(nodeName, ownerDocument, data); 202 | }; 203 | 204 | ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + 205 | 'var n=f.cloneNode(),c=n.createElement;' + 206 | 'h.shivMethods&&(' + 207 | // unroll the `createElement` calls 208 | getElements().join().replace(/[\w\-:]+/g, function(nodeName) { 209 | data.createElem(nodeName); 210 | data.frag.createElement(nodeName); 211 | return 'c("' + nodeName + '")'; 212 | }) + 213 | ');return n}' 214 | )(html5, data.frag); 215 | } 216 | 217 | /*--------------------------------------------------------------------------*/ 218 | 219 | /** 220 | * Shivs the given document. 221 | * @memberOf html5 222 | * @param {Document} ownerDocument The document to shiv. 223 | * @returns {Document} The shived document. 224 | */ 225 | function shivDocument(ownerDocument) { 226 | if (!ownerDocument) { 227 | ownerDocument = document; 228 | } 229 | var data = getExpandoData(ownerDocument); 230 | 231 | if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { 232 | data.hasCSS = !!addStyleSheet(ownerDocument, 233 | // corrects block display not defined in IE6/7/8/9 234 | 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' + 235 | // adds styling not present in IE6/7/8/9 236 | 'mark{background:#FF0;color:#000}' + 237 | // hides non-rendered elements 238 | 'template{display:none}' 239 | ); 240 | } 241 | if (!supportsUnknownElements) { 242 | shivMethods(ownerDocument, data); 243 | } 244 | return ownerDocument; 245 | } 246 | 247 | /*--------------------------------------------------------------------------*/ 248 | 249 | /** 250 | * The `html5` object is exposed so that more elements can be shived and 251 | * existing shiving can be detected on iframes. 252 | * @type Object 253 | * @example 254 | * 255 | * // options can be changed before the script is included 256 | * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; 257 | */ 258 | var html5 = { 259 | 260 | /** 261 | * An array or space separated string of node names of the elements to shiv. 262 | * @memberOf html5 263 | * @type Array|String 264 | */ 265 | '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', 266 | 267 | /** 268 | * current version of html5shiv 269 | */ 270 | 'version': version, 271 | 272 | /** 273 | * A flag to indicate that the HTML5 style sheet should be inserted. 274 | * @memberOf html5 275 | * @type Boolean 276 | */ 277 | 'shivCSS': (options.shivCSS !== false), 278 | 279 | /** 280 | * Is equal to true if a browser supports creating unknown/HTML5 elements 281 | * @memberOf html5 282 | * @type boolean 283 | */ 284 | 'supportsUnknownElements': supportsUnknownElements, 285 | 286 | /** 287 | * A flag to indicate that the document's `createElement` and `createDocumentFragment` 288 | * methods should be overwritten. 289 | * @memberOf html5 290 | * @type Boolean 291 | */ 292 | 'shivMethods': (options.shivMethods !== false), 293 | 294 | /** 295 | * A string to describe the type of `html5` object ("default" or "default print"). 296 | * @memberOf html5 297 | * @type String 298 | */ 299 | 'type': 'default', 300 | 301 | // shivs the document according to the specified `html5` object options 302 | 'shivDocument': shivDocument, 303 | 304 | //creates a shived element 305 | createElement: createElement, 306 | 307 | //creates a shived documentFragment 308 | createDocumentFragment: createDocumentFragment, 309 | 310 | //extends list of elements 311 | addElements: addElements 312 | }; 313 | 314 | /*--------------------------------------------------------------------------*/ 315 | 316 | // expose html5 317 | window.html5 = html5; 318 | 319 | // shiv the document 320 | shivDocument(document); 321 | 322 | if(typeof module == 'object' && module.exports){ 323 | module.exports = html5; 324 | } 325 | 326 | }(typeof window !== "undefined" ? window : this, document)); 327 | -------------------------------------------------------------------------------- /languages/bootstrap-basic.pot: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 Rundiz-WP team 2 | # This file is distributed under the MIT. 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: Bootstrap Basic 1.2.6\n" 6 | "Report-Msgid-Bugs-To: https://wordpress.org/support/theme/bootstrap-basic\n" 7 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 8 | "Language-Team: LANGUAGE <LL@li.org>\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "POT-Creation-Date: 2025-09-02T13:30:04+07:00\n" 13 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 | "X-Generator: WP-CLI 2.12.0\n" 15 | "X-Domain: bootstrap-basic\n" 16 | 17 | #. Theme Name of the theme 18 | #: style.css 19 | msgid "Bootstrap Basic" 20 | msgstr "" 21 | 22 | #. Theme URI of the theme 23 | #: style.css 24 | msgid "https://rundiz.com" 25 | msgstr "" 26 | 27 | #. Description of the theme 28 | #: style.css 29 | msgid "Bootstrap v.3 basic theme for developers to build their new theme very fast and easy. (WordPress 5 or Gutenberg ready.) The concept is to keep it basic, no rich features, no additional functions; all of these for theme developers will be easier to start develop their theme. Please read notice on Bootstrap Basic Help page in Dashboard > Appearance > Bootstrap Basic Help." 30 | msgstr "" 31 | 32 | #. Author of the theme 33 | #: style.css 34 | msgid "Rundiz-WP team" 35 | msgstr "" 36 | 37 | #. Author URI of the theme 38 | #: style.css 39 | msgid "https://github.com/Rundiz-WP" 40 | msgstr "" 41 | 42 | #: 404.php:7 43 | msgid "Oops! That page can’t be found." 44 | msgstr "" 45 | 46 | #: 404.php:11 47 | msgid "It looks like nothing was found at this location. Maybe try one of the links below or a search?" 48 | msgstr "" 49 | 50 | #: 404.php:22 51 | msgid "Most Used Categories" 52 | msgstr "" 53 | 54 | #. translators: %1$s: smiley 55 | #: 404.php:39 56 | #, php-format 57 | msgid "Try looking in the monthly archives. %1$s" 58 | msgstr "" 59 | 60 | #. translators: %s Author name. 61 | #: archive.php:36 62 | #, php-format 63 | msgid "Author: %s" 64 | msgstr "" 65 | 66 | #. translators: %s Date value. 67 | #: archive.php:46 68 | #, php-format 69 | msgid "Day: %s" 70 | msgstr "" 71 | 72 | #. translators: %s Month value. 73 | #: archive.php:50 74 | #, php-format 75 | msgid "Month: %s" 76 | msgstr "" 77 | 78 | #. translators: %s Year value. 79 | #: archive.php:54 80 | #, php-format 81 | msgid "Year: %s" 82 | msgstr "" 83 | 84 | #: archive.php:57 85 | msgid "Asides" 86 | msgstr "" 87 | 88 | #: archive.php:60 89 | msgid "Images" 90 | msgstr "" 91 | 92 | #: archive.php:63 93 | msgid "Videos" 94 | msgstr "" 95 | 96 | #: archive.php:66 97 | msgid "Quotes" 98 | msgstr "" 99 | 100 | #: archive.php:69 101 | msgid "Links" 102 | msgstr "" 103 | 104 | #: archive.php:72 105 | msgid "Archives" 106 | msgstr "" 107 | 108 | #. translators: %1$s: Number of comments, %2$s: Post title. 109 | #: comments.php:22 110 | #, php-format 111 | msgctxt "comments title" 112 | msgid "%1$s comment on “%2$s”" 113 | msgid_plural "%1$s comments on “%2$s”" 114 | msgstr[0] "" 115 | msgstr[1] "" 116 | 117 | #: comments.php:36 118 | #: comments.php:57 119 | msgid "Comment navigation" 120 | msgstr "" 121 | 122 | #: comments.php:38 123 | #: comments.php:59 124 | msgid "← Older Comments" 125 | msgstr "" 126 | 127 | #: comments.php:39 128 | #: comments.php:60 129 | msgid "Newer Comments →" 130 | msgstr "" 131 | 132 | #: comments.php:69 133 | msgid "Comments are closed." 134 | msgstr "" 135 | 136 | #: comments.php:108 137 | msgid "Name" 138 | msgstr "" 139 | 140 | #: comments.php:114 141 | msgid "Email" 142 | msgstr "" 143 | 144 | #: comments.php:120 145 | msgid "Website" 146 | msgstr "" 147 | 148 | #. translators: %s Allowed HTML tags for comment. 149 | #: comments.php:134 150 | #, php-format 151 | msgid "You may use these <abbr title=\"HyperText Markup Language\">HTML</abbr> tags and attributes: %s" 152 | msgstr "" 153 | 154 | #: content-aside.php:18 155 | #: content-link.php:30 156 | #: content-page.php:15 157 | #: content-quote.php:18 158 | #: content-single.php:19 159 | #: content.php:28 160 | msgid "Pages:" 161 | msgstr "" 162 | 163 | #. translators: used between list items, there is a space after the comma 164 | #: content-aside.php:33 165 | #: content-aside.php:43 166 | #: content-link.php:43 167 | #: content-link.php:53 168 | #: content-quote.php:30 169 | #: content-quote.php:40 170 | #: content-single.php:29 171 | #: content-single.php:32 172 | #: content.php:42 173 | #: content.php:52 174 | msgid ", " 175 | msgstr "" 176 | 177 | #. translators: %1$s URL, %2$s: Post title. 178 | #: content-single.php:41 179 | #, php-format 180 | msgid "<span class=\"glyphicon glyphicon-link\"></span> <a href=\"%1$s\" title=\"Permalink to %2$s\" rel=\"bookmark\">permalink</a>." 181 | msgstr "" 182 | 183 | #. translators: %s WordPress with link. 184 | #: footer.php:18 185 | #, php-format 186 | msgid "Powered by %s" 187 | msgstr "" 188 | 189 | #. translators: %s Bootstrap Basic with link. 190 | #: footer.php:21 191 | #, php-format 192 | msgid "Theme: %s" 193 | msgstr "" 194 | 195 | #: functions.php:59 196 | msgid "Primary Menu" 197 | msgstr "" 198 | 199 | #: functions.php:102 200 | msgid "Sidebar right" 201 | msgstr "" 202 | 203 | #: functions.php:111 204 | msgid "Sidebar left" 205 | msgstr "" 206 | 207 | #: functions.php:120 208 | msgid "Header right" 209 | msgstr "" 210 | 211 | #: functions.php:122 212 | msgid "Header widget area on the right side next to site title." 213 | msgstr "" 214 | 215 | #: functions.php:130 216 | msgid "Navigation bar right" 217 | msgstr "" 218 | 219 | #: functions.php:139 220 | msgid "Footer left" 221 | msgstr "" 222 | 223 | #: functions.php:148 224 | msgid "Footer right" 225 | msgstr "" 226 | 227 | #: header.php:53 228 | msgid "Skip to content" 229 | msgstr "" 230 | 231 | #: header.php:69 232 | msgid "Toggle navigation" 233 | msgstr "" 234 | 235 | #. translators: %1$s: Date/time in datetime attribute, %2$s: Readable date/time, %3$s: URL, %4$s: Attachment width, %5$s: Attachment height, %6$s: Link to post parent, %7$s: Post parent title in the title attribute, %8$s: Post parent title. 236 | #: image.php:25 237 | #, php-format 238 | msgid "Published <span class=\"entry-date\"><time class=\"entry-date\" datetime=\"%1$s\">%2$s</time></span> at <a href=\"%3$s\" title=\"Link to full-size image\">%4$s × %5$s</a> in <a href=\"%6$s\" title=\"Return to %7$s\" rel=\"gallery\">%8$s</a>" 239 | msgstr "" 240 | 241 | #: image.php:43 242 | msgid "<span class=\"meta-nav\">←</span> Previous" 243 | msgstr "" 244 | 245 | #: image.php:44 246 | msgid "Next <span class=\"meta-nav\">→</span>" 247 | msgstr "" 248 | 249 | #: inc/BootstrapBasicAdminHelp.php:19 250 | #: inc/views/BootstrapBasicAdminHelp_v.php:2 251 | msgid "Bootstrap Basic help" 252 | msgstr "" 253 | 254 | #. translators: %s: Page number. 255 | #: inc/extras.php:156 256 | #, php-format 257 | msgid "Page %s" 258 | msgstr "" 259 | 260 | #: inc/template-tags.php:18 261 | msgid "Posted in" 262 | msgstr "" 263 | 264 | #: inc/template-tags.php:40 265 | msgid "Pingback:" 266 | msgstr "" 267 | 268 | #: inc/template-tags.php:42 269 | #: inc/template-tags.php:84 270 | #: inc/template-tags.php:145 271 | msgid "Edit" 272 | msgstr "" 273 | 274 | #. translators: %1$s: Comment date, %2$s: Comment time. 275 | #: inc/template-tags.php:77 276 | #, php-format 277 | msgctxt "1: date, 2: time" 278 | msgid "%1$s at %2$s" 279 | msgstr "" 280 | 281 | #: inc/template-tags.php:91 282 | msgid "Your comment is awaiting moderation." 283 | msgstr "" 284 | 285 | #. translators: %s: Comment author link. 286 | #: inc/template-tags.php:97 287 | #, php-format 288 | msgid "%s <span class=\"says\">says:</span>" 289 | msgstr "" 290 | 291 | #: inc/template-tags.php:109 292 | msgid "Reply" 293 | msgstr "" 294 | 295 | #: inc/template-tags.php:110 296 | msgid "Log in to Reply" 297 | msgstr "" 298 | 299 | #: inc/template-tags.php:195 300 | msgid "Continue reading <span class=\"meta-nav\">→</span>" 301 | msgstr "" 302 | 303 | #. translators: %1$s: Link to post with date/time text, %2$s: Link to author with auth name. 304 | #: inc/template-tags.php:271 305 | #, php-format 306 | msgid "<span class=\"posted-on\">Posted on %1$s</span><span class=\"byline\"> by %2$s</span>" 307 | msgstr "" 308 | 309 | #. translators: %s Author name. 310 | #: inc/template-tags.php:280 311 | #, php-format 312 | msgid "View all posts by %s" 313 | msgstr "" 314 | 315 | #: inc/template-tags.php:297 316 | msgid "Tagged" 317 | msgstr "" 318 | 319 | #: inc/views/BootstrapBasicAdminHelp_v.php:4 320 | msgid "Menu" 321 | msgstr "" 322 | 323 | #: inc/views/BootstrapBasicAdminHelp_v.php:5 324 | msgid "To display menu correctly, please create at least 1 menu and set as primary and save." 325 | msgstr "" 326 | 327 | #: inc/views/BootstrapBasicAdminHelp_v.php:6 328 | msgid "Divider" 329 | msgstr "" 330 | 331 | #. translators: %1$s divider CSS class, %2$s the word CSS classes 332 | #: inc/views/BootstrapBasicAdminHelp_v.php:10 333 | #, php-format 334 | msgid "To display dropdown divier, add %1$s class to the menu's %2$s." 335 | msgstr "" 336 | 337 | #: inc/views/BootstrapBasicAdminHelp_v.php:12 338 | #: inc/views/BootstrapBasicAdminHelp_v.php:21 339 | msgid "CSS Classes" 340 | msgstr "" 341 | 342 | #: inc/views/BootstrapBasicAdminHelp_v.php:15 343 | msgid "Dropdown header" 344 | msgstr "" 345 | 346 | #. translators: %1$s dropdown header CSS class, %2$s the word CSS classes 347 | #: inc/views/BootstrapBasicAdminHelp_v.php:19 348 | #, php-format 349 | msgid "To display dropdown header, add %1$s class to the menu's %2$s." 350 | msgstr "" 351 | 352 | #: inc/views/BootstrapBasicAdminHelp_v.php:25 353 | msgid "Bootstrap features" 354 | msgstr "" 355 | 356 | #. translators: $1$s open link to Bootstrap doc, %2$s close link. 357 | #: inc/views/BootstrapBasicAdminHelp_v.php:29 358 | #, php-format 359 | msgid "This theme can use all %1$sBootstrap 3%2$s classes, elements and styles." 360 | msgstr "" 361 | 362 | #: inc/views/BootstrapBasicAdminHelp_v.php:35 363 | msgid "Responsive image" 364 | msgstr "" 365 | 366 | #. translators: %1$s sample of responsive image HTML with class. 367 | #: inc/views/BootstrapBasicAdminHelp_v.php:39 368 | #, php-format 369 | msgid "For responsive image please add img-responsive class to img element. Example: %1$s" 370 | msgstr "" 371 | 372 | #: inc/views/BootstrapBasicAdminHelp_v.php:44 373 | msgid "Responsive video</h3>" 374 | msgstr "" 375 | 376 | #. translators: %1$s sample of responsive video HTML with class. 377 | #: inc/views/BootstrapBasicAdminHelp_v.php:48 378 | #, php-format 379 | msgid "Cloak video element (video element or embeded video) with %1$s." 380 | msgstr "" 381 | 382 | #: inc/views/BootstrapBasicAdminHelp_v.php:53 383 | msgid "Bootstrap Basic Change log" 384 | msgstr "" 385 | 386 | #. translators: %1$s: Open link, %2$s: Close link. 387 | #: inc/views/BootstrapBasicAdminHelp_v.php:58 388 | #, php-format 389 | msgid "You can see what was changed in each version or each commits on our %1$sGithub page%2$s." 390 | msgstr "" 391 | 392 | #: inc/views/BootstrapBasicAdminHelp_v.php:62 393 | msgid "You can also see it on changelog.md file that come with the theme." 394 | msgstr "" 395 | 396 | #. translators: %1$s Open link, %2$s Close link. 397 | #: inc/views/BootstrapBasicAdminHelp_v.php:71 398 | #, php-format 399 | msgid "Thank you for using Bootstrap Basic. Please %1$sdonate%2$s to support the developer." 400 | msgstr "" 401 | 402 | #: inc/widgets/BootstrapBasicLegacySearchWidget.php:27 403 | msgid "Bootstrap Legacy Search" 404 | msgstr "" 405 | 406 | #: inc/widgets/BootstrapBasicLegacySearchWidget.php:28 407 | msgid "Display Search widget for Bootstrap that can be use in sidebar." 408 | msgstr "" 409 | 410 | #: inc/widgets/BootstrapBasicLegacySearchWidget.php:48 411 | msgid "Title:" 412 | msgstr "" 413 | 414 | #: inc/widgets/BootstrapBasicSearchWidget.php:27 415 | msgid "Bootstrap Navbar Search" 416 | msgstr "" 417 | 418 | #: inc/widgets/BootstrapBasicSearchWidget.php:28 419 | msgid "Display Search widget for Bootstrap navbar." 420 | msgstr "" 421 | 422 | #: inc/widgets/BootstrapBasicSearchWidget.php:50 423 | msgid "Form alignment:" 424 | msgstr "" 425 | 426 | #: inc/widgets/BootstrapBasicSearchWidget.php:52 427 | msgid "Left" 428 | msgstr "" 429 | 430 | #: inc/widgets/BootstrapBasicSearchWidget.php:53 431 | msgid "Right" 432 | msgstr "" 433 | 434 | #: no-results.php:10 435 | msgid "Nothing Found" 436 | msgstr "" 437 | 438 | #. translators: %1$s: Link to add new post. 439 | #: no-results.php:17 440 | #, php-format 441 | msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>." 442 | msgstr "" 443 | 444 | #: no-results.php:20 445 | msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords." 446 | msgstr "" 447 | 448 | #: no-results.php:23 449 | msgid "It seems we can’t find what you’re looking for. Perhaps searching can help." 450 | msgstr "" 451 | 452 | #. translators: %s Search value. 453 | #: search.php:22 454 | #, php-format 455 | msgid "Search Results for: %s" 456 | msgstr "" 457 | 458 | #: searchform.php:23 459 | #: searchform.php:29 460 | msgctxt "placeholder" 461 | msgid "Search …" 462 | msgstr "" 463 | 464 | #: searchform.php:23 465 | #: searchform.php:29 466 | msgctxt "label" 467 | msgid "Search for:" 468 | msgstr "" 469 | 470 | #: searchform.php:25 471 | #: searchform.php:31 472 | msgid "Search" 473 | msgstr "" 474 | 475 | #: searchform.php:27 476 | msgctxt "label" 477 | msgid "Search for" 478 | msgstr "" 479 | -------------------------------------------------------------------------------- /inc/template-tags.php: -------------------------------------------------------------------------------- 1 | <?php 2 | /** 3 | * Custom template tags for this theme 4 | * 5 | * @package bootstrap-basic 6 | */ 7 | 8 | 9 | if (!function_exists('bootstrapBasicCategoriesList')) { 10 | /** 11 | * Display categories list with bootstrap icon 12 | * 13 | * @param string $categories_list list of categories. 14 | * @return string 15 | */ 16 | function bootstrapBasicCategoriesList($categories_list = '') 17 | { 18 | return sprintf('<span class="categories-icon glyphicon glyphicon-th-list" title="' . __('Posted in', 'bootstrap-basic') . '"></span> %1$s', $categories_list); 19 | }// bootstrapBasicCategoriesList 20 | } 21 | 22 | 23 | if (!function_exists('bootstrapBasicComment')) { 24 | /** 25 | * Displaying a comment 26 | * 27 | * @param object $comment 28 | * @param array $args 29 | * @param integer $depth 30 | */ 31 | function bootstrapBasicComment($comment, $args, $depth) { 32 | if ('pingback' === $comment->comment_type || 'trackback' === $comment->comment_type) { 33 | echo '<li id="comment-'; 34 | comment_ID(); 35 | echo '" '; 36 | comment_class('comment-type-pt'); 37 | echo '>'; 38 | echo '<div class="comment-body media">'; 39 | echo '<div class="media-body">'; 40 | _e('Pingback:', 'bootstrap-basic'); 41 | comment_author_link(); 42 | edit_comment_link(__('Edit', 'bootstrap-basic'), '<span class="edit-link">', '</span>'); 43 | echo '</div>'; 44 | echo '</div>'; 45 | } else { 46 | echo '<li id="comment-'; 47 | comment_ID(); 48 | echo '" '; 49 | comment_class(empty($args['has_children']) ? '' : 'parent media'); 50 | echo '>'; 51 | 52 | echo '<article id="div-comment-'; 53 | comment_ID(); 54 | echo '" class="comment-body media">'; 55 | 56 | // footer 57 | echo '<footer class="comment-meta pull-left">'; 58 | if (0 !== intval($args['avatar_size'])) { 59 | echo get_avatar($comment, $args['avatar_size']); 60 | } 61 | echo '</footer><!-- .comment-meta -->'; 62 | // end footer 63 | 64 | // comment content 65 | echo '<div class="comment-content media-body">'; 66 | echo '<div class="comment-author vcard">'; 67 | echo '<div class="comment-metadata">'; 68 | 69 | // date-time 70 | echo '<a href="'; 71 | echo esc_url(get_comment_link($comment->comment_ID)); 72 | echo '">'; 73 | echo '<time datetime="'; 74 | comment_time('c'); 75 | echo '">'; 76 | /* translators: %1$s: Comment date, %2$s: Comment time. */ 77 | printf(_x('%1$s at %2$s', '1: date, 2: time', 'bootstrap-basic'), get_comment_date(), get_comment_time()); 78 | echo '</time>'; 79 | echo '</a>'; 80 | // end date-time 81 | 82 | echo ' '; 83 | 84 | edit_comment_link('<span class="fa fa-pencil-square-o "></span>' . __('Edit', 'bootstrap-basic'), '<span class="edit-link">', '</span>'); 85 | 86 | echo '</div><!-- .comment-metadata -->'; 87 | 88 | // if comment was not approved 89 | if ('0' === strval($comment->comment_approved)) { 90 | echo '<div class="comment-awaiting-moderation text-warning"> <span class="glyphicon glyphicon-info-sign"></span> '; 91 | _e('Your comment is awaiting moderation.', 'bootstrap-basic'); 92 | echo '</div>'; 93 | } //endif; 94 | 95 | // comment author says 96 | /* translators: %s: Comment author link. */ 97 | printf(__('%s <span class="says">says:</span>', 'bootstrap-basic'), sprintf('<cite class="fn">%s</cite>', get_comment_author_link())); 98 | echo '</div><!-- .comment-author -->'; 99 | 100 | // comment content body 101 | comment_text(); 102 | // end comment content body 103 | 104 | // reply link 105 | comment_reply_link(array_merge($args, array( 106 | 'add_below' => 'div-comment', 107 | 'depth' => $depth, 108 | 'max_depth' => $args['max_depth'], 109 | 'reply_text' => '<span class="fa fa-reply"></span> ' . __('Reply', 'bootstrap-basic'), 110 | 'login_text' => '<span class="fa fa-reply"></span> ' . __('Log in to Reply', 'bootstrap-basic'), 111 | ))); 112 | // end reply link 113 | echo '</div><!-- .comment-content -->'; 114 | // end comment content 115 | 116 | echo '</article><!-- .comment-body -->'; 117 | } //endif; 118 | }// bootstrapBasicComment 119 | } 120 | 121 | 122 | if (!function_exists('bootstrapBasicCommentsPopupLink')) { 123 | /** 124 | * Custom comment popup link 125 | * 126 | * @return string 127 | */ 128 | function bootstrapBasicCommentsPopupLink() 129 | { 130 | $comment_icon = '<span class="comment-icon glyphicon glyphicon-comment"><small class="comment-total">%d</small></span>'; 131 | $comments_icon = '<span class="comment-icon glyphicon glyphicon-comment"><small class="comment-total">%s</small></span>'; 132 | return comments_popup_link(sprintf($comment_icon, ''), sprintf($comment_icon, '1'), sprintf($comments_icon, '%'), 'btn btn-default btn-xs'); 133 | }// bootstrapBasicCommentsPopupLink 134 | } 135 | 136 | 137 | if (!function_exists('bootstrapBasicEditPostLink')) { 138 | /** 139 | * Display edit post link 140 | */ 141 | function bootstrapBasicEditPostLink() 142 | { 143 | $edit_post_link = get_edit_post_link(); 144 | if (!empty($edit_post_link)) { 145 | $edit_btn = '<a class="post-edit-link btn btn-default btn-xs" href="'.$edit_post_link.'" title="' . __('Edit', 'bootstrap-basic') . '"><i class="edit-post-icon glyphicon glyphicon-pencil" title="' . __('Edit', 'bootstrap-basic') . '"></i></a>'; 146 | unset($edit_post_link); 147 | echo $edit_btn; 148 | } 149 | }// bootstrapBasicEditPostLink 150 | } 151 | 152 | 153 | if (!function_exists('bootstrapBasicFullPageSearchForm')) { 154 | /** 155 | * Display full page search form 156 | * 157 | * @return string the search form element 158 | */ 159 | function bootstrapBasicFullPageSearchForm() 160 | { 161 | return get_search_form(array( 162 | 'echo' => false, 163 | )); 164 | }// bootstrapBasicFullPageSearchForm 165 | } 166 | 167 | 168 | if (!function_exists('bootstrapBasicGetLinkInContent')) { 169 | /** 170 | * get the link in content 171 | * 172 | * @return string 173 | */ 174 | function bootstrapBasicGetLinkInContent() 175 | { 176 | $content = get_the_content(); 177 | $has_url = get_url_in_content($content); 178 | 179 | if ($has_url) { 180 | return $has_url; 181 | } else { 182 | return apply_filters('the_permalink', get_permalink()); 183 | } 184 | }// bootstrapBasicGetLinkInContent 185 | } 186 | 187 | 188 | if (!function_exists('bootstrapBasicMoreLinkText')) { 189 | /** 190 | * Custom more link (continue reading) text 191 | * @return string 192 | */ 193 | function bootstrapBasicMoreLinkText() 194 | { 195 | return __('Continue reading <span class="meta-nav">→</span>', 'bootstrap-basic'); 196 | }// bootstrapBasicMoreLinkText 197 | } 198 | 199 | 200 | if (!function_exists('bootstrapBasicPagination')) { 201 | /** 202 | * display pagination (1 2 3 ...) instead of previous, next of WordPress style. 203 | * 204 | * @param string $pagination_align_class 205 | */ 206 | function bootstrapBasicPagination($pagination_align_class = 'pagination-center pagination-row') 207 | { 208 | global $wp_query; 209 | $big = 999999999; 210 | $pagination_array = paginate_links(array( 211 | 'base' => str_replace($big, '%#%', get_pagenum_link($big)), 212 | 'format' => '/page/%#%', 213 | 'current' => max(1, get_query_var('paged')), 214 | 'total' => $wp_query->max_num_pages, 215 | 'prev_text' => '«', 216 | 'next_text' => '»', 217 | 'type' => 'array', 218 | )); 219 | 220 | unset($big); 221 | 222 | if (is_array($pagination_array) && !empty($pagination_array)) { 223 | echo '<nav class="' . $pagination_align_class . '">'; 224 | echo '<ul class="pagination">'; 225 | foreach ($pagination_array as $page) { 226 | if (!is_scalar($page)) { 227 | echo '<!-- $page is not scalar type: ' . gettext($page) . ' -->' . PHP_EOL; 228 | continue; 229 | } 230 | 231 | echo '<li'; 232 | if (strpos($page, '<a') === false && strpos($page, '…') === false) { 233 | echo ' class="active"'; 234 | } 235 | echo '>'; 236 | if (strpos($page, '<a') === false && strpos($page, '…') === false) { 237 | echo '<span>' . $page . '</span>'; 238 | } else { 239 | echo $page; 240 | } 241 | echo '</li>'; 242 | } 243 | echo '</ul>'; 244 | echo '</nav>'; 245 | } 246 | 247 | unset($page, $pagination_array); 248 | }// bootstrapBasicPagination 249 | } 250 | 251 | 252 | if (!function_exists('bootstrapBasicPostOn')) { 253 | /** 254 | * display post date/time and author 255 | */ 256 | function bootstrapBasicPostOn() 257 | { 258 | $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>'; 259 | if (get_the_time('U') !== get_the_modified_time('U')) { 260 | $time_string .= '<time class="updated" datetime="%3$s">%4$s</time>'; 261 | } 262 | 263 | $time_string = sprintf($time_string, 264 | esc_attr(get_the_date('c')), 265 | esc_html(get_the_date()), 266 | esc_attr(get_the_modified_date('c')), 267 | esc_html(get_the_modified_date()) 268 | ); 269 | 270 | /* translators: %1$s: Link to post with date/time text, %2$s: Link to author with auth name. */ 271 | printf(__('<span class="posted-on">Posted on %1$s</span><span class="byline"> by %2$s</span>', 'bootstrap-basic'), 272 | sprintf('<a href="%1$s" title="%2$s" rel="bookmark">%3$s</a>', 273 | esc_url(get_permalink()), 274 | esc_attr(get_the_time()), 275 | $time_string 276 | ), 277 | sprintf('<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>', 278 | esc_url(get_author_posts_url(get_the_author_meta('ID'))), 279 | /* translators: %s Author name. */ 280 | esc_attr(sprintf(__('View all posts by %s', 'bootstrap-basic'), get_the_author())), 281 | esc_html(get_the_author()) 282 | ) 283 | ); 284 | }// bootstrapBasicPostOn 285 | } 286 | 287 | 288 | if (!function_exists('bootstrapBasicTagsList')) { 289 | /** 290 | * display tags list 291 | * 292 | * @param string $tags_list 293 | * @return string 294 | */ 295 | function bootstrapBasicTagsList($tags_list = '') 296 | { 297 | return sprintf('<span class="tags-icon glyphicon glyphicon-tags" title="' . __('Tagged', 'bootstrap-basic') . '"></span>  %1$s', $tags_list); 298 | }// bootstrapBasicTagsList 299 | } 300 | 301 | 302 | if (!function_exists('bootstrapBasicTheAttachedImage')) { 303 | /** 304 | * Display attach image with link. 305 | */ 306 | function bootstrapBasicTheAttachedImage() 307 | { 308 | $post = get_post(); 309 | $attachment_size = apply_filters('bootstrap_basic_attachment_size', array(1140, 1140)); 310 | $next_attachment_url = wp_get_attachment_url(); 311 | 312 | /** 313 | * Grab the IDs of all the image attachments in a gallery so we can get the 314 | * URL of the next adjacent image in a gallery, or the first image (if 315 | * we're looking at the last image in a gallery), or, in a gallery of one, 316 | * just the link to that image file. 317 | */ 318 | $attachment_ids = get_posts(array( 319 | 'post_parent' => $post->post_parent, 320 | 'fields' => 'ids', 321 | 'numberposts' => -1, 322 | 'post_status' => 'inherit', 323 | 'post_type' => 'attachment', 324 | 'post_mime_type' => 'image', 325 | 'order' => 'ASC', 326 | 'orderby' => 'menu_order ID', 327 | )); 328 | 329 | // If there is more than 1 attachment in a gallery... 330 | if (count($attachment_ids) > 1) { 331 | foreach ($attachment_ids as $attachment_id) { 332 | if ($attachment_id === $post->ID) { 333 | $next_id = current($attachment_ids); 334 | break; 335 | } 336 | } 337 | 338 | if ($next_id) { 339 | // get the URL of the next image attachment... 340 | $next_attachment_url = get_attachment_link($next_id); 341 | } else { 342 | // or get the URL of the first image attachment. 343 | $next_attachment_url = get_attachment_link(array_shift($attachment_ids)); 344 | } 345 | } 346 | 347 | printf('<a href="%1$s" title="%2$s" rel="attachment">%3$s</a>', 348 | esc_url($next_attachment_url), 349 | the_title_attribute(array('echo' => false)), 350 | wp_get_attachment_image($post->ID, $attachment_size, false, array('class' => 'img-responsive aligncenter')) 351 | ); 352 | }// bootstrapBasicTheAttachedImage 353 | } -------------------------------------------------------------------------------- /js/vendor/modernizr.min.js: -------------------------------------------------------------------------------- 1 | /*! modernizr 3.6.0 (Custom Build) | MIT * 2 | * https://modernizr.com/download/?-adownload-apng-applicationcache-audio-backgroundsize-borderimage-borderradius-boxshadow-canvas-canvastext-contextmenu-cssanimations-csscolumns-cssgradients-cssgrid_cssgridlegacy-cssreflections-cssscrollbar-csstransforms-csstransforms3d-csstransitions-datauri-emoji-eventlistener-flash-flexbox-fontface-fullscreen-generatedcontent-geolocation-hashchange-history-hsla-indexeddb-inlinesvg-input-inputtypes-json-localstorage-multiplebgs-notification-opacity-picture-postmessage-queryselector-rgba-scriptasync-scriptdefer-sessionstorage-sizes-smil-srcset-svg-svgclippaths-template-textshadow-touchevents-unknownelements-video-webaudio-webgl-websockets-websqldatabase-webworkers-addtest-mq-setclasses-shiv !*/ 3 | !function(e,t,n){function r(e,t){return typeof e===t}function a(){var e,t,n,a,o,i,s;for(var c in w)if(w.hasOwnProperty(c)){if(e=[],t=w[c],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(a=r(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)i=e[o],s=i.split("."),1===s.length?Modernizr[s[0]]=a:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=a),T.push((a?"":"no-")+s.join("-"))}}function o(e){var t=E.className,n=Modernizr._config.classPrefix||"";if(k&&(t=t.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),k?E.className.baseVal=t:E.className=t)}function i(e,t){if("object"==typeof e)for(var n in e)P(e,n)&&i(n,e[n]);else{e=e.toLowerCase();var r=e.split("."),a=Modernizr[r[0]];if(2==r.length&&(a=a[r[1]]),"undefined"!=typeof a)return Modernizr;t="function"==typeof t?t():t,1==r.length?Modernizr[r[0]]=t:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=t),o([(t&&0!=t?"":"no-")+r.join("-")]),Modernizr._trigger(e,t)}return Modernizr}function s(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):k?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function c(){var e=t.body;return e||(e=s(k?"svg":"body"),e.fake=!0),e}function d(e,n,r,a){var o,i,d,l,u="modernizr",f=s("div"),p=c();if(parseInt(r,10))for(;r--;)d=s("div"),d.id=a?a[r]:u+(r+1),f.appendChild(d);return o=s("style"),o.type="text/css",o.id="s"+u,(p.fake?p:f).appendChild(o),p.appendChild(f),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(t.createTextNode(e)),f.id=u,p.fake&&(p.style.background="",p.style.overflow="hidden",l=E.style.overflow,E.style.overflow="hidden",E.appendChild(p)),i=n(f,e),p.fake?(p.parentNode.removeChild(p),E.style.overflow=l,E.offsetHeight):f.parentNode.removeChild(f),!!i}function l(e,t){return!!~(""+e).indexOf(t)}function u(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function f(e,t){return function(){return e.apply(t,arguments)}}function p(e,t,n){var a;for(var o in e)if(e[o]in t)return n===!1?e[o]:(a=t[e[o]],r(a,"function")?f(a,n||t):a);return!1}function m(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function g(t,n,r){var a;if("getComputedStyle"in e){a=getComputedStyle.call(e,t,n);var o=e.console;if(null!==a)r&&(a=a.getPropertyValue(r));else if(o){var i=o.error?"error":"log";o[i].call(o,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else a=!n&&t.currentStyle&&t.currentStyle[r];return a}function h(t,r){var a=t.length;if("CSS"in e&&"supports"in e.CSS){for(;a--;)if(e.CSS.supports(m(t[a]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var o=[];a--;)o.push("("+m(t[a])+":"+r+")");return o=o.join(" or "),d("@supports ("+o+") { #modernizr { position: absolute; } }",function(e){return"absolute"==g(e,null,"position")})}return n}function A(e,t,a,o){function i(){d&&(delete W.style,delete W.modElem)}if(o=r(o,"undefined")?!1:o,!r(a,"undefined")){var c=h(e,a);if(!r(c,"undefined"))return c}for(var d,f,p,m,g,A=["modernizr","tspan","samp"];!W.style&&A.length;)d=!0,W.modElem=s(A.shift()),W.style=W.modElem.style;for(p=e.length,f=0;p>f;f++)if(m=e[f],g=W.style[m],l(m,"-")&&(m=u(m)),W.style[m]!==n){if(o||r(a,"undefined"))return i(),"pfx"==t?m:!0;try{W.style[m]=a}catch(v){}if(W.style[m]!=g)return i(),"pfx"==t?m:!0}return i(),!1}function v(e,t,n,a,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+V.join(i+" ")+i).split(" ");return r(t,"string")||r(t,"undefined")?A(s,t,a,o):(s=(e+" "+G.join(i+" ")+i).split(" "),p(s,t,n))}function y(e,t){var n=e.deleteDatabase(t);n.onsuccess=function(){i("indexeddb.deletedatabase",!0)},n.onerror=function(){i("indexeddb.deletedatabase",!1)}}function b(e,t,r){return v(e,n,n,t,r)}var T=[],w=[],x={_version:"3.6.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){w.push({name:e,fn:t,options:n})},addAsyncTest:function(e){w.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=x,Modernizr=new Modernizr,Modernizr.addTest("applicationcache","applicationCache"in e),Modernizr.addTest("eventlistener","addEventListener"in e),Modernizr.addTest("geolocation","geolocation"in navigator),Modernizr.addTest("history",function(){var t=navigator.userAgent;return-1===t.indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone")||"file:"===location.protocol?e.history&&"pushState"in e.history:!1}),Modernizr.addTest("json","JSON"in e&&"parse"in JSON&&"stringify"in JSON),Modernizr.addTest("notification",function(){if(!e.Notification||!e.Notification.requestPermission)return!1;if("granted"===e.Notification.permission)return!0;try{new e.Notification("")}catch(t){if("TypeError"===t.name)return!1}return!0}),Modernizr.addTest("postmessage","postMessage"in e),Modernizr.addTest("queryselector","querySelector"in t&&"querySelectorAll"in t),Modernizr.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var S=!1;try{S="WebSocket"in e&&2===e.WebSocket.CLOSING}catch(C){}Modernizr.addTest("websockets",S),Modernizr.addTest("webaudio",function(){var t="webkitAudioContext"in e,n="AudioContext"in e;return Modernizr._config.usePrefixes?t||n:n}),Modernizr.addTest("picture","HTMLPictureElement"in e),Modernizr.addTest("localstorage",function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest("sessionstorage",function(){var e="modernizr";try{return sessionStorage.setItem(e,e),sessionStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest("websqldatabase","openDatabase"in e),Modernizr.addTest("webworkers","Worker"in e);var E=t.documentElement;Modernizr.addTest("contextmenu","contextMenu"in E&&"HTMLMenuItemElement"in e);var k="svg"===E.nodeName.toLowerCase();k||!function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=y.elements;return"string"==typeof e?e.split(" "):e}function a(e,t){var n=y.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),y.elements=n+" "+e,d(t)}function o(e){var t=v[e[h]];return t||(t={},A++,e[h]=A,v[A]=t),t}function i(e,n,r){if(n||(n=t),u)return n.createElement(e);r||(r=o(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():g.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||m.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function s(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||o(e);for(var a=n.frag.cloneNode(),i=0,s=r(),c=s.length;c>i;i++)a.createElement(s[i]);return a}function c(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return y.shivMethods?i(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(y,t.frag)}function d(e){e||(e=t);var r=o(e);return!y.shivCSS||l||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),u||c(e,r),e}var l,u,f="3.7.3",p=e.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?: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,h="_html5shiv",A=0,v={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",l="hidden"in e,u=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){l=!0,u=!0}}();var y={elements:p.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",version:f,shivCSS:p.shivCSS!==!1,supportsUnknownElements:u,shivMethods:p.shivMethods!==!1,type:"default",shivDocument:d,createElement:i,createDocumentFragment:s,addElements:a};e.html5=y,d(t),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof e?e:this,t);var P;!function(){var e={}.hasOwnProperty;P=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),x._l={},x.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},x._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e<n.length;e++)(r=n[e])(t)},0),delete this._l[e]}},Modernizr._q.push(function(){x.addTest=i}),Modernizr.addAsyncTest(function(){function e(){var e=new Image;e.onerror=function(){i("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},e.onload=function(){i("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==e.width&&1==e.height};for(var t="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";t.length<33e3;)t="\r\n"+t;e.src="data:image/gif;base64,"+t}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){i("datauri",!1)},10);var t=new Image;t.onerror=function(){i("datauri",!1)},t.onload=function(){1==t.width&&1==t.height?e():i("datauri",!1)},t.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("audio",function(){var e=s("audio"),t=!1;try{t=!!e.canPlayType,t&&(t=new Boolean(t),t.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),t.mp3=e.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/,""),t.opus=e.canPlayType('audio/ogg; codecs="opus"')||e.canPlayType('audio/webm; codecs="opus"').replace(/^no$/,""),t.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),t.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(n){}return t}),Modernizr.addTest("canvas",function(){var e=s("canvas");return!(!e.getContext||!e.getContext("2d"))}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof s("canvas").getContext("2d").fillText}),Modernizr.addTest("emoji",function(){if(!Modernizr.canvastext)return!1;var t=e.devicePixelRatio||1,n=12*t,r=s("canvas"),a=r.getContext("2d");return a.fillStyle="#f00",a.textBaseline="top",a.font="32px Arial",a.fillText("🐨",0,0),0!==a.getImageData(n,n,1,1).data[0]}),Modernizr.addTest("video",function(){var e=s("video"),t=!1;try{t=!!e.canPlayType,t&&(t=new Boolean(t),t.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),t.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),t.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),t.vp9=e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""),t.hls=e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,""))}catch(n){}return t}),Modernizr.addTest("webgl",function(){var t=s("canvas"),n="probablySupportsContext"in t?"probablySupportsContext":"supportsContext";return n in t?t[n]("webgl")||t[n]("experimental-webgl"):"WebGLRenderingContext"in e}),Modernizr.addTest("adownload",!e.externalHost&&"download"in s("a")),Modernizr.addTest("multiplebgs",function(){var e=s("a").style;return e.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(e.background)}),Modernizr.addTest("rgba",function(){var e=s("a").style;return e.cssText="background-color:rgba(150,255,150,.5)",(""+e.backgroundColor).indexOf("rgba")>-1}),Modernizr.addTest("template","content"in s("template")),Modernizr.addTest("unknownelements",function(){var e=s("a");return e.innerHTML="<xyz></xyz>",1===e.childNodes.length}),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var e=new Image,t=s("canvas"),n=t.getContext("2d");e.onload=function(){i("apng",function(){return"undefined"==typeof t.getContext?!1:(n.drawImage(e,0,0),0===n.getImageData(0,0,1,1).data[3])})},e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var e,t,n,r=s("img"),a="sizes"in r;!a&&"srcset"in r?(t="data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==",e="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",n=function(){i("sizes",2==r.width)},r.onload=n,r.onerror=n,r.setAttribute("sizes","9px"),r.srcset=e+" 1w,"+t+" 8w",r.src=e):i("sizes",a)}),Modernizr.addTest("scriptasync","async"in s("script")),Modernizr.addTest("scriptdefer","defer"in s("script")),Modernizr.addTest("inlinesvg",function(){var e=s("div");return e.innerHTML="<svg/>","http://www.w3.org/2000/svg"==("undefined"!=typeof SVGRect&&e.firstChild&&e.firstChild.namespaceURI)}),Modernizr.addTest("srcset","srcset"in s("img")),Modernizr.addAsyncTest(function(){var n,r,a=function(e){E.contains(e)||E.appendChild(e)},o=function(e){e.fake&&e.parentNode&&e.parentNode.removeChild(e)},d=function(e,t){var n=!!e;if(n&&(n=new Boolean(n),n.blocked="blocked"===e),i("flash",function(){return n}),t&&m.contains(t)){for(;t.parentNode!==m;)t=t.parentNode;m.removeChild(t)}};try{r="ActiveXObject"in e&&"Pan"in new e.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(l){}if(n=!("plugins"in navigator&&"Shockwave Flash"in navigator.plugins||r),n||k)d(!1);else{var u,f,p=s("embed"),m=c();if(p.type="application/x-shockwave-flash",m.appendChild(p),!("Pan"in p||r))return a(m),d("blocked",p),void o(m);u=function(){return a(m),E.contains(m)?(E.contains(p)?(f=p.style.cssText,""!==f?d("blocked",p):d(!0,p)):d("blocked"),void o(m)):(m=t.body||m,p=s("embed"),p.type="application/x-shockwave-flash",m.appendChild(p),setTimeout(u,1e3))},setTimeout(u,10)}});var B=function(){var t=e.matchMedia||e.msMatchMedia;return t?function(e){var n=t(e);return n&&n.matches||!1}:function(t){var n=!1;return d("@media "+t+" { #modernizr { position: absolute; } }",function(t){n="absolute"==(e.getComputedStyle?e.getComputedStyle(t,null):t.currentStyle).position}),n}}();x.mq=B;var N=function(){function e(e,t){var a;return e?(t&&"string"!=typeof t||(t=s(t||"div")),e="on"+e,a=e in t,!a&&r&&(t.setAttribute||(t=s("div")),t.setAttribute(e,""),a="function"==typeof t[e],t[e]!==n&&(t[e]=n),t.removeAttribute(e)),a):!1}var r=!("onblur"in t.documentElement);return e}();x.hasEvent=N,Modernizr.addTest("hashchange",function(){return N("hashchange",e)===!1?!1:t.documentMode===n||t.documentMode>7});var _=s("input"),z="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),O={};Modernizr.input=function(t){for(var n=0,r=t.length;r>n;n++)O[t[n]]=!!(t[n]in _);return O.list&&(O.list=!(!s("datalist")||!e.HTMLDataListElement)),O}(z);var R="search tel url email datetime date month week time datetime-local number range color".split(" "),j={};Modernizr.inputtypes=function(e){for(var r,a,o,i=e.length,s="1)",c=0;i>c;c++)_.setAttribute("type",r=e[c]),o="text"!==_.type&&"style"in _,o&&(_.value=s,_.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(r)&&_.style.WebkitAppearance!==n?(E.appendChild(_),a=t.defaultView,o=a.getComputedStyle&&"textfield"!==a.getComputedStyle(_,null).WebkitAppearance&&0!==_.offsetHeight,E.removeChild(_)):/^(search|tel)$/.test(r)||(o=/^(url|email)$/.test(r)?_.checkValidity&&_.checkValidity()===!1:_.value!=s)),j[e[c]]=!!o;return j}(R);var I=x._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];x._prefixes=I,Modernizr.addTest("cssgradients",function(){for(var e,t="background-image:",n="gradient(linear,left top,right bottom,from(#9f9),to(white));",r="",a=0,o=I.length-1;o>a;a++)e=0===a?"to ":"",r+=t+I[a]+"linear-gradient("+e+"left top, #9f9, white);";Modernizr._config.usePrefixes&&(r+=t+"-webkit-"+n);var i=s("a"),c=i.style;return c.cssText=r,(""+c.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("opacity",function(){var e=s("a").style;return e.cssText=I.join("opacity:.55;"),/^0.55$/.test(e.opacity)});var M=x.testStyles=d;Modernizr.addTest("touchevents",function(){var n;if("ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch)n=!0;else{var r=["@media (",I.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");M(r,function(e){n=9===e.offsetTop})}return n});var L=function(){var e=navigator.userAgent,t=e.match(/w(eb)?osbrowser/gi),n=e.match(/windows phone/gi)&&e.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9;return t||n}();L?Modernizr.addTest("fontface",!1):M('@font-face {font-family:"font";src:url("https://")}',function(e,n){var r=t.getElementById("smodernizr"),a=r.sheet||r.styleSheet,o=a?a.cssRules&&a.cssRules[0]?a.cssRules[0].cssText:a.cssText||"":"",i=/src/i.test(o)&&0===o.indexOf(n.split(" ")[0]);Modernizr.addTest("fontface",i)}),M('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(e){Modernizr.addTest("generatedcontent",e.offsetHeight>=6)}),M("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+I.join("scrollbar{width:10px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:10px}",function(e){Modernizr.addTest("cssscrollbar","scrollWidth"in e&&30==e.scrollWidth)}),Modernizr.addTest("hsla",function(){var e=s("a").style;return e.cssText="background-color:hsla(120,40%,100%,.5)",l(e.backgroundColor,"rgba")||l(e.backgroundColor,"hsla")});var F="CSS"in e&&"supports"in e.CSS,D="supportsCSS"in e;Modernizr.addTest("supports",F||D);var $={}.toString;Modernizr.addTest("svgclippaths",function(){return!!t.createElementNS&&/SVGClipPath/.test($.call(t.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("smil",function(){return!!t.createElementNS&&/SVGAnimate/.test($.call(t.createElementNS("http://www.w3.org/2000/svg","animate")))});var U="Moz O ms Webkit",V=x._config.usePrefixes?U.split(" "):[];x._cssomPrefixes=V;var q=function(t){var r,a=I.length,o=e.CSSRule;if("undefined"==typeof o)return n;if(!t)return!1;if(t=t.replace(/^@/,""),r=t.replace(/-/g,"_").toUpperCase()+"_RULE",r in o)return"@"+t;for(var i=0;a>i;i++){var s=I[i],c=s.toUpperCase()+"_"+r;if(c in o)return"@-"+s.toLowerCase()+"-"+t}return!1};x.atRule=q;var G=x._config.usePrefixes?U.toLowerCase().split(" "):[];x._domPrefixes=G;var H={elem:s("modernizr")};Modernizr._q.push(function(){delete H.elem});var W={style:H.elem.style};Modernizr._q.unshift(function(){delete W.style});var J=x.testProp=function(e,t,r){return A([e],n,t,r)};Modernizr.addTest("textshadow",J("textShadow","1px 1px")),x.testAllProps=v;var Q=x.prefixed=function(e,t,n){return 0===e.indexOf("@")?q(e):(-1!=e.indexOf("-")&&(e=u(e)),t?v(e,t,n):v(e,"pfx"))};Modernizr.addTest("fullscreen",!(!Q("exitFullscreen",t,!1)&&!Q("cancelFullScreen",t,!1))),Modernizr.addAsyncTest(function(){var t;try{t=Q("indexedDB",e)}catch(n){}if(t){var r="modernizr-"+Math.random(),a=t.open(r);a.onerror=function(){a.error&&"InvalidStateError"===a.error.name?i("indexeddb",!1):(i("indexeddb",!0),y(t,r))},a.onsuccess=function(){i("indexeddb",!0),y(t,r)}}else i("indexeddb",!1)}),x.testAllProps=b,Modernizr.addTest("cssanimations",b("animationName","a",!0)),Modernizr.addTest("backgroundsize",b("backgroundSize","100%",!0)),Modernizr.addTest("borderimage",b("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",b("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",b("boxShadow","1px 1px",!0)),function(){Modernizr.addTest("csscolumns",function(){var e=!1,t=b("columnCount");try{e=!!t,e&&(e=new Boolean(e))}catch(n){}return e});for(var e,t,n=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],r=0;r<n.length;r++)e=n[r].toLowerCase(),t=b("column"+n[r]),("breakbefore"===e||"breakafter"===e||"breakinside"==e)&&(t=t||b(n[r])),Modernizr.addTest("csscolumns."+e,t)}(),Modernizr.addTest("cssgridlegacy",b("grid-columns","10px",!0)),Modernizr.addTest("cssgrid",b("grid-template-rows","none",!0)),Modernizr.addTest("flexbox",b("flexBasis","1px",!0)),Modernizr.addTest("cssreflections",b("boxReflect","above",!0)),Modernizr.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&b("transform","scale(1)",!0)}),Modernizr.addTest("csstransforms3d",function(){return!!b("perspective","1px",!0)}),Modernizr.addTest("csstransitions",b("transition","all",!0)),a(),o(T),delete x.addTest,delete x.addAsyncTest;for(var Y=0;Y<Modernizr._q.length;Y++)Modernizr._q[Y]();e.Modernizr=Modernizr}(window,document); -------------------------------------------------------------------------------- /css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.4.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x;background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x;background-color:#2e6da4}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} 6 | /*# sourceMappingURL=bootstrap-theme.min.css.map */ --------------------------------------------------------------------------------