This commit is contained in:
0dp 2018-06-14 11:33:05 +02:00
commit d8ad7b29d4
98 changed files with 19033 additions and 14699 deletions

12
.gitignore vendored
View File

@ -13,3 +13,15 @@ dist-product
npm-debug.log
/vendor/
.DS_Store
Thumbs.db
.svn
.cvs
*.bak
*.swp

View File

@ -1,3 +1,20 @@
- ** Release 0.8.2 April 11th 2018 **
- Update to Bootstrap 4.1
- Adding CONTRIBUTING.md and ISSUE_TEMPLATE.md - Thx @Thomas-A-Reinert
- Adding empty JS file into build process for adding own JS more easily - Thx @Thomas-A-Reinert
- WooCommerce update and cleanup - Thx @ZacharyElkins
- Adding SASS source map functionality - Thx @axlright
- Cleanup - Thx @axlright
- Adding custom editor SASS stylesheet into build process
- Remove woocommerce.php integration and replace it with hooked approach - See: https://docs.woocommerce.com/document/third-party-custom-theme-compatibility/#section-5
- New pagination - Thx @0dp
- Update functions.php - Thx @0dp
- Add pluggable functions - Thx @axlright
- Add polish translation - Thx @mirzal
- Adding timestamp to js and css resources to prevent caching while developinh - Thx @@gintsmurans
- Improve left sidebar check - Thx @ZacharyElkins
- ** Release 0.8.1 March 7th 2018 **
- Updating dependencies
- Fixing and improing gulpfile.js - thx @0dp

View File

@ -9,11 +9,11 @@ Please delete anything that does not apply for you!
## Please tell us about your environment:
- WordPress Version: 4.9.x
- OS Version: [Windows 7 | Windows 8 | Windows 10 | Linux [Distribution / Version] | MacOsX [Version | Android[Version] | iOS[Version]
- Browser: [ all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari ]
- Language: [ all | PHP | SQL | HTML | S/CSS | Javascript | jQuery | ES6 | JSON | XML]
- Node.js & NPM Versions: Node.js [V X.XX] | NPM [V X.XX]
- **WordPress Version:** 4.9.x
- **OS Version:** [Windows 7 | Windows 8 | Windows 10] | Linux [Distribution / Version] | MacOS [Version] | Android [Version] | iOS [Version]
- **Browser:** [ all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari ]
- **Language:** [ all | PHP | SQL | HTML | S/CSS | Javascript | jQuery | ES6 | JSON | XML]
- **Node.js & NPM Versions:** Node.js [V X.XX] | NPM [V X.XX]
---

5
ISSUE_TEMPLATE/test.md Normal file
View File

@ -0,0 +1,5 @@
# Testing
[] YES
[] NO!

View File

@ -6,16 +6,14 @@ Travis build: [![Build Status](https://travis-ci.org/understrap/understrap.svg?b
Website: [https://understrap.com](https://understrap.com)
Child Theme Project: [https://github.com/holger1411/understrap-child](https://github.com/holger1411/understrap-child)
Child Theme Project: [https://github.com/understrap/understrap-child](https://github.com/understrap/understrap-child)
## About
Im a huge fan of Underscores, Bootstrap, and Sass. Why not combine these into a solid WordPress Theme Framework?
Thats what UnderStrap is.
You can use it as starter theme and build your own theme on top of it. Or you use it as parent theme and create your own child theme for UnderStrap.
Im a huge fan of Underscores, Bootstrap, and Sass. Why not combine these into a solid WordPress Theme Framework? Thats what UnderStrap is. You can use it as a starter theme and build your own theme on top of it. Or you can use it as a parent theme and create your own child theme for UnderStrap.
## License
UnderStrap WordPress Theme, Copyright 2013-2017 Holger Koenemann
UnderStrap WordPress Theme, Copyright 2013-2018 Holger Koenemann
UnderStrap is distributed under the terms of the GNU GPL version 2
http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
@ -28,7 +26,7 @@ See [changelog](CHANGELOG.md)
- Combines Underscores PHP/JS files and Bootstraps HTML/CSS/JS.
- Comes with Bootstrap (v4) Sass source files and additional .scss files. Nicely sorted and ready to add your own variables and customize the Bootstrap variables.
- Uses a single and minified CSS file for all the basic stuff.
- Uses a single minified CSS file for all the basic stuff.
- [Font Awesome](http://fortawesome.github.io/Font-Awesome/) integration (v4.7.0)
- Jetpack ready.
- WooCommerce support.
@ -44,26 +42,30 @@ Why not add a well known and supported layout framework to have a solid, clean a
## Confused by All the CSS and Sass Files?
Some basics about the Sass and CSS files that come with UnderStrap:
- The theme itself uses the `/style.css`file just to identify the theme inside of WordPress. The file is not loaded by the theme and does not include any styles.
- The theme itself uses the `/style.css`file only to identify the theme inside of WordPress. The file is not loaded by the theme and does not include any styles.
- The `/css/theme.css` and its minified little brother `/css/theme.min.css` file(s) provides all styles. It is composed of five different SCSS sets and one variable file at `/sass/theme.scss`:
- 1 "theme/theme_variables"; // <--------- Add your variables into this file. Also add variables to overwrite Bootstrap or UnderStrap variables here
- 2 "../src/bootstrap-sass/assets/stylesheets/bootstrap"; // <--------- All the Bootstrap stuff - Don´t edit this!
- 3 "understrap/understrap"; // <--------- Some basic WordPress stylings and needed styles to combine Boostrap and Underscores
- 4 "../src/fontawesome/scss/font-awesome"; // <--------- Font Awesome Icon styles
```@import "theme/theme_variables"; // 1. Add your variables into this file. Also add variables to overwrite Bootstrap or UnderStrap variables here
@import "../src/bootstrap-sass/assets/stylesheets/bootstrap"; // 2. All the Bootstrap stuff - Don´t edit this!
@import "understrap/understrap"; // 3. Some basic WordPress stylings and needed styles to combine Boostrap and Underscores
@import "../src/fontawesome/scss/font-awesome"; // 4. Font Awesome Icon styles
// Any additional imported files //
@import "theme/theme"; // 5. Add your styles into this file
```
// Any additional imported files //
- 5 "theme/theme"; // <--------- Add your styles into this file
- Dont edit the files no. 2-4 files/filesets or you wont be able to update it without overwriting your own work!
- Your design goes into: `/sass/theme`. Add your styles to the `/sass/theme/_theme.scss` file and your variables to the `/sass/theme/_theme_variables.scss`. Or add other .scss files into it and `@import` it into `/sass/theme/_theme.scss`.
- Dont edit the number 2-4 files/filesets listed above or you wont be able to update Understrap without overwriting your own work!
- Your design goes into: `/sass/theme`.
- Add your styles to the `/sass/theme/_theme.scss` file
- And your variables to the `/sass/theme/_theme_variables.scss`
- Or add other .scss files into it and `@import` it into `/sass/theme/_theme.scss`.
## Installation
There are several ways to install UnderStrap. We'll look at three of them: (1) classic install by uploading UnderStrap to a WordPress install, (2) using npm, and (3) using the theme directory in WordPress.
### Classic install
- Download the understrap folder from GitHub or from [https://understrap.com](https://understrap.com)
- IMPORTANT: If you download it from GitHub make sure you rename the "understrap-master.zip" file just to "understrap.zip" or you might have problems using child themes !!
- Upload it into your WordPress installation subfolder here: `/wp-content/themes/`
- IMPORTANT: If you download it from GitHub make sure you rename the "understrap-master.zip" file just to "understrap.zip" or you might have problems using child themes!
- Upload it into your WordPress installation theme subfolder: `/wp-content/themes/`
- Login to your WordPress backend
- Go to Appearance → Themes
- Activate the UnderStrap theme
@ -84,12 +86,12 @@ Some basics about the Sass and CSS files that come with UnderStrap:
## Developing With npm, Gulp and SASS and [Browser Sync][1]
### Installing Dependencies
- Make sure you have installed Node.js and Browser-Sync* (* optional, if you wanna use it) on your computer globally
- Make sure you have installed Node.js and Browser-Sync (optional) on your computer globally
- Then open your terminal and browse to the location of your UnderStrap copy
- Run: `$ npm install`
### Running
To work and compile your Sass files on the fly start:
To work with and compile your Sass files on the fly start:
- `$ gulp watch`
@ -107,7 +109,7 @@ Or, to run with Browser-Sync:
```
- then run: `$ gulp watch-bs`
## How to Use the Build-In Widget Slider
## How to Use the Built-In Widget Slider
The front-page slider is widget driven. Simply add more than one widget to widget position “Hero”.
- Click on Appearance → Widgets.
@ -115,10 +117,11 @@ The front-page slider is widget driven. Simply add more than one widget to widge
- Thats it.
## RTL styles?
Just add a new file to the themes root folder called rtl.css. Add all alignments to this file according to this description:
Add a new file to the themes root folder called rtl.css. Add all alignments to this file according to this description:
https://codex.wordpress.org/Right_to_Left_Language_Support
## Page Templates
UnderStrap includes several different page template files: (1) blank template, (2) empty template, and (3) full width template.
### Blank Template
@ -132,6 +135,8 @@ The `empty.php` template displays a header and a footer only. A good starting po
The `fullwidthpage.php` template has full width layout without a sidebar.
## Footnotes
[1] Visit [http://browsersync.io](http://browsersync.io) for more information on Browser Sync
Licenses & Credits

View File

@ -60,8 +60,6 @@ $container = get_theme_mod( 'understrap_container_type' );
<!-- The pagination component -->
<?php understrap_pagination(); ?>
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

View File

@ -84,8 +84,6 @@ $container = get_theme_mod( 'understrap_container_type' );
<!-- The pagination component -->
<?php understrap_pagination(); ?>
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

View File

@ -1,6 +1,6 @@
{
"name": "understrap",
"version": "0.8.0",
"version": "0.8.2",
"homepage": "http://understrap.com",
"authors": [
"Holger Koenemann <office@holgerkoenemann.de>"

View File

@ -1,10 +1,10 @@
{
"name": "holger1411/understrap",
"description": "Combines Automattic´s Underscores Starter Theme and Bootstrap 4",
"type": "library",
"type": "wordpress-theme",
"license": "GPL-2.0",
"minimum-stability": "stable",
"require": {},
"require": {"composer/installers": "^1.5"},
"keywords": ["wordpress","theme","bootstrap"],
"homepage": "https://github.com/holger1411/understrap"
}

File diff suppressed because one or more lines are too long

4
css/theme.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,7 @@ require get_template_directory() . '/inc/enqueue.php';
require get_template_directory() . '/inc/template-tags.php';
/**
* Custom template tags for this theme.
* Custom pagination for this theme.
*/
require get_template_directory() . '/inc/pagination.php';
@ -58,7 +58,7 @@ require get_template_directory() . '/inc/jetpack.php';
/**
* Load custom WordPress nav walker.
*/
require get_template_directory() . '/inc/bootstrap-wp-navwalker.php';
require get_template_directory() . '/inc/class-wp-bootstrap-navwalker.php';
/**
* Load WooCommerce functions.

View File

@ -7,12 +7,14 @@
?>
<?php if ( is_active_sidebar( 'hero' ) || is_active_sidebar( 'statichero' ) ) : ?>
<?php if ( is_active_sidebar( 'hero' ) || is_active_sidebar( 'statichero' ) || is_active_sidebar( 'herocanvas' ) ) : ?>
<div class="wrapper" id="wrapper-hero">
<?php get_sidebar( 'hero' ); ?>
<?php get_sidebar( 'herocanvas' ); ?>
<?php get_sidebar( 'statichero' ); ?>
</div>

View File

@ -19,16 +19,18 @@ $sidebar_pos = get_theme_mod( 'understrap_sidebar_position' );
$html = '';
if ( 'right' === $sidebar_pos || 'left' === $sidebar_pos ) {
$html = '<div class="';
if ( is_active_sidebar( 'right-sidebar' ) || is_active_sidebar( 'left-sidebar' ) ) {
if ( ( is_active_sidebar( 'right-sidebar' ) && 'right' === $sidebar_pos ) || ( is_active_sidebar( 'left-sidebar' ) && 'left' === $sidebar_pos ) ) {
$html .= 'col-md-8 content-area" id="primary">';
} else {
$html .= 'col-md-12 content-area" id="primary">';
}
echo $html; // WPCS: XSS OK.
} elseif ( is_active_sidebar( 'right-sidebar' ) && is_active_sidebar( 'left-sidebar' ) ) {
} elseif ( 'both' === $sidebar_pos ) {
$html = '<div class="';
if ( 'both' === $sidebar_pos ) {
if ( is_active_sidebar( 'right-sidebar' ) && is_active_sidebar( 'left-sidebar' ) ) {
$html .= 'col-md-6 content-area" id="primary">';
} elseif ( is_active_sidebar( 'right-sidebar' ) || is_active_sidebar( 'left-sidebar' ) ) {
$html .= 'col-md-8 content-area" id="primary">';
} else {
$html .= 'col-md-12 content-area" id="primary">';
}
@ -36,4 +38,3 @@ $sidebar_pos = get_theme_mod( 'understrap_sidebar_position' );
} else {
echo '<div class="col-md-12 content-area" id="primary">';
}

View File

@ -6,6 +6,8 @@
*/
?>
</div><!-- #closing the primary container from /global-templates/left-sidebar-check.php -->
<?php $sidebar_pos = get_theme_mod( 'understrap_sidebar_position' ); ?>
<?php if ( 'right' === $sidebar_pos || 'both' === $sidebar_pos ) : ?>

View File

@ -32,7 +32,7 @@ $container = get_theme_mod( 'understrap_container_type' );
<a class="skip-link screen-reader-text sr-only" href="#content"><?php esc_html_e( 'Skip to content', 'understrap' ); ?></a>
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<?php if ( 'container' == $container ) : ?>
<div class="container" >
@ -69,7 +69,8 @@ $container = get_theme_mod( 'understrap_container_type' );
'menu_class' => 'navbar-nav',
'fallback_cb' => '',
'menu_id' => 'main-menu',
'walker' => new understrap_WP_Bootstrap_Navwalker(),
'depth' => 2,
'walker' => new Understrap_WP_Bootstrap_Navwalker(),
)
); ?>
<?php if ( 'container' == $container ) : ?>

View File

@ -1,216 +0,0 @@
<?php
/**
* Adapted from Edward McIntyre's wp_bootstrap_navwalker class.
* Removed support for glyphicon and added support for Font Awesome.
*
* @package understrap
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if (! class_exists ( 'understrap_WP_Bootstrap_Navwalker' )) :
/**
* Class WP_Bootstrap_Navwalker
* GitHub URI: https://github.com/twittem/wp-bootstrap-navwalker
* Description: A custom WordPress nav walker class to implement the Bootstrap 4
* navigation style in a custom theme using the WordPress built in menu manager.
* Version: 2.0.4
* Author: Edward McIntyre - @twittem
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
*/
class understrap_WP_Bootstrap_Navwalker extends Walker_Nav_Menu {
/**
* The starting level of the menu.
*
* @see Walker::start_lvl()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param int $depth Depth of page. Used for padding.
* @param mixed $args Rest of arguments.
*/
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<ul class=\" dropdown-menu\" role=\"menu\">\n";
}
/**
* Open element.
*
* @see Walker::start_el()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param object $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
* @param mixed $args Rest arguments.
* @param int $id Element's ID.
*/
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
/**
* Dividers, Headers or Disabled
* =============================
* Determine whether the item is a Divider, Header, Disabled or regular
* menu item. To prevent errors we use the strcasecmp() function to so a
* comparison that is not case sensitive. The strcasecmp() function returns
* a 0 if the strings are equal.
*/
if ( strcasecmp( $item->attr_title, 'divider' ) == 0 && $depth === 1 ) {
$output .= $indent . '<li class="dropdown-divider" role="presentation">';
} else if ( strcasecmp( $item->title, 'divider' ) == 0 && $depth === 1 ) {
$output .= $indent . '<li class="dropdown-divider" role="presentation">';
} else if ( strcasecmp( $item->attr_title, 'dropdown-header' ) == 0 && $depth === 1 ) {
$output .= $indent . '<li class="dropdown-header" role="presentation">' . esc_html( $item->title );
} else if ( strcasecmp( $item->attr_title, 'disabled' ) == 0 ) {
$output .= $indent . '<li class="disabled" role="presentation"><a href="#">' . esc_html( $item->title ) . '</a>';
} else {
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'nav-item menu-item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
/*
if ( $args->has_children )
$class_names .= ' dropdown';
*/
if ( $args->has_children && $depth === 0 ) {
$class_names .= ' dropdown';
} elseif ( $args->has_children && $depth > 0 ) {
$class_names .= ' dropdown-submenu';
}
if ( in_array( 'current-menu-item', $classes ) ) {
$class_names .= ' active';
}
// remove Font Awesome icon from classes array and save the icon
// we will add the icon back in via a <span> below so it aligns with
// the menu item
if ( in_array( 'fa', $classes ) ) {
$key = array_search( 'fa', $classes );
$icon = $classes[ $key + 1 ];
$class_names = str_replace( $classes[ $key + 1 ], '', $class_names );
$class_names = str_replace( $classes[ $key ], '', $class_names );
}
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args );
$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '<li' . $id . $value . $class_names . '>';
$atts = array();
if ( empty( $item->attr_title ) ) { $atts['title'] = ! empty( $item->title ) ? strip_tags( $item->title ) : ''; } else { $atts['title'] = $item->attr_title; }
$atts['target'] = ! empty( $item->target ) ? $item->target : '';
$atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
// If item has_children add atts to a.
if ( $args->has_children && $depth === 0 ) {
$atts['href'] = '#';
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'nav-link dropdown-toggle';
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
$atts['class'] = 'nav-link';
}
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
$item_output = $args->before;
// Font Awesome icons
if ( ! empty( $icon ) ) {
$item_output .= '<a' . $attributes . '><span class="fa ' . esc_attr( $icon ) . '"></span>&nbsp;';
} else {
$item_output .= '<a' . $attributes . '>';
}
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title,
$item->ID ) . $args->link_after;
$item_output .= ( $args->has_children && 0 === $depth ) ? ' <span class="caret"></span></a>' : '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
/**
* Traverse elements to create list from elements.
*
* Display one element if the element doesn't have any children otherwise,
* display the element and its children. Will only traverse up to the max
* depth and no ignore elements under that depth.
*
* This method shouldn't be called directly, use the walk() method instead.
*
* @see Walker::start_el()
* @since 2.5.0
*
* @param object $element Data object
* @param array $children_elements List of elements to continue traversing.
* @param int $max_depth Max depth to traverse.
* @param int $depth Depth of current element.
* @param array $args
* @param string $output Passed by reference. Used to append additional content.
*
* @return null Null on failure with no changes to parameters.
*/
public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
if ( ! $element ) {
return;
}
$id_field = $this->db_fields['id'];
// Display this element.
if ( is_object( $args[0] ) ) {
$args[0]->has_children = ! empty( $children_elements[ $element->$id_field ] );
}
parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
/**
* Menu Fallback
* =============
* If this function is assigned to the wp_nav_menu's fallback_cb variable
* and a manu has not been assigned to the theme location in the WordPress
* menu manager the function with display nothing to a non-logged in user,
* and will add a link to the WordPress menu manager if logged in as an admin.
*
* @param array $args passed from the wp_nav_menu function.
*
*/
public static function fallback( $args ) {
if ( current_user_can( 'manage_options' ) ) {
extract( $args );
$fb_output = null;
if ( $container ) {
$fb_output = '<' . $container;
if ( $container_class ) {
$fb_output .= ' class="' . $container_class . '"';
}
if ( $container_id ) {
$fb_output .= ' id="' . $container_id . '"';
}
$fb_output .= '>';
}
$fb_output .= '<ul';
if ( $menu_class ) {
$fb_output .= ' class="' . $menu_class . '"';
}
if ( $menu_id ) {
$fb_output .= ' id="' . $menu_id . '"';
}
$fb_output .= '>';
$fb_output .= '<li><a href="' . admin_url( 'nav-menus.php' ) . '">Add a menu</a></li>';
$fb_output .= '</ul>';
if ( $container ) {
$fb_output .= '</' . $container . '>';
}
echo $fb_output;
}
}
}
endif; /* End if class exists */

View File

@ -0,0 +1,555 @@
<?php
/**
* WP Bootstrap Navwalker
*
* @package WP-Bootstrap-Navwalker
*/
/*
* Class Name: WP_Bootstrap_Navwalker
* Plugin Name: WP Bootstrap Navwalker
* Plugin URI: https://github.com/wp-bootstrap/wp-bootstrap-navwalker
* Description: A custom WordPress nav walker class to implement the Bootstrap 4 navigation style in a custom theme using the WordPress built in menu manager.
* Author: Edward McIntyre - @twittem, WP Bootstrap, William Patton - @pattonwebz
* Version: 4.1.0
* Author URI: https://github.com/wp-bootstrap
* GitHub Plugin URI: https://github.com/wp-bootstrap/wp-bootstrap-navwalker
* GitHub Branch: master
* License: GPL-3.0+
* License URI: http://www.gnu.org/licenses/gpl-3.0.txt
*/
/* Check if Class Exists. */
if ( ! class_exists( 'Understrap_WP_Bootstrap_Navwalker' ) ) {
/**
* WP_Bootstrap_Navwalker class.
*
* @extends Walker_Nav_Menu
*/
class Understrap_WP_Bootstrap_Navwalker extends Walker_Nav_Menu {
/**
* Starts the list before the elements are added.
*
* @since WP 3.0.0
*
* @see Walker_Nav_Menu::start_lvl()
*
* @param string $output Used to append additional content (passed by reference).
* @param int $depth Depth of menu item. Used for padding.
* @param stdClass $args An object of wp_nav_menu() arguments.
*/
public function start_lvl( &$output, $depth = 0, $args = array() ) {
if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
$t = '';
$n = '';
} else {
$t = "\t";
$n = "\n";
}
$indent = str_repeat( $t, $depth );
// Default class to add to the file.
$classes = array( 'dropdown-menu' );
/**
* Filters the CSS class(es) applied to a menu list element.
*
* @since WP 4.8.0
*
* @param array $classes The CSS classes that are applied to the menu `<ul>` element.
* @param stdClass $args An object of `wp_nav_menu()` arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$class_names = join( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
/**
* The `.dropdown-menu` container needs to have a labelledby
* attribute which points to it's trigger link.
*
* Form a string for the labelledby attribute from the the latest
* link with an id that was added to the $output.
*/
$labelledby = '';
// find all links with an id in the output.
preg_match_all( '/(<a.*?id=\"|\')(.*?)\"|\'.*?>/im', $output, $matches );
// with pointer at end of array check if we got an ID match.
if ( end( $matches[2] ) ) {
// build a string to use as aria-labelledby.
$labelledby = 'aria-labelledby="' . end( $matches[2] ) . '"';
}
$output .= "{$n}{$indent}<ul$class_names $labelledby role=\"menu\">{$n}";
}
/**
* Starts the element output.
*
* @since WP 3.0.0
* @since WP 4.4.0 The {@see 'nav_menu_item_args'} filter was added.
*
* @see Walker_Nav_Menu::start_el()
*
* @param string $output Used to append additional content (passed by reference).
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $id Current item ID.
*/
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
$t = '';
$n = '';
} else {
$t = "\t";
$n = "\n";
}
$indent = ( $depth ) ? str_repeat( $t, $depth ) : '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
// Initialize some holder variables to store specially handled item
// wrappers and icons.
$linkmod_classes = array();
$icon_classes = array();
/**
* Get an updated $classes array without linkmod or icon classes.
*
* NOTE: linkmod and icon class arrays are passed by reference and
* are maybe modified before being used later in this function.
*/
$classes = self::seporate_linkmods_and_icons_from_classes( $classes, $linkmod_classes, $icon_classes, $depth );
// Join any icon classes plucked from $classes into a string.
$icon_class_string = join( ' ', $icon_classes );
/**
* Filters the arguments for a single nav menu item.
*
* WP 4.4.0
*
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
*/
$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
// Add .dropdown or .active classes where they are needed.
if ( isset( $args->has_children ) && $args->has_children ) {
$classes[] = 'dropdown';
}
if ( in_array( 'current-menu-item', $classes, true ) || in_array( 'current-menu-parent', $classes, true ) ) {
$classes[] = 'active';
}
// Add some additional default classes to the item.
$classes[] = 'menu-item-' . $item->ID;
$classes[] = 'nav-item';
// Allow filtering the classes.
$classes = apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth );
// Form a string of classes in format: class="class_names".
$class_names = join( ' ', $classes );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
/**
* Filters the ID applied to a menu item's list item element.
*
* @since WP 3.0.1
* @since WP 4.1.0 The `$depth` parameter was added.
*
* @param string $menu_id The ID that is applied to the menu item's `<li>` element.
* @param WP_Post $item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth );
$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '<li itemscope="itemscope" itemtype="https://www.schema.org/SiteNavigationElement"' . $id . $class_names . '>';
// initialize array for holding the $atts for the link item.
$atts = array();
// Set title from item to the $atts array - if title is empty then
// default to item title.
if ( empty( $item->attr_title ) ) {
$atts['title'] = ! empty( $item->title ) ? strip_tags( $item->title ) : '';
} else {
$atts['title'] = $item->attr_title;
}
$atts['target'] = ! empty( $item->target ) ? $item->target : '';
$atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
// If item has_children add atts to <a>.
if ( isset( $args->has_children ) && $args->has_children && 0 === $depth && $args->depth > 1 ) {
$atts['href'] = '#';
$atts['data-toggle'] = 'dropdown';
$atts['aria-haspopup'] = 'true';
$atts['aria-expanded'] = 'false';
$atts['class'] = 'dropdown-toggle nav-link';
$atts['id'] = 'menu-item-dropdown-' . $item->ID;
} else {
$atts['href'] = ! empty( $item->url ) ? $item->url : '#';
// Items in dropdowns use .dropdown-item instead of .nav-link.
if ( $depth > 0 ) {
$atts['class'] = 'dropdown-item';
} else {
$atts['class'] = 'nav-link';
}
}
// update atts of this item based on any custom linkmod classes.
$atts = self::update_atts_for_linkmod_type( $atts, $linkmod_classes );
// Allow filtering of the $atts array before using it.
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
// Build a string of html containing all the atts for the item.
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
/**
* Set a typeflag to easily test if this is a linkmod or not.
*/
$linkmod_type = self::get_linkmod_type( $linkmod_classes );
/**
* START appending the internal item contents to the output.
*/
$item_output = isset( $args->before ) ? $args->before : '';
/**
* This is the start of the internal nav item. Depending on what
* kind of linkmod we have we may need different wrapper elements.
*/
if ( '' !== $linkmod_type ) {
// is linkmod, output the required element opener.
$item_output .= self::linkmod_element_open( $linkmod_type, $attributes );
} else {
// With no link mod type set this must be a standard <a> tag.
$item_output .= '<a' . $attributes . '>';
}
/**
* Initiate empty icon var, then if we have a string containing any
* icon classes form the icon markup with an <i> element. This is
* output inside of the item before the $title (the link text).
*/
$icon_html = '';
if ( ! empty( $icon_class_string ) ) {
// append an <i> with the icon classes to what is output before links.
$icon_html = '<i class="' . esc_attr( $icon_class_string ) . '" aria-hidden="true"></i> ';
}
/** This filter is documented in wp-includes/post-template.php */
$title = apply_filters( 'the_title', $item->title, $item->ID );
/**
* Filters a menu item's title.
*
* @since WP 4.4.0
*
* @param string $title The menu item's title.
* @param WP_Post $item The current menu item.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
/**
* If the .sr-only class was set apply to the nav items text only.
*/
if ( in_array( 'sr-only', $linkmod_classes, true ) ) {
$title = self::wrap_for_screen_reader( $title );
$keys_to_unset = array_keys( $linkmod_classes, 'sr-only' );
foreach ( $keys_to_unset as $k ) {
unset( $linkmod_classes[ $k ] );
}
}
// Put the item contents into $output.
$item_output .= isset( $args->link_before ) ? $args->link_before . $icon_html . $title . $args->link_after : '';
/**
* This is the end of the internal nav item. We need to close the
* correct element depending on the type of link or link mod.
*/
if ( '' !== $linkmod_type ) {
// is linkmod, output the required element opener.
$item_output .= self::linkmod_element_close( $linkmod_type, $attributes );
} else {
// With no link mod type set this must be a standard <a> tag.
$item_output .= '</a>';
}
$item_output .= isset( $args->after ) ? $args->after : '';
/**
* END appending the internal item contents to the output.
*/
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
/**
* Traverse elements to create list from elements.
*
* Display one element if the element doesn't have any children otherwise,
* display the element and its children. Will only traverse up to the max
* depth and no ignore elements under that depth. It is possible to set the
* max depth to include all depths, see walk() method.
*
* This method should not be called directly, use the walk() method instead.
*
* @since WP 2.5.0
*
* @see Walker::start_lvl()
*
* @param object $element Data object.
* @param array $children_elements List of elements to continue traversing (passed by reference).
* @param int $max_depth Max depth to traverse.
* @param int $depth Depth of current element.
* @param array $args An array of arguments.
* @param string $output Used to append additional content (passed by reference).
*/
public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
if ( ! $element ) {
return; }
$id_field = $this->db_fields['id'];
// Display this element.
if ( is_object( $args[0] ) ) {
$args[0]->has_children = ! empty( $children_elements[ $element->$id_field ] ); }
parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
/**
* Menu Fallback
* =============
* If this function is assigned to the wp_nav_menu's fallback_cb variable
* and a menu has not been assigned to the theme location in the WordPress
* menu manager the function with display nothing to a non-logged in user,
* and will add a link to the WordPress menu manager if logged in as an admin.
*
* @param array $args passed from the wp_nav_menu function.
*/
public static function fallback( $args ) {
if ( current_user_can( 'edit_theme_options' ) ) {
/* Get Arguments. */
$container = $args['container'];
$container_id = $args['container_id'];
$container_class = $args['container_class'];
$menu_class = $args['menu_class'];
$menu_id = $args['menu_id'];
// initialize var to store fallback html.
$fallback_output = '';
if ( $container ) {
$fallback_output .= '<' . esc_attr( $container );
if ( $container_id ) {
$fallback_output .= ' id="' . esc_attr( $container_id ) . '"';
}
if ( $container_class ) {
$fallback_output .= ' class="' . esc_attr( $container_class ) . '"';
}
$fallback_output .= '>';
}
$fallback_output .= '<ul';
if ( $menu_id ) {
$fallback_output .= ' id="' . esc_attr( $menu_id ) . '"'; }
if ( $menu_class ) {
$fallback_output .= ' class="' . esc_attr( $menu_class ) . '"'; }
$fallback_output .= '>';
$fallback_output .= '<li><a href="' . esc_url( admin_url( 'nav-menus.php' ) ) . '" title="' . esc_attr__( 'Add a menu', 'understrap' ) . '">' . esc_html__( 'Add a menu', 'understrap' ) . '</a></li>';
$fallback_output .= '</ul>';
if ( $container ) {
$fallback_output .= '</' . esc_attr( $container ) . '>';
}
// if $args has 'echo' key and it's true echo, otherwise return.
if ( array_key_exists( 'echo', $args ) && $args['echo'] ) {
echo $fallback_output; // WPCS: XSS OK.
} else {
return $fallback_output;
}
}
}
/**
* Find any custom linkmod or icon classes and store in their holder
* arrays then remove them from the main classes array.
*
* Supported linkmods: .disabled, .dropdown-header, .dropdown-divider, .sr-only
* Supported iconsets: Font Awesome 4/5, Glypicons
*
* NOTE: This accepts the linkmod and icon arrays by reference.
*
* @since 4.0.0
*
* @param array $classes an array of classes currently assigned to the item.
* @param array $linkmod_classes an array to hold linkmod classes.
* @param array $icon_classes an array to hold icon classes.
* @param integer $depth an integer holding current depth level.
*
* @return array $classes a maybe modified array of classnames.
*/
private function seporate_linkmods_and_icons_from_classes( $classes, &$linkmod_classes, &$icon_classes, $depth ) {
// Loop through $classes array to find linkmod or icon classes.
foreach ( $classes as $key => $class ) {
// If any special classes are found, store the class in it's
// holder array and and unset the item from $classes.
if ( preg_match( '/^disabled|^sr-only/i', $class ) ) {
// Test for .disabled or .sr-only classes.
$linkmod_classes[] = $class;
unset( $classes[ $key ] );
} elseif ( preg_match( '/^dropdown-header|^dropdown-divider|^dropdown-item-text/i', $class ) && $depth > 0 ) {
// Test for .dropdown-header or .dropdown-divider and a
// depth greater than 0 - IE inside a dropdown.
$linkmod_classes[] = $class;
unset( $classes[ $key ] );
} elseif ( preg_match( '/^fa-(\S*)?|^fa(s|r|l|b)?(\s?)?$/i', $class ) ) {
// Font Awesome.
$icon_classes[] = $class;
unset( $classes[ $key ] );
} elseif ( preg_match( '/^glyphicon-(\S*)?|^glyphicon(\s?)$/i', $class ) ) {
// Glyphicons.
$icon_classes[] = $class;
unset( $classes[ $key ] );
}
}
return $classes;
}
/**
* Return a string containing a linkmod type and update $atts array
* accordingly depending on the decided.
*
* @since 4.0.0
*
* @param array $linkmod_classes array of any link modifier classes.
*
* @return string empty for default, a linkmod type string otherwise.
*/
private function get_linkmod_type( $linkmod_classes = array() ) {
$linkmod_type = '';
// Loop through array of linkmod classes to handle their $atts.
if ( ! empty( $linkmod_classes ) ) {
foreach ( $linkmod_classes as $link_class ) {
if ( ! empty( $link_class ) ) {
// check for special class types and set a flag for them.
if ( 'dropdown-header' === $link_class ) {
$linkmod_type = 'dropdown-header';
} elseif ( 'dropdown-divider' === $link_class ) {
$linkmod_type = 'dropdown-divider';
} elseif ( 'dropdown-item-text' === $link_class ) {
$linkmod_type = 'dropdown-item-text';
}
}
}
}
return $linkmod_type;
}
/**
* Update the attributes of a nav item depending on the limkmod classes.
*
* @since 4.0.0
*
* @param array $atts array of atts for the current link in nav item.
* @param array $linkmod_classes an array of classes that modify link or nav item behaviors or displays.
*
* @return array maybe updated array of attributes for item.
*/
private function update_atts_for_linkmod_type( $atts = array(), $linkmod_classes = array() ) {
if ( ! empty( $linkmod_classes ) ) {
foreach ( $linkmod_classes as $link_class ) {
if ( ! empty( $link_class ) ) {
// update $atts with a space and the extra classname...
// so long as it's not a sr-only class.
if ( 'sr-only' !== $link_class ) {
$atts['class'] .= ' ' . esc_attr( $link_class );
}
// check for special class types we need additional handling for.
if ( 'disabled' === $link_class ) {
// Convert link to '#' and unset open targets.
$atts['href'] = '#';
unset( $atts['target'] );
} elseif ( 'dropdown-header' === $link_class || 'dropdown-divider' === $link_class || 'dropdown-item-text' === $link_class ) {
// Store a type flag and unset href and target.
unset( $atts['href'] );
unset( $atts['target'] );
}
}
}
}
return $atts;
}
/**
* Wraps the passed text in a screen reader only class.
*
* @since 4.0.0
*
* @param string $text the string of text to be wrapped in a screen reader class.
* @return string the string wrapped in a span with the class.
*/
private function wrap_for_screen_reader( $text = '' ) {
if ( $text ) {
$text = '<span class="sr-only">' . $text . '</span>';
}
return $text;
}
/**
* Returns the correct opening element and attributes for a linkmod.
*
* @since 4.0.0
*
* @param string $linkmod_type a sting containing a linkmod type flag.
* @param string $attributes a string of attributes to add to the element.
*
* @return string a string with the openign tag for the element with attribibutes added.
*/
private function linkmod_element_open( $linkmod_type, $attributes = '' ) {
$output = '';
if ( 'dropdown-item-text' === $linkmod_type ) {
$output .= '<span class="dropdown-item-text"' . $attributes . '>';
} elseif ( 'dropdown-header' === $linkmod_type ) {
// For a header use a span with the .h6 class instead of a real
// header tag so that it doesn't confuse screen readers.
$output .= '<span class="dropdown-header h6"' . $attributes . '>';
} elseif ( 'dropdown-divider' === $linkmod_type ) {
// this is a divider.
$output .= '<div class="dropdown-divider"' . $attributes . '>';
}
return $output;
}
/**
* Return the correct closing tag for the linkmod element.
*
* @since 4.0.0
*
* @param string $linkmod_type a string containing a special linkmod type.
*
* @return string a string with the closing tag for this linkmod type.
*/
private function linkmod_element_close( $linkmod_type ) {
$output = '';
if ( 'dropdown-header' === $linkmod_type || 'dropdown-item-text' === $linkmod_type ) {
// For a header use a span with the .h6 class instead of a real
// header tag so that it doesn't confuse screen readers.
$output .= '</span>';
} elseif ( 'dropdown-divider' === $linkmod_type ) {
// this is a divider.
$output .= '</div>';
}
return $output;
}
}
}

View File

@ -23,16 +23,19 @@ if ( ! function_exists( 'understrap_bootstrap_comment_form_fields' ) ) {
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$html5 = current_theme_supports( 'html5', 'comment-form' ) ? 1 : 0;
$consent = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';
$fields = array(
'author' => '<div class="form-group comment-form-author"><label for="author">' . __( 'Name',
'author' => '<div class="form-group comment-form-author"><label for="author">' . __( 'Name',
'understrap' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
'<input class="form-control" id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . '></div>',
'email' => '<div class="form-group comment-form-email"><label for="email">' . __( 'Email',
'email' => '<div class="form-group comment-form-email"><label for="email">' . __( 'Email',
'understrap' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
'<input class="form-control" id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . '></div>',
'url' => '<div class="form-group comment-form-url"><label for="url">' . __( 'Website',
'url' => '<div class="form-group comment-form-url"><label for="url">' . __( 'Website',
'understrap' ) . '</label> ' .
'<input class="form-control" id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30"></div>',
'cookies' => '<div class="form-group form-check comment-form-cookies-consent"><input class="form-check-input" id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' /> ' .
'<label class="form-check-label" for="wp-comment-cookies-consent">' . __( 'Save my name, email, and website in this browser for the next time I comment.' ) . '</label></div>',
);
return $fields;

View File

@ -5,38 +5,41 @@
* @package understrap
*/
function understrap_custom_header_setup() {
/**
* Filter UnderStrap custom-header support arguments.
*
* @since UnderStrap 0.5.2
*
* @param array $args {
* An array of custom-header support arguments.
*
* @type string $default-image Default image of the header.
* @type string $default_text_color Default color of the header text.
* @type int $width Width in pixels of the custom header image. Default 954.
* @type int $height Height in pixels of the custom header image. Default 1300.
* @type string $wp-head-callback Callback function used to styles the header image and text
* displayed on the blog.
* @type string $flex-height Flex support for height of header.
* }
*/
add_theme_support( 'custom-header', apply_filters( 'understrap_custom_header_args', array(
'default-image' => get_parent_theme_file_uri( '/img/header.jpg' ),
'width' => 2000,
'height' => 1200,
'flex-height' => true,
) ) );
register_default_headers( array(
'default-image' => array(
'url' => '%s/img/header.jpg',
'thumbnail_url' => '%s/img/header.jpg',
'description' => __( 'Default Header Image', 'understrap' ),
),
) );
}
add_action( 'after_setup_theme', 'understrap_custom_header_setup' );
if ( ! function_exists ( 'understrap_custom_header_setup' ) ) {
function understrap_custom_header_setup() {
/**
* Filter UnderStrap custom-header support arguments.
*
* @since UnderStrap 0.5.2
*
* @param array $args {
* An array of custom-header support arguments.
*
* @type string $default-image Default image of the header.
* @type string $default_text_color Default color of the header text.
* @type int $width Width in pixels of the custom header image. Default 954.
* @type int $height Height in pixels of the custom header image. Default 1300.
* @type string $wp-head-callback Callback function used to styles the header image and text
* displayed on the blog.
* @type string $flex-height Flex support for height of header.
* }
*/
add_theme_support( 'custom-header', apply_filters( 'understrap_custom_header_args', array(
'default-image' => get_parent_theme_file_uri( '/img/header.jpg' ),
'width' => 2000,
'height' => 1200,
'flex-height' => true,
) ) );
register_default_headers( array(
'default-image' => array(
'url' => '%s/img/header.jpg',
'thumbnail_url' => '%s/img/header.jpg',
'description' => __( 'Default Header Image', 'understrap' ),
),
) );
}
}

View File

@ -8,58 +8,67 @@
/**
* Registers an editor stylesheet for the theme.
*/
function understrap_wpdocs_theme_add_editor_styles() {
add_editor_style( 'css/custom-editor-style.min.css' );
}
add_action( 'admin_init', 'understrap_wpdocs_theme_add_editor_styles' );
if ( ! function_exists ( 'understrap_wpdocs_theme_add_editor_styles' ) ) {
function understrap_wpdocs_theme_add_editor_styles() {
add_editor_style( 'css/custom-editor-style.min.css' );
}
}
// Add TinyMCE style formats.
add_filter( 'mce_buttons_2', 'understrap_tiny_mce_style_formats' );
function understrap_tiny_mce_style_formats( $styles ) {
if ( ! function_exists ( 'understrap_tiny_mce_style_formats' ) ) {
function understrap_tiny_mce_style_formats( $styles ) {
array_unshift( $styles, 'styleselect' );
return $styles;
array_unshift( $styles, 'styleselect' );
return $styles;
}
}
add_filter( 'tiny_mce_before_init', 'understrap_tiny_mce_before_init' );
function understrap_tiny_mce_before_init( $settings ) {
if ( ! function_exists ( 'understrap_tiny_mce_before_init' ) ) {
function understrap_tiny_mce_before_init( $settings ) {
$style_formats = array(
array(
'title' => 'Lead Paragraph',
'selector' => 'p',
'classes' => 'lead',
'wrapper' => true
),
array(
'title' => 'Small',
'inline' => 'small'
),
array(
'title' => 'Blockquote',
'block' => 'blockquote',
'classes' => 'blockquote',
'wrapper' => true
),
array(
'title' => 'Blockquote Footer',
'block' => 'footer',
'classes' => 'blockquote-footer',
'wrapper' => true
),
array(
'title' => 'Cite',
'inline' => 'cite'
)
);
$style_formats = array(
array(
'title' => 'Lead Paragraph',
'selector' => 'p',
'classes' => 'lead',
'wrapper' => true
),
array(
'title' => 'Small',
'inline' => 'small'
),
array(
'title' => 'Blockquote',
'block' => 'blockquote',
'classes' => 'blockquote',
'wrapper' => true
),
array(
'title' => 'Blockquote Footer',
'block' => 'footer',
'classes' => 'blockquote-footer',
'wrapper' => true
),
array(
'title' => 'Cite',
'inline' => 'cite'
)
);
if ( isset( $settings['style_formats'] ) ) {
$orig_style_formats = json_decode($settings['style_formats'],true);
$style_formats = array_merge($orig_style_formats,$style_formats);
}
if ( isset( $settings['style_formats'] ) ) {
$orig_style_formats = json_decode($settings['style_formats'],true);
$style_formats = array_merge($orig_style_formats,$style_formats);
}
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
$settings['style_formats'] = json_encode( $style_formats );
return $settings;
}
}

View File

@ -5,17 +5,35 @@
* @package understrap
*/
/**
* @param string $filename
* @return string
*/
function asset_path($filename) {
$manifest_path = get_stylesheet_directory_uri() .'/rev-manifest.json';
if ( file_exists($manifest_path ) ) {
$manifest = json_decode( file_get_contents( $manifest_path ), TRUE );
} else {
$manifest = [];
}
if ( array_key_exists( $filename, $manifest ) ) {
return $manifest[$filename];
}
return $filename;
}
if ( ! function_exists( 'understrap_scripts' ) ) {
/**
* Load theme's JavaScript sources.
* Load theme's JavaScript and CSS sources.
*/
function understrap_scripts() {
// Get the theme data.
$the_theme = wp_get_theme();
wp_enqueue_style( 'understrap-styles', get_stylesheet_directory_uri() . '/css/theme.min.css', array(), $the_theme->get( 'Version' ) );
wp_enqueue_style( 'understrap-styles', get_stylesheet_directory_uri() . '/'. asset_path('css/theme.min.css'), array(), null);
wp_enqueue_script( 'jquery');
wp_enqueue_script( 'popper-scripts', get_template_directory_uri() . '/js/popper.min.js', array(), true);
wp_enqueue_script( 'understrap-scripts', get_template_directory_uri() . '/js/theme.min.js', array(), $the_theme->get( 'Version' ), true );
wp_enqueue_script( 'popper-scripts', get_template_directory_uri() . '/js/popper.min.js', array(), false, true);
wp_enqueue_script( 'understrap-scripts', get_template_directory_uri() . '/' . asset_path('js/theme.min.js'), array(), null, true );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}

View File

@ -7,6 +7,8 @@
* @package understrap
*/
add_filter( 'body_class', 'understrap_body_classes' );
if ( ! function_exists( 'understrap_body_classes' ) ) {
/**
* Adds custom classes to the array of body classes.
@ -28,7 +30,6 @@ if ( ! function_exists( 'understrap_body_classes' ) ) {
return $classes;
}
}
add_filter( 'body_class', 'understrap_body_classes' );
// Removes tag class from the body_class array to avoid Bootstrap markup styling issues.
add_filter( 'body_class', 'understrap_adjust_body_class' );
@ -78,8 +79,8 @@ if ( ! function_exists( 'understrap_change_logo_class' ) ) {
/**
* Display navigation to next/previous post when applicable.
*/
if ( ! function_exists( 'understrap_post_nav' ) ) :
if ( ! function_exists ( 'understrap_post_nav' ) ) {
function understrap_post_nav() {
// Don't print empty markup if there's nowhere to navigate.
$previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true );
@ -106,4 +107,4 @@ if ( ! function_exists( 'understrap_post_nav' ) ) :
<?php
}
endif;
}

View File

@ -13,41 +13,51 @@
* See: https://jetpack.me/support/infinite-scroll/
* See: https://jetpack.me/support/responsive-videos/
*/
function understrap_components_jetpack_setup() {
// Add theme support for Infinite Scroll.
add_theme_support( 'infinite-scroll', array(
'container' => 'main',
'render' => 'components_infinite_scroll_render',
'footer' => 'page',
) );
// Add theme support for Responsive Videos.
add_theme_support( 'jetpack-responsive-videos' );
// Add theme support for Social Menus
add_theme_support( 'jetpack-social-menu' );
}
add_action( 'after_setup_theme', 'understrap_components_jetpack_setup' );
if ( ! function_exists ( 'understrap_components_jetpack_setup' ) ) {
function understrap_components_jetpack_setup() {
// Add theme support for Infinite Scroll.
add_theme_support( 'infinite-scroll', array(
'container' => 'main',
'render' => 'components_infinite_scroll_render',
'footer' => 'page',
) );
// Add theme support for Responsive Videos.
add_theme_support( 'jetpack-responsive-videos' );
// Add theme support for Social Menus
add_theme_support( 'jetpack-social-menu' );
}
}
/**
* Custom render function for Infinite Scroll.
*/
function understrap_components_infinite_scroll_render() {
while ( have_posts() ) {
the_post();
if ( is_search() ) :
get_template_part( 'loop-templates/content', 'search' );
else :
get_template_part( 'loop-templates/content', get_post_format() );
endif;
if ( ! function_exists ( 'understrap_components_infinite_scroll_render' ) ) {
function understrap_components_infinite_scroll_render() {
while ( have_posts() ) {
the_post();
if ( is_search() ) :
get_template_part( 'loop-templates/content', 'search' );
else :
get_template_part( 'loop-templates/content', get_post_format() );
endif;
}
}
}
function understrap_components_social_menu() {
if ( ! function_exists( 'jetpack_social_menu' ) ) {
return;
} else {
jetpack_social_menu();
if ( ! function_exists ( 'understrap_components_social_menu' ) ) {
function understrap_components_social_menu() {
if ( ! function_exists( 'jetpack_social_menu' ) ) {
return;
} else {
jetpack_social_menu();
}
}
}

View File

@ -5,54 +5,48 @@
* @package understrap
*/
if ( ! function_exists( 'understrap_pagination' ) ) :
function understrap_pagination($args = [], $class = 'pagination') {
if ( ! function_exists ( 'understrap_pagination' ) ) {
if ($GLOBALS['wp_query']->max_num_pages <= 1) return;
function understrap_pagination($args = [], $class = 'pagination') {
$args = wp_parse_args( $args, [
'mid_size' => 2,
'prev_next' => false,
'prev_text' => __('&laquo;', 'understrap'),
'next_text' => __('&raquo;', 'understrap'),
'screen_reader_text' => __('Posts navigation', 'understrap'),
'type' => 'array',
'current' => max( 1, get_query_var('paged') ),
]);
if ($GLOBALS['wp_query']->max_num_pages <= 1) return;
$links = paginate_links($args);
$next_link = get_next_posts_page_link();
$prev_link = get_previous_posts_page_link();
$args = wp_parse_args( $args, [
'mid_size' => 2,
'prev_next' => true,
'prev_text' => __('&laquo;', 'understrap'),
'next_text' => __('&raquo;', 'understrap'),
'screen_reader_text' => __('Posts navigation', 'understrap'),
'type' => 'array',
'current' => max( 1, get_query_var('paged') ),
]);
?>
$links = paginate_links($args);
<nav aria-label="<?php echo $args['screen_reader_text']; ?>">
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="<?php echo esc_attr($prev_link); ?>" aria-label="<?php echo __('Previous', 'understrap'); ?>">
<span aria-hidden="true"><?php echo esc_attr($args['prev_text']); ?></span>
<span class="sr-only"><?php echo __('Previous', 'understrap'); ?></span>
</a>
</li>
?>
<?php
$i = 1;
foreach ( $links as $link ) { ?>
<li class="page-item <?php if ($i == $args['current']) { echo active; }; ?>">
<?php echo str_replace( 'page-numbers', 'page-link', $link ); ?>
</li>
<nav aria-label="<?php echo $args['screen_reader_text']; ?>">
<?php $i++;} ?>
<ul class="pagination">
<?php
foreach ( $links as $key => $link ) { ?>
<li class="page-item <?php echo strpos( $link, 'current' ) ? 'active' : '' ?>">
<?php echo str_replace( 'page-numbers', 'page-link', $link ); ?>
</li>
<?php } ?>
</ul>
</nav>
<?php
}
}
<li class="page-item">
<a class="page-link" href="<?php echo esc_attr($next_link); ?>" aria-label="<?php echo __('Next', 'understrap'); ?>">
<span aria-hidden="true"><?php echo esc_attr($args['next_text']); ?></span>
<span class="sr-only"><?php echo __('Next', 'understrap'); ?></span>
</a>
</li>
</ul>
</nav>
<?php
}
endif;
?>

View File

@ -11,7 +11,9 @@ if ( ! isset( $content_width ) ) {
$content_width = 640; /* pixels */
}
if ( ! function_exists( 'understrap_setup' ) ) :
add_action( 'after_setup_theme', 'understrap_setup' );
if ( ! function_exists ( 'understrap_setup' ) ) {
/**
* Sets up theme defaults and registers support for various WordPress features.
*
@ -91,8 +93,10 @@ if ( ! function_exists( 'understrap_setup' ) ) :
understrap_setup_theme_default_settings();
}
endif; // understrap_setup.
add_action( 'after_setup_theme', 'understrap_setup' );
}
add_filter( 'excerpt_more', 'understrap_custom_excerpt_more' );
if ( ! function_exists( 'understrap_custom_excerpt_more' ) ) {
/**
@ -106,7 +110,8 @@ if ( ! function_exists( 'understrap_custom_excerpt_more' ) ) {
return '';
}
}
add_filter( 'excerpt_more', 'understrap_custom_excerpt_more' );
add_filter( 'wp_trim_excerpt', 'understrap_all_excerpts_get_more_link' );
if ( ! function_exists( 'understrap_all_excerpts_get_more_link' ) ) {
/**
@ -122,4 +127,3 @@ if ( ! function_exists( 'understrap_all_excerpts_get_more_link' ) ) {
'understrap' ) . '</a></p>';
}
}
add_filter( 'wp_trim_excerpt', 'understrap_all_excerpts_get_more_link' );

View File

@ -7,105 +7,113 @@
* @package understrap
*/
if ( ! function_exists( 'understrap_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
function understrap_posted_on() {
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s"> (%4$s) </time>';
if ( ! function_exists ( 'understrap_posted_on' ) ) {
function understrap_posted_on() {
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s"> (%4$s) </time>';
}
$time_string = sprintf( $time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() )
);
$posted_on = sprintf(
esc_html_x( 'Posted on %s', 'post date', 'understrap' ),
'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
);
$byline = sprintf(
esc_html_x( 'by %s', 'post author', 'understrap' ),
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>'
);
echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>'; // WPCS: XSS OK.
}
$time_string = sprintf( $time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() )
);
$posted_on = sprintf(
esc_html_x( 'Posted on %s', 'post date', 'understrap' ),
'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
);
$byline = sprintf(
esc_html_x( 'by %s', 'post author', 'understrap' ),
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>'
);
echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>'; // WPCS: XSS OK.
}
endif;
if ( ! function_exists( 'understrap_entry_footer' ) ) :
/**
* Prints HTML with meta information for the categories, tags and comments.
*/
function understrap_entry_footer() {
// Hide category and tag text for pages.
if ( 'post' === get_post_type() ) {
/* translators: used between list items, there is a space after the comma */
$categories_list = get_the_category_list( esc_html__( ', ', 'understrap' ) );
if ( $categories_list && understrap_categorized_blog() ) {
printf( '<span class="cat-links">' . esc_html__( 'Posted in %1$s', 'understrap' ) . '</span>', $categories_list ); // WPCS: XSS OK.
if ( ! function_exists ( 'understrap_entry_footer' ) ) {
function understrap_entry_footer() {
// Hide category and tag text for pages.
if ( 'post' === get_post_type() ) {
/* translators: used between list items, there is a space after the comma */
$categories_list = get_the_category_list( esc_html__( ', ', 'understrap' ) );
if ( $categories_list && understrap_categorized_blog() ) {
printf( '<span class="cat-links">' . esc_html__( 'Posted in %1$s', 'understrap' ) . '</span>', $categories_list ); // WPCS: XSS OK.
}
/* translators: used between list items, there is a space after the comma */
$tags_list = get_the_tag_list( '', esc_html__( ', ', 'understrap' ) );
if ( $tags_list ) {
printf( '<span class="tags-links">' . esc_html__( 'Tagged %1$s', 'understrap' ) . '</span>', $tags_list ); // WPCS: XSS OK.
}
}
/* translators: used between list items, there is a space after the comma */
$tags_list = get_the_tag_list( '', esc_html__( ', ', 'understrap' ) );
if ( $tags_list ) {
printf( '<span class="tags-links">' . esc_html__( 'Tagged %1$s', 'understrap' ) . '</span>', $tags_list ); // WPCS: XSS OK.
if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
comments_popup_link( esc_html__( 'Leave a comment', 'understrap' ), esc_html__( '1 Comment', 'understrap' ), esc_html__( '% Comments', 'understrap' ) );
echo '</span>';
}
edit_post_link(
sprintf(
/* translators: %s: Name of current post */
esc_html__( 'Edit %s', 'understrap' ),
the_title( '<span class="screen-reader-text">"', '"</span>', false )
),
'<span class="edit-link">',
'</span>'
);
}
if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
echo '<span class="comments-link">';
comments_popup_link( esc_html__( 'Leave a comment', 'understrap' ), esc_html__( '1 Comment', 'understrap' ), esc_html__( '% Comments', 'understrap' ) );
echo '</span>';
}
edit_post_link(
sprintf(
/* translators: %s: Name of current post */
esc_html__( 'Edit %s', 'understrap' ),
the_title( '<span class="screen-reader-text">"', '"</span>', false )
),
'<span class="edit-link">',
'</span>'
);
}
endif;
/**
* Returns true if a blog has more than 1 category.
*
* @return bool
*/
function understrap_categorized_blog() {
if ( false === ( $all_the_cool_cats = get_transient( 'understrap_categories' ) ) ) {
// Create an array of all the categories that are attached to posts.
$all_the_cool_cats = get_categories( array(
'fields' => 'ids',
'hide_empty' => 1,
// We only need to know if there is more than one category.
'number' => 2,
) );
// Count the number of categories that are attached to the posts.
$all_the_cool_cats = count( $all_the_cool_cats );
set_transient( 'understrap_categories', $all_the_cool_cats );
}
if ( $all_the_cool_cats > 1 ) {
// This blog has more than 1 category so components_categorized_blog should return true.
return true;
} else {
// This blog has only 1 category so components_categorized_blog should return false.
return false;
if ( ! function_exists ( 'understrap_categorized_blog' ) ) {
function understrap_categorized_blog() {
if ( false === ( $all_the_cool_cats = get_transient( 'understrap_categories' ) ) ) {
// Create an array of all the categories that are attached to posts.
$all_the_cool_cats = get_categories( array(
'fields' => 'ids',
'hide_empty' => 1,
// We only need to know if there is more than one category.
'number' => 2,
) );
// Count the number of categories that are attached to the posts.
$all_the_cool_cats = count( $all_the_cool_cats );
set_transient( 'understrap_categories', $all_the_cool_cats );
}
if ( $all_the_cool_cats > 1 ) {
// This blog has more than 1 category so components_categorized_blog should return true.
return true;
} else {
// This blog has only 1 category so components_categorized_blog should return false.
return false;
}
}
}
/**
* Flush out the transients used in understrap_categorized_blog.
*/
function understrap_category_transient_flusher() {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Like, beat it. Dig?
delete_transient( 'understrap_categories' );
}
add_action( 'edit_category', 'understrap_category_transient_flusher' );
add_action( 'save_post', 'understrap_category_transient_flusher' );
if ( ! function_exists ( 'understrap_category_transient_flusher' ) ) {
function understrap_category_transient_flusher() {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Like, beat it. Dig?
delete_transient( 'understrap_categories' );
}
}

View File

@ -6,7 +6,7 @@
*
*/
if ( ! function_exists( 'understrap_setup_theme_default_settings' ) ) :
if ( ! function_exists ( 'understrap_setup_theme_default_settings' ) ) {
function understrap_setup_theme_default_settings() {
// check if settings are set, if not set defaults.
@ -29,4 +29,4 @@ if ( ! function_exists( 'understrap_setup_theme_default_settings' ) ) :
set_theme_mod( 'understrap_container_type', 'container' );
}
}
endif;
}

View File

@ -44,6 +44,8 @@ if ( ! function_exists( 'understrap_slbd_count_widgets' ) ) {
}
}
add_action( 'widgets_init', 'understrap_widgets_init' );
if ( ! function_exists( 'understrap_widgets_init' ) ) {
/**
* Initializes themes widgets.
@ -80,9 +82,19 @@ if ( ! function_exists( 'understrap_widgets_init' ) ) {
) );
register_sidebar( array(
'name' => __( 'Hero Static', 'understrap' ),
'name' => __( 'Hero Canvas', 'understrap' ),
'id' => 'herocanvas',
'description' => 'Full size canvas hero area for Bootstrap and other custom HTML markup',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
) );
register_sidebar( array(
'name' => __( 'Top Full', 'understrap' ),
'id' => 'statichero',
'description' => 'Static Hero widget. no slider functionallity',
'description' => 'Full top widget with dynmic grid',
'before_widget' => '<div id="%1$s" class="static-hero-widget %2$s '. understrap_slbd_count_widgets( 'statichero' ) .'">',
'after_widget' => '</div><!-- .static-hero-widget -->',
'before_title' => '<h3 class="widget-title">',
@ -90,9 +102,9 @@ if ( ! function_exists( 'understrap_widgets_init' ) ) {
) );
register_sidebar( array(
'name' => __( 'Footer Full', 'understrap' ),
'name' => __( 'Bottom Full', 'understrap' ),
'id' => 'footerfull',
'description' => 'Widget area below main content and above footer',
'description' => 'Full bottom widget with dynmic grid',
'before_widget' => '<div id="%1$s" class="footer-widget %2$s '. understrap_slbd_count_widgets( 'footerfull' ) .'">',
'after_widget' => '</div><!-- .footer-widget -->',
'before_title' => '<h3 class="widget-title">',
@ -101,5 +113,3 @@ if ( ! function_exists( 'understrap_widgets_init' ) ) {
}
} // endif function_exists( 'understrap_widgets_init' ).
add_action( 'widgets_init', 'understrap_widgets_init' );

View File

@ -4,6 +4,8 @@
*
* @package understrap
*/
add_action( 'after_setup_theme', 'understrap_woocommerce_support' );
if ( ! function_exists( 'understrap_woocommerce_support' ) ) {
/**
@ -22,6 +24,7 @@ if ( ! function_exists( 'understrap_woocommerce_support' ) ) {
}
}
/**
* First unhook the WooCommerce wrappers
*/
@ -46,7 +49,6 @@ if ( ! function_exists( 'understrap_woocommerce_wrapper_start' ) ) {
if ( ! function_exists( 'understrap_woocommerce_wrapper_end' ) ) {
function understrap_woocommerce_wrapper_end() {
echo '</main><!-- #main -->';
echo '</div><!-- #primary -->';
get_template_part( 'global-templates/right-sidebar-check' );
echo '</div><!-- .row -->';
echo '</div><!-- Container end -->';
@ -54,6 +56,7 @@ function understrap_woocommerce_wrapper_end() {
}
}
/**
* Filter hook function monkey patching form classes
* Author: Adriano Monecchi http://stackoverflow.com/a/36724593/307826
@ -64,72 +67,74 @@ function understrap_woocommerce_wrapper_end() {
*
* @return mixed
*/
function understrap_wc_form_field_args( $args, $key, $value = null ) {
// Start field type switch case.
switch ( $args['type'] ) {
/* Targets all select input type elements, except the country and state select input types */
case 'select' :
// Add a class to the field's html element wrapper - woocommerce
// input types (fields) are often wrapped within a <p></p> tag.
$args['class'][] = 'form-group';
// Add a class to the form input itself.
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
$args['custom_attributes'] = array(
'data-plugin' => 'select2',
'data-allow-clear' => 'true',
'aria-hidden' => 'true',
// Add custom data attributes to the form input itself.
);
break;
// By default WooCommerce will populate a select with the country names - $args
// defined for this specific input type targets only the country select element.
case 'country' :
$args['class'][] = 'form-group single-country';
$args['label_class'] = array( 'control-label' );
break;
// By default WooCommerce will populate a select with state names - $args defined
// for this specific input type targets only the country select element.
case 'state' :
// Add class to the field's html element wrapper.
$args['class'][] = 'form-group';
// add class to the form input itself.
$args['input_class'] = array( '', 'input-lg' );
$args['label_class'] = array( 'control-label' );
$args['custom_attributes'] = array(
'data-plugin' => 'select2',
'data-allow-clear' => 'true',
'aria-hidden' => 'true',
);
break;
case 'password' :
case 'text' :
case 'email' :
case 'tel' :
case 'number' :
$args['class'][] = 'form-group';
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
case 'textarea' :
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
case 'checkbox' :
$args['label_class'] = array( 'custom-control custom-checkbox' );
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
break;
case 'radio' :
$args['label_class'] = array( 'custom-control custom-radio' );
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
break;
default :
$args['class'][] = 'form-group';
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
} // end switch ($args).
return $args;
if ( ! function_exists ( 'understrap_wc_form_field_args' ) ) {
function understrap_wc_form_field_args( $args, $key, $value = null ) {
// Start field type switch case.
switch ( $args['type'] ) {
/* Targets all select input type elements, except the country and state select input types */
case 'select' :
// Add a class to the field's html element wrapper - woocommerce
// input types (fields) are often wrapped within a <p></p> tag.
$args['class'][] = 'form-group';
// Add a class to the form input itself.
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
$args['custom_attributes'] = array(
'data-plugin' => 'select2',
'data-allow-clear' => 'true',
'aria-hidden' => 'true',
// Add custom data attributes to the form input itself.
);
break;
// By default WooCommerce will populate a select with the country names - $args
// defined for this specific input type targets only the country select element.
case 'country' :
$args['class'][] = 'form-group single-country';
$args['label_class'] = array( 'control-label' );
break;
// By default WooCommerce will populate a select with state names - $args defined
// for this specific input type targets only the country select element.
case 'state' :
// Add class to the field's html element wrapper.
$args['class'][] = 'form-group';
// add class to the form input itself.
$args['input_class'] = array( '', 'input-lg' );
$args['label_class'] = array( 'control-label' );
$args['custom_attributes'] = array(
'data-plugin' => 'select2',
'data-allow-clear' => 'true',
'aria-hidden' => 'true',
);
break;
case 'password' :
case 'text' :
case 'email' :
case 'tel' :
case 'number' :
$args['class'][] = 'form-group';
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
case 'textarea' :
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
case 'checkbox' :
$args['label_class'] = array( 'custom-control custom-checkbox' );
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
break;
case 'radio' :
$args['label_class'] = array( 'custom-control custom-radio' );
$args['input_class'] = array( 'custom-control-input', 'input-lg' );
break;
default :
$args['class'][] = 'form-group';
$args['input_class'] = array( 'form-control', 'input-lg' );
$args['label_class'] = array( 'control-label' );
break;
} // end switch ($args).
return $args;
}
}
@ -137,7 +142,10 @@ function understrap_wc_form_field_args( $args, $key, $value = null ) {
* Change loop add-to-cart button class to Bootstrap
*/
add_filter( 'woocommerce_loop_add_to_cart_args', 'understrap_woocommerce_add_to_cart_args', 10, 2 );
function understrap_woocommerce_add_to_cart_args( $args, $product ) {
$args['class'] = str_replace('button','btn btn-outline-primary', 'button');
return $args;
if ( ! function_exists ( 'understrap_woocommerce_add_to_cart_args' ) ) {
function understrap_woocommerce_add_to_cart_args( $args, $product ) {
$args['class'] = str_replace('button','btn btn-outline-primary', 'button');
return $args;
}
}

View File

@ -12,29 +12,36 @@
*
* @global array $themecolors
*/
function understrap_wpcom_setup() {
global $themecolors;
// Set theme colors for third party services.
if ( ! isset( $themecolors ) ) {
$themecolors = array(
'bg' => '',
'border' => '',
'text' => '',
'link' => '',
'url' => '',
);
}
/* Add WP.com print styles */
add_theme_support( 'print-styles' );
}
add_action( 'after_setup_theme', 'understrap_wpcom_setup' );
if ( ! function_exists ( 'understrap_wpcom_setup' ) ) {
function understrap_wpcom_setup() {
global $themecolors;
// Set theme colors for third party services.
if ( ! isset( $themecolors ) ) {
$themecolors = array(
'bg' => '',
'border' => '',
'text' => '',
'link' => '',
'url' => '',
);
}
/* Add WP.com print styles */
add_theme_support( 'print-styles' );
}
}
/*
* WordPress.com-specific styles
*/
function understrap_wpcom_styles() {
wp_enqueue_style( 'understrap-wpcom', get_template_directory_uri() . '/inc/style-wpcom.css', '20160411' );
}
add_action( 'wp_enqueue_scripts', 'understrap_wpcom_styles' );
if ( ! function_exists ( 'understrap_wpcom_styles' ) ) {
function understrap_wpcom_styles() {
wp_enqueue_style( 'understrap-wpcom', get_template_directory_uri() . '/inc/style-wpcom.css', '20160411' );
}
}

View File

@ -60,8 +60,6 @@ $container = get_theme_mod( 'understrap_container_type' );
<!-- The pagination component -->
<?php understrap_pagination(); ?>
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

View File

@ -1,112 +0,0 @@
/**
* File navigation.js.
*
* Handles toggling the navigation menu for small screens and enables TAB key
* navigation support for dropdown menus.
*/
( function() {
var container, button, menu, links, subMenus, i, len;
container = document.getElementById( 'site-navigation' );
if ( ! container ) {
return;
}
button = container.getElementsByTagName( 'button' )[0];
if ( 'undefined' === typeof button ) {
return;
}
menu = container.getElementsByTagName( 'ul' )[0];
// Hide menu toggle button if menu is empty and return early.
if ( 'undefined' === typeof menu ) {
button.style.display = 'none';
return;
}
menu.setAttribute( 'aria-expanded', 'false' );
if ( -1 === menu.className.indexOf( 'nav-menu' ) ) {
menu.className += ' nav-menu';
}
button.onclick = function() {
if ( -1 !== container.className.indexOf( 'toggled' ) ) {
container.className = container.className.replace( ' toggled', '' );
button.setAttribute( 'aria-expanded', 'false' );
menu.setAttribute( 'aria-expanded', 'false' );
} else {
container.className += ' toggled';
button.setAttribute( 'aria-expanded', 'true' );
menu.setAttribute( 'aria-expanded', 'true' );
}
};
// Get all the link elements within the menu.
links = menu.getElementsByTagName( 'a' );
subMenus = menu.getElementsByTagName( 'ul' );
// Set menu items with submenus to aria-haspopup="true".
for ( i = 0, len = subMenus.length; i < len; i++ ) {
subMenus[i].parentNode.setAttribute( 'aria-haspopup', 'true' );
}
// Each time a menu link is focused or blurred, toggle focus.
for ( i = 0, len = links.length; i < len; i++ ) {
links[i].addEventListener( 'focus', toggleFocus, true );
links[i].addEventListener( 'blur', toggleFocus, true );
}
/**
* Sets or removes .focus class on an element.
*/
function toggleFocus() {
var self = this;
// Move up through the ancestors of the current link until we hit .nav-menu.
while ( -1 === self.className.indexOf( 'nav-menu' ) ) {
// On li elements toggle the class .focus.
if ( 'li' === self.tagName.toLowerCase() ) {
if ( -1 !== self.className.indexOf( 'focus' ) ) {
self.className = self.className.replace( ' focus', '' );
} else {
self.className += ' focus';
}
}
self = self.parentElement;
}
}
/**
* Toggles `focus` class to allow submenu access on tablets.
*/
( function( container ) {
var touchStartFn, i,
parentLink = container.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' );
if ( 'ontouchstart' in window ) {
touchStartFn = function( e ) {
var menuItem = this.parentNode, i;
if ( ! menuItem.classList.contains( 'focus' ) ) {
e.preventDefault();
for ( i = 0; i < menuItem.parentNode.children.length; ++i ) {
if ( menuItem === menuItem.parentNode.children[i] ) {
continue;
}
menuItem.parentNode.children[i].classList.remove( 'focus' );
}
menuItem.classList.add( 'focus' );
} else {
menuItem.classList.remove( 'focus' );
}
};
for ( i = 0; i < parentLink.length; ++i ) {
parentLink[i].addEventListener( 'touchstart', touchStartFn, false );
}
}
}( container ) );
} )();

View File

@ -1,33 +0,0 @@
/**
* File skip-link-focus-fix.js.
*
* Helps with accessibility for keyboard only users.
*
* Learn more: https://git.io/vWdr2
*/
( function() {
var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
isOpera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1,
isIe = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1;
if ( ( isWebkit || isOpera || isIe ) && document.getElementById && window.addEventListener ) {
window.addEventListener( 'hashchange', function() {
var id = location.hash.substring( 1 ),
element;
if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
return;
}
element = document.getElementById( id );
if ( element ) {
if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
element.tabIndex = -1;
}
element.focus();
}
}, false );
}
})();

File diff suppressed because it is too large Load Diff

2
js/theme.min.js vendored

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -4,21 +4,21 @@ msgstr ""
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/_s\n"
"POT-Creation-Date: 2017-01-06 07:53+0000\n"
"POT-Revision-Date: Mon Jul 04 2016 09:13:18 GMT+0200 (CEST)\n"
"PO-Revision-Date: 2018-03-02 14:13+0100\n"
"PO-Revision-Date: 2018-05-16 15:45+0200\n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 2.0.5\n"
"X-Generator: Poedit 2.0.7\n"
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
"X-Poedit-Basepath: ..\n"
"Last-Translator: Thomas A. Reinert | TAR MediaDesign <thomas@tarthemes.com>\n"
"Last-Translator: Thomas A. Reinert | TAR MediaDesign <thomas@tarcgn.de>\n"
"Language: de_DE\n"
"X-Poedit-SearchPath-0: footer.php\n"
"X-Poedit-SearchPath-1: header.php\n"
@ -164,10 +164,10 @@ msgid ""
"order. You may be charged more than the amount stated above if you fail to "
"do so."
msgstr ""
"Da dein Browser keine Javascript unterstützt oder Javascript deaktiviert "
"ist, stelle bitte sicher, den <em>Aktualisieren</em> Button zu klicken bevor "
"du deine Bestellung durchführst. Falls du dies vergisst, könnte dir "
"ansonsten mehr in Rechnung gestellt werden, als hier angezeigt wird."
"Da dein Browser kein JavaScript unterstützt oder JavaScript deaktiviert ist, "
"stelle bitte sicher, den <em>Aktualisieren</em> Button zu klicken bevor du "
"deine Bestellung durchführst. Falls du dies vergisst, könnte dir ansonsten "
"mehr in Rechnung gestellt werden, als hier angezeigt wird."
#: woocommerce/checkout/payment.php:43
msgid "Update totals"
@ -422,11 +422,11 @@ msgstr ""
"Eine Kombination aus Automattic´s _s theme und Bootstrap 4. Konzipiert als "
"solider Ausgangspunkt für dein nächstes Theme-Projekt und WordPress Website. "
"Nutze es als eigenes Starter-Theme oder als Parent-Theme. Beides steht dir "
"frei. Beinhaltet Font Awesome Unterstützung, integrierten Widget-Slider und "
"frei. Beinhaltet FontAwesome Unterstützung, integrierten Widget-Slider und "
"vieles mehr, was du für die Erstellung einer einfachen Website benötigst. "
"WICHTIG: Alle Abhängigkeiten der Entwicklertools sind in diesem Paket nicht "
"enthalten! Lade die ZIP-Datei herunter, entpacke sie und führe \"npm install"
"\" sowie \"gulp copy-assets\" in der Konsole im entpackten understrap-Ordner "
"\" sowie \"gulp copy-assets\" in der Konsole im entpackten UnderStrap-Ordner "
"aus."
#: search.php:29
@ -789,7 +789,7 @@ msgstr "http://understrap.com"
#. Author of the theme
msgid "Holger Koenemann"
msgstr "Holger Könemann"
msgstr "Holger Koenemann"
#. Author URI of the theme
msgid "http://www.holgerkoenemann.de"

BIN
languages/de_DE_formal.mo Normal file

Binary file not shown.

797
languages/de_DE_formal.po Normal file
View File

@ -0,0 +1,797 @@
msgid ""
msgstr ""
"Project-Id-Version: understrap\n"
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/_s\n"
"POT-Creation-Date: 2017-01-06 07:53+0000\n"
"POT-Revision-Date: Mon Jul 04 2016 09:13:18 GMT+0200 (CEST)\n"
"PO-Revision-Date: 2018-05-16 15:44+0200\n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 2.0.7\n"
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
"X-Poedit-Basepath: ..\n"
"Last-Translator: Thomas A. Reinert | TAR MediaDesign <thomas@tarcgn.de>\n"
"Language: de_DE\n"
"X-Poedit-SearchPath-0: footer.php\n"
"X-Poedit-SearchPath-1: header.php\n"
"X-Poedit-SearchPath-2: index.php\n"
"X-Poedit-SearchPath-3: statichero.php\n"
"X-Poedit-SearchPath-4: 404.php\n"
"X-Poedit-SearchPath-5: archive.php\n"
"X-Poedit-SearchPath-6: search.php\n"
"X-Poedit-SearchPath-7: sticky.php\n"
"X-Poedit-SearchPath-8: single.php\n"
"X-Poedit-SearchPath-9: sidebar.php\n"
"X-Poedit-SearchPath-10: comment-form.php\n"
"X-Poedit-SearchPath-11: comments.php\n"
"X-Poedit-SearchPath-12: content-none.php\n"
"X-Poedit-SearchPath-13: content-page.php\n"
"X-Poedit-SearchPath-14: content-search.php\n"
"X-Poedit-SearchPath-15: content-single.php\n"
"X-Poedit-SearchPath-16: content.php\n"
"X-Poedit-SearchPath-17: hero.php\n"
"X-Poedit-SearchPath-18: page.php\n"
"X-Poedit-SearchPath-19: functions.php\n"
"X-Poedit-SearchPath-20: page-templates\n"
"X-Poedit-SearchPath-21: inc\n"
#: inc/customizer.php:99
msgid "Choose between Bootstrap's container and container-fluid"
msgstr "Wählen Sie zwischen dem Bootstrap container und container-fluid aus"
#: inc/customizer.php:151
msgid "Choose how to display latest posts"
msgstr "Wählen Sie aus wie die letzten Beiträge angezeigt werden sollen"
#: inc/customizer.php:156
msgid "Default"
msgstr "Standard"
#: inc/customizer.php:157
msgid "Masonry"
msgstr "Masonry (Kachel-Layout)"
#: inc/customizer.php:158
msgid "Grid"
msgstr "Grid (Raster-Layout)"
#: inc/customizer.php:187
msgid "Grid Post Columns"
msgstr "Raster-Spalten"
#: inc/customizer.php:188
msgid "Choose how many columns to use"
msgstr "Wählen Sie aus wie viele Spalten benutzt werden sollen"
#: woocommerce/cart/proceed-to-checkout-button.php:27
msgid "Proceed to Checkout"
msgstr "Weiter zum Bezahlen"
#: woocommerce/cart/mini-cart.php:49 woocommerce/cart/cart.php:60
msgid "Remove this item"
msgstr "Entfernen Sie diesen Artikel"
#: woocommerce/cart/mini-cart.php:72
msgid "No products in the cart."
msgstr "Keine Produkte im Einkaufswagen."
#: woocommerce/cart/mini-cart.php:80
msgid "Subtotal"
msgstr "Zwischensumme"
#: woocommerce/cart/mini-cart.php:85
msgid "View Cart"
msgstr "Einkaufswagen ansehen"
#: woocommerce/cart/mini-cart.php:86
msgid "Checkout"
msgstr "Bezahlen"
#: woocommerce/cart/cart-empty.php:28
msgid "Your cart is currently empty."
msgstr "Der Einkaufswagen ist leer."
#: woocommerce/cart/cart-empty.php:36
msgid "Return To Shop"
msgstr "Zurück zum Shop"
#: woocommerce/cart/cart.php:36 woocommerce/cart/cart.php:79
#: woocommerce/checkout/form-pay.php:29
msgid "Product"
msgstr "Produkt"
#: woocommerce/cart/cart.php:37 woocommerce/cart/cart.php:97
msgid "Price"
msgstr "Preis"
#: woocommerce/cart/cart.php:38 woocommerce/cart/cart.php:103
msgid "Quantity"
msgstr "Menge"
#: woocommerce/cart/cart.php:39 woocommerce/cart/cart.php:120
#: woocommerce/myaccount/my-orders.php:16
msgid "Total"
msgstr "Gesamt"
#: woocommerce/cart/cart.php:92
msgid "Available on backorder"
msgstr "Wird nachbestellt"
#: woocommerce/cart/cart.php:138
msgid "Coupon:"
msgstr "Coupon:"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:36
msgid "Coupon code"
msgstr "Coupon-Code"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:40
msgid "Apply Coupon"
msgstr "Coupon anwenden"
#: woocommerce/cart/cart.php:144
msgid "Update Cart"
msgstr "Einkaufswagen aktualisieren"
#: woocommerce/checkout/payment.php:35
msgid ""
"Sorry, it seems that there are no available payment methods for your state. "
"Please contact us if you require assistance or wish to make alternate "
"arrangements."
msgstr ""
"Entschuldigen Sie, aber es sieht so aus als ob es keine verfügbaren "
"Zahlungsmethoden für Ihr Land gibt. Bitte kontaktieren Sie uns, falls Sie "
"Hilfe benötigen oder ein alternatives Arrangement mit uns treffen möchten."
#: woocommerce/checkout/payment.php:35
msgid "Please fill in your details above to see available payment methods."
msgstr ""
"Bitte füllen Sie die Details aus, um verfügbare Zahlungsmethoden einsehen zu "
"können."
#: woocommerce/checkout/payment.php:42
msgid ""
"Since your browser does not support JavaScript, or it is disabled, please "
"ensure you click the <em>Update Totals</em> button before placing your "
"order. You may be charged more than the amount stated above if you fail to "
"do so."
msgstr ""
"Da Ihr Browser kein JavaScript unterstützt oder JavaScript deaktiviert ist, "
"stellen Sie bitte sicher, den <em>Aktualisieren</em> Button zu klicken bevor "
"Sie Ihre Bestellung durchführen. Falls Sie dies vergessen, könnte Ihnen "
"ansonsten mehr in Rechnung gestellt werden, als hier angezeigt wird."
#: woocommerce/checkout/payment.php:43
msgid "Update totals"
msgstr "Gesamtbetrag aktualisieren"
#: woocommerce/checkout/form-pay.php:30
msgid "Qty"
msgstr "Menge"
#: woocommerce/checkout/form-pay.php:31
msgid "Totals"
msgstr "Gesamt"
#: woocommerce/checkout/form-pay.php:79
msgid ""
"Sorry, it seems that there are no available payment methods for your "
"location. Please contact us if you require assistance or wish to make "
"alternate arrangements."
msgstr ""
"Entschuldigen Sie, aber es sieht so aus als ob es keine verfügbaren "
"Zahlungsmethoden für Ihren Standort gibt. Bitte kontaktieren Sie uns, falls "
"Sie Hilfe benötigen oder ein alternatives Arrangement mit uns treffen "
"möchten."
#: woocommerce/checkout/form-coupon.php:28
msgid "Have a coupon?"
msgstr "Haben Sie einen Coupon?"
#: woocommerce/checkout/form-coupon.php:28
msgid "Click here to enter your code"
msgstr "Klicken Sie hier um Ihren Code einzugeben"
#: woocommerce/global/form-login.php:35
#: woocommerce/myaccount/form-lost-password.php:30
msgid "Username or email"
msgstr "Benutzername oder E-Mail"
#: woocommerce/global/form-login.php:39 woocommerce/myaccount/form-login.php:48
#: woocommerce/myaccount/form-login.php:98
msgid "Password"
msgstr "Passwort"
#: woocommerce/global/form-login.php:48 woocommerce/myaccount/form-login.php:37
#: woocommerce/myaccount/form-login.php:56
msgid "Login"
msgstr "Benutzername"
#: woocommerce/global/form-login.php:51 woocommerce/myaccount/form-login.php:58
msgid "Remember me"
msgstr "Login speichern"
#: woocommerce/global/form-login.php:55 woocommerce/myaccount/form-login.php:62
msgid "Lost your password?"
msgstr "Passwort vergessen?"
#: woocommerce/global/quantity-input.php:24
msgctxt "Product quantity input tooltip"
msgid "Qty"
msgstr "Menge"
#: woocommerce/myaccount/form-lost-password.php:27
msgid ""
"Lost your password? Please enter your username or email address. You will "
"receive a link to create a new password via email."
msgstr ""
"Passwort vergessen? Bitte geben Sie Ihren Benutzernamen oder E-Mail Adresse "
"ein. Sie werden dann per E-Mail einen Link erhalten mit dem Sie ein neues "
"Passwort vergeben können."
#: woocommerce/myaccount/form-lost-password.php:40
msgid "Reset Password"
msgstr "Passwort zurücksetzen"
#: woocommerce/myaccount/form-login.php:44
msgid "Username or email address"
msgstr "Benutzername oder E-Mail Adresse"
#: woocommerce/myaccount/form-login.php:75
#: woocommerce/myaccount/form-login.php:112
msgid "Register"
msgstr "Registrieren"
#: woocommerce/myaccount/form-login.php:84
msgid "Username"
msgstr "Benutzername"
#: woocommerce/myaccount/form-login.php:91
#: woocommerce/myaccount/form-edit-account.php:40
msgid "Email address"
msgstr "E-Mail Adresse"
#: woocommerce/myaccount/form-login.php:105
msgid "Anti-spam"
msgstr "Spam Schutz"
#: woocommerce/myaccount/form-edit-account.php:30
msgid "First name"
msgstr "Vorname"
#: woocommerce/myaccount/form-edit-account.php:34
msgid "Last name"
msgstr "Nachname"
#: woocommerce/myaccount/form-edit-account.php:45
msgid "Password Change"
msgstr "Passwort ändern"
#: woocommerce/myaccount/form-edit-account.php:48
msgid "Current Password (leave blank to leave unchanged)"
msgstr "Aktuelles Passwort (Leer lassen wenn es nicht geändert werden soll)"
#: woocommerce/myaccount/form-edit-account.php:52
msgid "New Password (leave blank to leave unchanged)"
msgstr "Neues Passwort (Leer lassen wenn es nicht geändert werden soll)"
#: woocommerce/myaccount/form-edit-account.php:56
msgid "Confirm New Password"
msgstr "Neues Passwort bestätigen"
#: woocommerce/myaccount/form-edit-account.php:66
msgid "Save changes"
msgstr "Änderungen speichern"
#: woocommerce/myaccount/my-orders.php:13
msgid "Order"
msgstr "Bestellung"
#: woocommerce/myaccount/my-orders.php:14
msgid "Date"
msgstr "Datum"
#: woocommerce/myaccount/my-orders.php:15
msgid "Status"
msgstr "Status"
#: woocommerce/myaccount/my-orders.php:30
msgid "Recent Orders"
msgstr "Kürzlich bestellt"
#: woocommerce/myaccount/my-orders.php:55 woocommerce/myaccount/orders.php:51
msgctxt "hash before order number"
msgid "#"
msgstr "#"
#: woocommerce/myaccount/my-orders.php:65 woocommerce/myaccount/orders.php:61
#, php-format
msgid "%s for %s item"
msgid_plural "%s for %s items"
msgstr[0] "%s für %s Artikel"
msgstr[1] "%s für %s Artikel"
#: woocommerce/myaccount/my-orders.php:72 woocommerce/myaccount/orders.php:68
msgid "Pay"
msgstr "Bezahlen"
#: woocommerce/myaccount/my-orders.php:76 woocommerce/myaccount/orders.php:72
msgid "View"
msgstr "Ansehen"
#: woocommerce/myaccount/my-orders.php:80 woocommerce/myaccount/orders.php:76
msgid "Cancel"
msgstr "Abbrechen"
#: woocommerce/myaccount/orders.php:107
msgid "Previous"
msgstr "Vorherige"
#: woocommerce/myaccount/orders.php:111
msgid "Next"
msgstr "Nächste"
#: woocommerce/myaccount/orders.php:119 woocommerce/myaccount/downloads.php:98
msgid "Go Shop"
msgstr "In den Shop"
#: woocommerce/myaccount/orders.php:121
msgid "No order has been made yet."
msgstr "Es wurde bisher keine Bestellung vorgenommen."
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Billing Address"
msgstr "Rechnungsadresse"
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Shipping Address"
msgstr "Lieferadresse"
#: woocommerce/myaccount/form-edit-address.php:46
msgid "Save Address"
msgstr "Adresse speichern"
#: woocommerce/myaccount/form-reset-password.php:27
msgid "Enter a new password below."
msgstr "Geben Sie unten ein neues Passwort ein."
#: woocommerce/myaccount/form-reset-password.php:30
msgid "New password"
msgstr "Neues Passwort"
#: woocommerce/myaccount/form-reset-password.php:34
msgid "Re-enter new password"
msgstr "Wiederholen Sie das Passwort"
#: woocommerce/myaccount/form-reset-password.php:47
msgid "Save"
msgstr "Speichern"
#: woocommerce/myaccount/downloads.php:59
msgid "&infin;"
msgstr "&infin;"
#: woocommerce/myaccount/downloads.php:67
msgid "Never"
msgstr "Niemals"
#: woocommerce/myaccount/downloads.php:75
msgid "Download"
msgstr "Download"
#: woocommerce/myaccount/downloads.php:100
msgid "No downloads available yet."
msgstr "Noch keine Downloads verfügbar."
#: woocommerce/single-product/review-rating.php:28
#, php-format
msgid "Rated %d out of 5"
msgstr "Bewertet mit %d von 5"
#: woocommerce/single-product/review-rating.php:29
msgid "out of 5"
msgstr "von 5"
#: woocommerce/single-product/rating.php:36
#, php-format
msgid "Rated %s out of 5"
msgstr "Bewertet mit %s von 5"
#: woocommerce/single-product/rating.php:38
#, php-format
msgid "out of %s5%s"
msgstr "von %s5%s"
#. Description of the theme
msgid ""
"Combination of Automattic´s _s theme and Bootstrap 4. Made as a solid "
"starting point for your next theme project and WordPress website. Use it as "
"starter theme or as a parent theme. It is up to you. Including Font Awesome "
"support, built-in widget slider and much more you need for basic websites. "
"IMPORTANT: All developer dependencies are not bundled with this install "
"file. Just download the .zip, extract it and run \"npm install\" and \"gulp "
"copy-assets\" inside the extracted /understrap folder."
msgstr ""
"Eine Kombination aus Automattic´s _s theme und Bootstrap 4. Konzipiert als "
"solider Ausgangspunkt für Ihr nächstes Theme-Projekt und WordPress Website. "
"Nutzen Sie es als eigenes Starter-Theme oder als Parent-Theme. Beides steht "
"Ihnen frei. Beinhaltet FontAwesome Unterstützung, integrierten Widget-Slider "
"und vieles mehr, was du für die Erstellung einer einfachen Website "
"benötigst. WICHTIG: Alle Abhängigkeiten der Entwicklertools sind in diesem "
"Paket nicht enthalten! Laden Sie die ZIP-Datei herunter, entpacken Sie sie "
"und führen Sie \"npm install\" sowie \"gulp copy-assets\" in der Konsole im "
"entpackten UnderStrap-Ordner aus."
#: search.php:29
#, php-format
msgid "Search Results for: %s"
msgstr "Suchergebnisse für: %s"
#: header.php:34
msgid "Skip to content"
msgstr "Zum Inhalt springen"
#: 404.php:24
msgid "Oops! That page can&rsquo;t be found."
msgstr "Oooops! Diese Seite konnte nicht gefunden werden."
#: 404.php:31
msgid ""
"It looks like nothing was found at this location. Maybe try one of the links "
"below or a search?"
msgstr ""
"Es scheint dass hier nichts gefunden wurde. Vielleicht sollten Sie einen der "
"Links unten oder die Suche verwenden?"
#: 404.php:42
msgid "Most Used Categories"
msgstr "Meistgenutzte Kategorien"
#. translators: %1$s: smiley
#: 404.php:62
#, php-format
msgid "Try looking in the monthly archives. %1$s"
msgstr "Versuchen Sie es einmal im monatlichen Archiv. %1$s"
#: author.php:34
msgid "About:"
msgstr "Über:"
#: author.php:42 inc/custom-comments.php:30
msgid "Website"
msgstr "Webseite"
#: author.php:49
msgid "Profile"
msgstr "Profil"
#: author.php:54
msgid "Posts by"
msgstr "Artikel von"
#: author.php:68
msgid "in"
msgstr "in"
#: comments.php:28
#, php-format
msgctxt "comments title"
msgid "One thought on &ldquo;%2$s&rdquo;"
msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
msgstr[0] "Ein Gedanke zu &ldquo;%2$s&rdquo;"
msgstr[1] "%1$s Gedanken zu &ldquo;%2$s&rdquo;"
#: comments.php:36 comments.php:59
msgid "Comment navigation"
msgstr "Kommentarnavigation"
#: comments.php:38 comments.php:61
msgid "&larr; Older Comments"
msgstr "&larr; Ältere Kommentare"
#: comments.php:42 comments.php:65
msgid "Newer Comments &rarr;"
msgstr "Neuere Kommentare &rarr;"
#: comments.php:78
msgid "Comments are closed."
msgstr "Kommentare sind geschlossen."
#: footer.php:27
msgid "http://wordpress.org/"
msgstr "http://wordpress.org/"
#: footer.php:28
#, php-format
msgid "Proudly powered by %s"
msgstr "Stolz angetrieben durch %s"
#: footer.php:31
#, php-format
msgid "Theme: %1$s by %2$s."
msgstr "Theme: %1$s von %2$s."
#: footer.php:33
#, php-format
msgid "Version: %1$s"
msgstr "Version: %1$s"
#: searchform.php:10 searchform.php:16
msgid "Search"
msgstr "Suche"
#: searchform.php:13
msgid "Search &hellip;"
msgstr "Suche &hellip;"
#: loop-templates/content-card.php:43 loop-templates/content-page.php:25
#: loop-templates/content.php:37 loop-templates/content-single.php:31
#: loop-templates/content-verticalpage.php:28
msgid "Pages:"
msgstr "Seiten:"
#: loop-templates/content-page.php:34
#: loop-templates/content-verticalpage.php:37
msgid "Edit"
msgstr "Editieren"
#: loop-templates/content-none.php:15
msgid "Nothing Found"
msgstr "Nichts gefunden"
#: loop-templates/content-none.php:23
#, php-format
msgid ""
"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr ""
"Bereit Ihren ersten Artikel zu veröffentlichen? <a href=\"%1$s\">Dann fangen "
"Sie hier an</a>."
#: loop-templates/content-none.php:28
msgid ""
"Sorry, but nothing matched your search terms. Please try again with some "
"different keywords."
msgstr ""
"Entschuldigung, aber leider wurde nichts zu Ihrem Suchbegriff gefunden. "
"Versuchen Sie es erneut mit einem anderen Suchbegriff."
#: loop-templates/content-none.php:34
msgid ""
"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
"searching can help."
msgstr ""
"Leider konnten wir nicht das finden wonach Sie gesucht haben. Vielleicht "
"kann Ihnen die Suche helfen."
#. Name of the template
msgid "Blank Page Template"
msgstr "Komplett leere Seiten-Vorlage"
#. Name of the template
msgid "Left and Right Sidebar Layout"
msgstr "Linke und rechte Seitenspalte"
#. Name of the template
msgid "Empty Page Template"
msgstr "Leere Seiten-Vorlage"
#. Name of the template
msgid "Full Width Page"
msgstr "Seite mit voller Breite"
#. Name of the template
msgid "Left Sidebar Layout"
msgstr "Layout mit linker Seitenleiste"
#. Name of the template
msgid "Vertical One Page"
msgstr "Vertikales \"One Pager\" Layout"
#: inc/template-tags.php:18
#, php-format
msgid " Edited %4$s"
msgstr " Bearbeitet %4$s"
#: inc/template-tags.php:29
#, php-format
msgctxt "post date"
msgid "Posted on %s"
msgstr "Veröffentlicht am %s"
#: inc/template-tags.php:34
#, php-format
msgctxt "post author"
msgid "by %s"
msgstr "von %s"
#. translators: used between list items, there is a space after the comma
#: inc/template-tags.php:51 inc/template-tags.php:57
msgid ", "
msgstr ", "
#: inc/template-tags.php:53
#, php-format
msgid "Posted in %1$s"
msgstr "Veröffentlicht in %1$s"
#: inc/template-tags.php:59
#, php-format
msgid "Tagged %1$s"
msgstr "Verschlagwortet mit %1$s"
#: inc/template-tags.php:65
msgid "Leave a comment"
msgstr "Kommentar hinterlassen"
#: inc/template-tags.php:65
msgid "1 Comment"
msgstr "1 Kommentar"
#: inc/template-tags.php:65
msgid "% Comments"
msgstr "% Kommentare"
#. translators: %s: Name of current post
#: inc/template-tags.php:72
#, php-format
msgid "Edit %s"
msgstr "Editieren Sie %s"
#: inc/template-tags.php:143
msgid "Post navigation"
msgstr "Beitrags-Navigation"
#: inc/template-tags.php:148
msgctxt "Previous post link"
msgid "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
msgstr "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
#: inc/template-tags.php:151
msgctxt "Next post link"
msgid "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
msgstr "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
#: inc/setup.php:51
msgid "Primary Menu"
msgstr "Hauptmenü"
#: inc/setup.php:122
msgid "Read More..."
msgstr "Weiterlesen..."
#: inc/widgets.php:14
msgid "Right Sidebar"
msgstr "Rechte Seitenleiste"
#: inc/widgets.php:24
msgid "Left Sidebar"
msgstr "Linke Seitenleiste"
#: inc/widgets.php:34
msgid "Hero Slider"
msgstr "\"Bühnen\"-Slider"
#: inc/widgets.php:44
msgid "Hero Static"
msgstr "Statische \"Bühne\""
#: inc/widgets.php:54
msgid "Footer Full"
msgstr "Fußbereich"
#: inc/custom-comments.php:24
msgid "Name"
msgstr "Name"
#: inc/custom-comments.php:27
msgid "Email"
msgstr "E-Mail"
#: inc/custom-comments.php:49
msgctxt "noun"
msgid "Comment"
msgstr "Kommentare"
#: inc/customizer.php:36
msgid "Slider Settings"
msgstr "Slider-Einstellungen"
#: inc/customizer.php:45
msgid "Number of slides displaying at once"
msgstr "Anzahl der Slides die auf einmal angezeigt werden"
#: inc/customizer.php:57
msgid "Slider Time (in ms)"
msgstr "Zeit von Slide zu Slide (in ms)"
#: inc/customizer.php:69
msgid "Loop Slider Content"
msgstr "Soll der Slider von vorne anfangen?"
#: inc/customizer.php:81
msgid "Theme Layout Settings"
msgstr "Theme Layout Einstellungen"
#: inc/customizer.php:83
msgid "Container width and sidebar defaults"
msgstr "Container-Breite und Seitenleisten-Einstellungen"
#: inc/customizer.php:98
msgid "Container Width"
msgstr "Container-Breite"
#: inc/customizer.php:104
msgid "Fixed width container"
msgstr "Container mit fester Breite"
#: inc/customizer.php:105
msgid "Full width container"
msgstr "Container mit voller Seitenbreite"
#: inc/customizer.php:122
msgid "Sidebar Positioning"
msgstr "Seitenleisten-Positionierung"
#: inc/customizer.php:123
msgid "Set sidebar's position. Can either be: right, left, both or none"
msgstr ""
"Stelle die Standard-Position der Seitenleiste ein. Zur Auswahl stehen: "
"Rechts, links, beide oder keine."
#: inc/customizer.php:129
msgid "Right sidebar"
msgstr "Rechte Seitenleiste"
#: inc/customizer.php:130
msgid "Left sidebar"
msgstr "Linke Seitenleiste"
#: inc/customizer.php:131
msgid "Left & Right sidebars"
msgstr "Linke und rechte Seitenleiste"
#: inc/customizer.php:132
msgid "No sidebar"
msgstr "Keine Seitenleiste"
#: inc/customizer.php:150
msgid "Posts Index Style"
msgstr "Layout der Beiträge auf der Startseite"
#: woocommerce/single-product/rating.php:39
#, php-format
msgid "based on %s customer rating"
msgid_plural "based on %s customer ratings"
msgstr[0] "basierend auf %s Kundenbewertungen"
msgstr[1] "basierend auf %s Kundenbewertungen"
#: woocommerce/single-product/rating.php:42
#, php-format
msgid "%s customer review"
msgid_plural "%s customer reviews"
msgstr[0] "%s Kundenbewertung"
msgstr[1] "%s Kunden Bewertungen"
#. Name of the theme
msgid "UnderStrap"
msgstr "UnderStrap"
#. Theme URI of the theme
msgid "http://understrap.com"
msgstr "http://understrap.com"
#. Author of the theme
msgid "Holger Koenemann"
msgstr "Holger Koenemann"
#. Author URI of the theme
msgid "http://www.holgerkoenemann.de"
msgstr "http://www.holgerkoenemann.de"

BIN
languages/ja_JP.mo Normal file

Binary file not shown.

784
languages/ja_JP.po Normal file
View File

@ -0,0 +1,784 @@
msgid ""
msgstr ""
"Project-Id-Version: understrap\n"
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/_s\n"
"POT-Creation-Date: 2016-12-20 05:10+0000\n"
"POT-Revision-Date: Mon Jul 04 2016 09:13:18 GMT+0200 (CEST)\n"
"PO-Revision-Date: 2018-05-22 18:29+0900\n"
"Language-Team: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 2.0.7\n"
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
"__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
"_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
"esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
"esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
"X-Poedit-Basepath: ..\n"
"Last-Translator: \n"
"Language: ja_JP\n"
"X-Poedit-SearchPath-0: footer.php\n"
"X-Poedit-SearchPath-1: header.php\n"
"X-Poedit-SearchPath-2: index.php\n"
"X-Poedit-SearchPath-3: statichero.php\n"
"X-Poedit-SearchPath-4: 404.php\n"
"X-Poedit-SearchPath-5: archive.php\n"
"X-Poedit-SearchPath-6: search.php\n"
"X-Poedit-SearchPath-7: sticky.php\n"
"X-Poedit-SearchPath-8: single.php\n"
"X-Poedit-SearchPath-9: sidebar.php\n"
"X-Poedit-SearchPath-10: comment-form.php\n"
"X-Poedit-SearchPath-11: comments.php\n"
"X-Poedit-SearchPath-12: content-none.php\n"
"X-Poedit-SearchPath-13: content-page.php\n"
"X-Poedit-SearchPath-14: content-search.php\n"
"X-Poedit-SearchPath-15: content-single.php\n"
"X-Poedit-SearchPath-16: content.php\n"
"X-Poedit-SearchPath-17: hero.php\n"
"X-Poedit-SearchPath-18: page.php\n"
"X-Poedit-SearchPath-19: functions.php\n"
"X-Poedit-SearchPath-20: page-templates\n"
"X-Poedit-SearchPath-21: inc\n"
#: search.php:29
#, php-format
msgid "Search Results for: %s"
msgstr "検索結果: %s"
#: header.php:34
msgid "Skip to content"
msgstr "コンテンツへスキップ"
#: 404.php:24
msgid "Oops! That page can&rsquo;t be found."
msgstr "おっと!このページは見つかりませんでした。"
#: 404.php:31
msgid ""
"It looks like nothing was found at this location. Maybe try one of the links "
"below or a search?"
msgstr ""
"この場所では何も見つかりませんでした。下のリンクや検索を試してみますか?"
#: 404.php:42
msgid "Most Used Categories"
msgstr "よく使われるカテゴリー"
#. translators: %1$s: smiley
#: 404.php:62
#, php-format
msgid "Try looking in the monthly archives. %1$s"
msgstr "月々のアーカイブを見てみます。 %1$s"
#: author.php:34
msgid "About:"
msgstr "About:"
#: author.php:42 inc/custom-comments.php:30
msgid "Website"
msgstr "Webサイト"
#: author.php:49
msgid "Profile"
msgstr "プロフィール"
#: author.php:54
msgid "Posts by"
msgstr "投稿者"
#: author.php:68
msgid "in"
msgstr "に"
#: comments.php:28
#, php-format
msgctxt "comments title"
msgid "One thought on &ldquo;%2$s&rdquo;"
msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
msgstr[0] "&ldquo;%2$s&rdquo; へ%1$s件のコメント"
#: comments.php:36 comments.php:59
msgid "Comment navigation"
msgstr "コメントナビゲーション"
#: comments.php:38 comments.php:61
msgid "&larr; Older Comments"
msgstr "&larr; 古いコメント"
#: comments.php:42 comments.php:65
msgid "Newer Comments &rarr;"
msgstr "新しいコメント &rarr;"
#: comments.php:78
msgid "Comments are closed."
msgstr "コメントは閉じられました。"
#: footer.php:27
msgid "http://wordpress.org/"
msgstr "http://wordpress.org/"
#: footer.php:28
#, php-format
msgid "Proudly powered by %s"
msgstr "Proudly powered by %s"
#: footer.php:31
#, php-format
msgid "Theme: %1$s by %2$s."
msgstr "テーマ: %1$s は %2$s によって作られました."
#: footer.php:33
#, php-format
msgid "Version: %1$s"
msgstr "バージョン: %1$s"
#: searchform.php:10 searchform.php:16
msgid "Search"
msgstr "検索"
#: searchform.php:13
msgid "Search &hellip;"
msgstr "検索&hellip;"
#: loop-templates/content-card.php:43 loop-templates/content-page.php:25
#: loop-templates/content.php:37 loop-templates/content-single.php:31
#: loop-templates/content-verticalpage.php:28
msgid "Pages:"
msgstr "ページ:"
#: loop-templates/content-page.php:34
#: loop-templates/content-verticalpage.php:37
msgid "Edit"
msgstr "編集"
#: loop-templates/content-none.php:15
msgid "Nothing Found"
msgstr "何も見つかりませんでした"
#: loop-templates/content-none.php:23
#, php-format
msgid ""
"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr ""
"あなたの最初の投稿を公開する準備ができましたか?<a href=\"%1$s\">ここから始め"
"ます</a>。"
#: loop-templates/content-none.php:28
msgid ""
"Sorry, but nothing matched your search terms. Please try again with some "
"different keywords."
msgstr ""
"申し訳ありません。あなたの検索条件に一致するものがありませんでした。異なる"
"キーワードで試してみてください。"
#: loop-templates/content-none.php:34
msgid ""
"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
"searching can help."
msgstr "お探しのコンテンツは見つかりませんでした。検索をお試しください。"
#. Name of the template
msgid "Blank Page Template"
msgstr "空ページのテンプレート"
#. Name of the template
msgid "Left and Right Sidebar Layout"
msgstr "左右のサイドバーのレイアウト"
#. Name of the template
msgid "Empty Page Template"
msgstr "空ページのテンプレート"
#. Name of the template
msgid "Full Width Page"
msgstr "全幅ページ"
#. Name of the template
msgid "Left Sidebar Layout"
msgstr "左スライダーのレイアウト"
#. Name of the template
msgid "Vertical One Page"
msgstr "縦1ページ"
# Source text begins with a space.
#: inc/template-tags.php:18
#, php-format
msgid " Edited %4$s"
msgstr " %4$sを編集しました"
#: inc/template-tags.php:29
#, php-format
msgctxt "post date"
msgid "Posted on %s"
msgstr "投稿日時: %s"
#: inc/template-tags.php:34
#, php-format
msgctxt "post author"
msgid "by %s"
msgstr "投稿者: %s"
#. translators: used between list items, there is a space after the comma
#: inc/template-tags.php:51 inc/template-tags.php:57
msgid ", "
msgstr "、 "
#: inc/template-tags.php:53
#, php-format
msgid "Posted in %1$s"
msgstr "%1$s への投稿"
#: inc/template-tags.php:59
#, php-format
msgid "Tagged %1$s"
msgstr "タグ %1$s"
#: inc/template-tags.php:65
msgid "Leave a comment"
msgstr "コメントを残す"
#: inc/template-tags.php:65
msgid "1 Comment"
msgstr "1件のコメント"
# Are you mistaking the formatter?
#: inc/template-tags.php:65
msgid "% Comments"
msgstr "% 件のコメント"
#. translators: %s: Name of current post
#: inc/template-tags.php:72
#, php-format
msgid "Edit %s"
msgstr "%s を編集する"
#: inc/template-tags.php:143
msgid "Post navigation"
msgstr "投稿ナビゲーション"
#: inc/template-tags.php:148
msgctxt "Previous post link"
msgid "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
msgstr "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
#: inc/template-tags.php:151
msgctxt "Next post link"
msgid "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
msgstr "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
#: inc/setup.php:51
msgid "Primary Menu"
msgstr "メインメニュー"
#: inc/setup.php:122
msgid "Read More..."
msgstr "続きを読む..."
#: inc/widgets.php:14
msgid "Right Sidebar"
msgstr "右サイドバー"
#: inc/widgets.php:24
msgid "Left Sidebar"
msgstr "左サイドバー"
#: inc/widgets.php:34
msgid "Hero Slider"
msgstr "ヒーロースライダー"
#: inc/widgets.php:44
msgid "Hero Static"
msgstr "静的ヒーロー"
#: inc/widgets.php:54
msgid "Footer Full"
msgstr "全幅フッター"
#: inc/custom-comments.php:24
msgid "Name"
msgstr "名前"
#: inc/custom-comments.php:27
msgid "Email"
msgstr "メールアドレス"
#: inc/custom-comments.php:49
msgctxt "noun"
msgid "Comment"
msgstr "コメント"
#: inc/customizer.php:36
msgid "Slider Settings"
msgstr "スライダー設定"
#: inc/customizer.php:45
msgid "Number of slides displaying at once"
msgstr "一度に表示されるスライドの和"
#: inc/customizer.php:57
msgid "Slider Time (in ms)"
msgstr "スライダー時間(ミリ秒)"
#: inc/customizer.php:69
msgid "Loop Slider Content"
msgstr "ループするスライダーのコンテント"
#: inc/customizer.php:81
msgid "Theme Layout Settings"
msgstr "テーマのレイアウト設定"
#: inc/customizer.php:83
msgid "Container width and sidebar defaults"
msgstr "コンテナの幅とサイドバーのデフォルト"
#: inc/customizer.php:98
msgid "Container Width"
msgstr "コンテナーの幅"
#: inc/customizer.php:99
msgid "Choose between Bootstrap's container and container-fluid"
msgstr "Bootstrapの固定幅コンテナと全幅コンテナを選択してください"
#: inc/customizer.php:104
msgid "Fixed width container"
msgstr "固定幅コンテナ"
#: inc/customizer.php:105
msgid "Full width container"
msgstr "全幅コンテナ"
#: inc/customizer.php:122
msgid "Sidebar Positioning"
msgstr "サイドバーポジショニング"
#: inc/customizer.php:123
msgid "Set sidebar's position. Can either be: right, left, both or none"
msgstr "サイドバーの位置。次のいずれかを選択できます: right、left、both、none"
#: inc/customizer.php:129
msgid "Right sidebar"
msgstr "右サイドバー"
#: inc/customizer.php:130
msgid "Left sidebar"
msgstr "左サイドバー"
#: inc/customizer.php:131
msgid "Left & Right sidebars"
msgstr "左右サイドバー"
#: inc/customizer.php:132
msgid "No sidebar"
msgstr "サイドバーなし"
#: inc/customizer.php:150
msgid "Posts Index Style"
msgstr "投稿インデックススタイル"
#: inc/customizer.php:151
msgid "Choose how to display latest posts"
msgstr "最新の投稿をどのように表示するか選択する"
#: inc/customizer.php:156
msgid "Default"
msgstr "デフォルト"
#: inc/customizer.php:157
msgid "Masonry"
msgstr "Masonry"
#: inc/customizer.php:158
msgid "Grid"
msgstr "グリッド"
#: inc/customizer.php:187
msgid "Grid Post Columns"
msgstr "グリッド投稿列"
#: inc/customizer.php:188
msgid "Choose how many columns to use"
msgstr "使用する列の数を選択する"
#: woocommerce/cart/proceed-to-checkout-button.php:27
msgid "Proceed to Checkout"
msgstr "チェックアウトに進む"
#: woocommerce/cart/mini-cart.php:49 woocommerce/cart/cart.php:60
msgid "Remove this item"
msgstr "このアイテムを削除する"
#: woocommerce/cart/mini-cart.php:72
msgid "No products in the cart."
msgstr "カートに商品がありません。"
#: woocommerce/cart/mini-cart.php:80
msgid "Subtotal"
msgstr "小計"
#: woocommerce/cart/mini-cart.php:85
msgid "View Cart"
msgstr "カートを見る"
#: woocommerce/cart/mini-cart.php:86
msgid "Checkout"
msgstr "チェックアウト"
#: woocommerce/cart/cart-empty.php:28
msgid "Your cart is currently empty."
msgstr "カートに商品がありません。"
#: woocommerce/cart/cart-empty.php:36
msgid "Return To Shop"
msgstr "ショップへ戻る"
#: woocommerce/cart/cart.php:36 woocommerce/cart/cart.php:79
#: woocommerce/checkout/form-pay.php:29
msgid "Product"
msgstr "商品"
#: woocommerce/cart/cart.php:37 woocommerce/cart/cart.php:97
msgid "Price"
msgstr "価格"
#: woocommerce/cart/cart.php:38 woocommerce/cart/cart.php:103
msgid "Quantity"
msgstr "数量"
#: woocommerce/cart/cart.php:39 woocommerce/cart/cart.php:120
#: woocommerce/myaccount/my-orders.php:16
msgid "Total"
msgstr "合計"
#: woocommerce/cart/cart.php:92
msgid "Available on backorder"
msgstr "バックオーダーで利用可能"
#: woocommerce/cart/cart.php:138
msgid "Coupon:"
msgstr "クーポン:"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:36
msgid "Coupon code"
msgstr "クーポンのコード"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:40
msgid "Apply Coupon"
msgstr "クーポンを適用する"
#: woocommerce/cart/cart.php:144
msgid "Update Cart"
msgstr "カートを更新"
#: woocommerce/checkout/payment.php:35
msgid ""
"Sorry, it seems that there are no available payment methods for your state. "
"Please contact us if you require assistance or wish to make alternate "
"arrangements."
msgstr ""
"申し訳ありません。あなたの国に利用可能な支払い方法がないようです。援助が必要"
"な場合や代替案をご希望の場合は、私達までご連絡ください。"
#: woocommerce/checkout/payment.php:35
msgid "Please fill in your details above to see available payment methods."
msgstr ""
"ご利用可能なお支払い方法を参照するために、ご自身の住所などを入力してください."
#: woocommerce/checkout/payment.php:42
msgid ""
"Since your browser does not support JavaScript, or it is disabled, please "
"ensure you click the <em>Update Totals</em> button before placing your "
"order. You may be charged more than the amount stated above if you fail to "
"do so."
msgstr ""
"ブラウザがJavaScriptをサポートしていないか、無効になっているため、注文する前"
"に<em>合計を更新</em>ボタンをクリックしてください。 上記の金額を超えて請求さ"
"れる場合があります。"
#: woocommerce/checkout/payment.php:43
msgid "Update totals"
msgstr "合計を更新する"
#: woocommerce/checkout/form-pay.php:30
msgid "Qty"
msgstr "数量"
#: woocommerce/checkout/form-pay.php:31
msgid "Totals"
msgstr "合計"
#: woocommerce/checkout/form-pay.php:79
msgid ""
"Sorry, it seems that there are no available payment methods for your "
"location. Please contact us if you require assistance or wish to make "
"alternate arrangements."
msgstr ""
"申し訳ありませんがあなたの居住地で利用可能なお支払い方法がないようです。あな"
"たがヘルプを必要とするか、または代替の手段を試したい場合は、運営管理にお問い"
"合わせください。"
#: woocommerce/checkout/form-coupon.php:28
msgid "Have a coupon?"
msgstr "クーポンをお持ちですか?"
#: woocommerce/checkout/form-coupon.php:28
msgid "Click here to enter your code"
msgstr "こちらをクリックしてコードを入力します"
#: woocommerce/global/form-login.php:35
#: woocommerce/myaccount/form-lost-password.php:30
msgid "Username or email"
msgstr "ユーザー名またはメールアドレス"
#: woocommerce/global/form-login.php:39 woocommerce/myaccount/form-login.php:48
#: woocommerce/myaccount/form-login.php:98
msgid "Password"
msgstr "パスワード"
#: woocommerce/global/form-login.php:48 woocommerce/myaccount/form-login.php:37
#: woocommerce/myaccount/form-login.php:56
msgid "Login"
msgstr "ログイン"
#: woocommerce/global/form-login.php:51 woocommerce/myaccount/form-login.php:58
msgid "Remember me"
msgstr "ログイン状態を保存する"
#: woocommerce/global/form-login.php:55 woocommerce/myaccount/form-login.php:62
msgid "Lost your password?"
msgstr "パスワードを忘れましたか?"
#: woocommerce/global/quantity-input.php:24
msgctxt "Product quantity input tooltip"
msgid "Qty"
msgstr "数量"
#: woocommerce/myaccount/form-lost-password.php:27
msgid ""
"Lost your password? Please enter your username or email address. You will "
"receive a link to create a new password via email."
msgstr ""
"パスワードを忘れましたか?あなたのユーザー名またはメールアドレスを入力してく"
"ださい。電子メールで新しいパスワードを作成するためのリンクが表示されます。"
#: woocommerce/myaccount/form-lost-password.php:40
msgid "Reset Password"
msgstr "パスワードをリセットする"
#: woocommerce/myaccount/form-login.php:44
msgid "Username or email address"
msgstr "ユーザー名またはメールアドレス"
#: woocommerce/myaccount/form-login.php:75
#: woocommerce/myaccount/form-login.php:112
msgid "Register"
msgstr "登録"
#: woocommerce/myaccount/form-login.php:84
msgid "Username"
msgstr "ユーザー名"
#: woocommerce/myaccount/form-login.php:91
#: woocommerce/myaccount/form-edit-account.php:40
msgid "Email address"
msgstr "メールアドレス"
#: woocommerce/myaccount/form-login.php:105
msgid "Anti-spam"
msgstr "アンチスパム"
#: woocommerce/myaccount/form-edit-account.php:30
msgid "First name"
msgstr "名前"
#: woocommerce/myaccount/form-edit-account.php:34
msgid "Last name"
msgstr "苗字"
#: woocommerce/myaccount/form-edit-account.php:45
msgid "Password Change"
msgstr "パスワードを変更する"
#: woocommerce/myaccount/form-edit-account.php:48
msgid "Current Password (leave blank to leave unchanged)"
msgstr "現在のパスワード(空白のまま変更しない)"
#: woocommerce/myaccount/form-edit-account.php:52
msgid "New Password (leave blank to leave unchanged)"
msgstr "新しいパスワード(空白のまま変更しない)"
#: woocommerce/myaccount/form-edit-account.php:56
msgid "Confirm New Password"
msgstr "新しいパスワードを確認する"
#: woocommerce/myaccount/form-edit-account.php:66
msgid "Save changes"
msgstr "変更を保存"
#: woocommerce/myaccount/my-orders.php:13
msgid "Order"
msgstr "注文"
#: woocommerce/myaccount/my-orders.php:14
msgid "Date"
msgstr "日付"
#: woocommerce/myaccount/my-orders.php:15
msgid "Status"
msgstr "状態"
#: woocommerce/myaccount/my-orders.php:30
msgid "Recent Orders"
msgstr "最近の注文"
#: woocommerce/myaccount/my-orders.php:55 woocommerce/myaccount/orders.php:51
msgctxt "hash before order number"
msgid "#"
msgstr "#"
#: woocommerce/myaccount/my-orders.php:65 woocommerce/myaccount/orders.php:61
#, php-format
msgid "%s for %s item"
msgid_plural "%s for %s items"
msgstr[0] "%s のうちの %s のアイテム"
#: woocommerce/myaccount/my-orders.php:72 woocommerce/myaccount/orders.php:68
msgid "Pay"
msgstr "支払い"
#: woocommerce/myaccount/my-orders.php:76 woocommerce/myaccount/orders.php:72
msgid "View"
msgstr "表示"
#: woocommerce/myaccount/my-orders.php:80 woocommerce/myaccount/orders.php:76
msgid "Cancel"
msgstr "キャンセル"
#: woocommerce/myaccount/orders.php:107
msgid "Previous"
msgstr "前"
#: woocommerce/myaccount/orders.php:111
msgid "Next"
msgstr "次"
#: woocommerce/myaccount/orders.php:119 woocommerce/myaccount/downloads.php:98
msgid "Go Shop"
msgstr "ショップへ行く"
#: woocommerce/myaccount/orders.php:121
msgid "No order has been made yet."
msgstr "まだ注文はありません。"
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Billing Address"
msgstr "請求先住所"
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Shipping Address"
msgstr "お届け先の住所"
#: woocommerce/myaccount/form-edit-address.php:46
msgid "Save Address"
msgstr "アドレスを保存する"
#: woocommerce/myaccount/form-reset-password.php:27
msgid "Enter a new password below."
msgstr "以下に新しいパスワードを入力してください。"
#: woocommerce/myaccount/form-reset-password.php:30
msgid "New password"
msgstr "新しいパスワード"
#: woocommerce/myaccount/form-reset-password.php:34
msgid "Re-enter new password"
msgstr "新しいパスワードの再入力"
#: woocommerce/myaccount/form-reset-password.php:47
msgid "Save"
msgstr "保存"
#: woocommerce/myaccount/downloads.php:59
msgid "&infin;"
msgstr "&infin;"
#: woocommerce/myaccount/downloads.php:67
msgid "Never"
msgstr "決して"
#: woocommerce/myaccount/downloads.php:75
msgid "Download"
msgstr "ダウンロード"
#: woocommerce/myaccount/downloads.php:100
msgid "No downloads available yet."
msgstr "利用可能なダウンロードはまだありません。"
#: woocommerce/single-product/review-rating.php:28
#, php-format
msgid "Rated %d out of 5"
msgstr "評価 %d/5"
#: woocommerce/single-product/review-rating.php:29
msgid "out of 5"
msgstr "5点満点中"
#: woocommerce/single-product/rating.php:36
#, php-format
msgid "Rated %s out of 5"
msgstr "5点満点中の%s"
#: woocommerce/single-product/rating.php:38
#, php-format
msgid "out of %s5%s"
msgstr "%s5%s点中の"
#: woocommerce/single-product/rating.php:39
#, php-format
msgid "based on %s customer rating"
msgid_plural "based on %s customer ratings"
msgstr[0] "%s の顧客評価に基づく"
#: woocommerce/single-product/rating.php:42
#, php-format
msgid "%s customer review"
msgid_plural "%s customer reviews"
msgstr[0] "%s 件のカスタマーレビュー"
#. Name of the theme
msgid "UnderStrap"
msgstr "UnderStrap"
#. Description of the theme
msgid ""
"Combination of Automattic´s _s theme and Bootstrap 4. Made as a solid "
"starting point for your next theme project and WordPress website. Use it as "
"starter theme or as a parent theme. It is up to you. Including Font Awesome "
"support, built-in widget slider and much more you need for basic websites. "
"IMPORTANT: All developer dependencies are not bundled with this install "
"file. Just download the .zip, extract it and run \"npm install\" and \"gulp "
"copy-assets\" inside the extracted /understrap folder."
msgstr ""
"AutomatticのテーマとBootstrap 4のコンビネーション。あなたの次のテーマプロジェ"
"クトとWordPressのウェブサイトの堅実な出発点として作られています。スターター"
"テーマまたは親テーマとして使用します。それはあなた次第です。Font Awesomeのサ"
"ポート、組み込みのウィジェットスライダーなど、基本的なWebサイトにはるかに必要"
"なものが含まれています。 *重要*: すべての開発者の依存関係は、このインストール"
"ファイルにバンドルされていません。zipファイルをダウンロードして展開し、展開さ"
"れたunderstrapフォルダの中で「npm install」と「gulp copy-assets」を実行するだ"
"けです。"
#. Theme URI of the theme
msgid "http://understrap.com"
msgstr "http://understrap.com"
#. Author of the theme
msgid "Holger Koenemann"
msgstr "ホルガー・ケーネマン"
#. Author URI of the theme
msgid "http://www.holgerkoenemann.de"
msgstr "http://www.holgerkoenemann.de"

BIN
languages/pl_PL.mo Normal file

Binary file not shown.

799
languages/pl_PL.po Normal file
View File

@ -0,0 +1,799 @@
msgid ""
msgstr ""
"Project-Id-Version: understrap\n"
"Report-Msgid-Bugs-To: http://wordpress.org/support/theme/_s\n"
"POT-Creation-Date: 2016-12-20 05:10+0000\n"
"POT-Revision-Date: Mon Jul 04 2016 09:13:18 GMT+0200 (CEST)\n"
"PO-Revision-Date: 2018-04-02 19:11+0100\n"
"Last-Translator: Mirosław Zalewski <mz@miroslaw-zalewski.eu>\n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10"
" || n%100>=20) ? 1 : 2);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Lokalize 2.0\n"
"X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:"
"1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1"
",2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;e"
"sc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;comments"
"_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SearchPath-0: footer.php\n"
"X-Poedit-SearchPath-1: header.php\n"
"X-Poedit-SearchPath-2: index.php\n"
"X-Poedit-SearchPath-3: statichero.php\n"
"X-Poedit-SearchPath-4: 404.php\n"
"X-Poedit-SearchPath-5: archive.php\n"
"X-Poedit-SearchPath-6: search.php\n"
"X-Poedit-SearchPath-7: sticky.php\n"
"X-Poedit-SearchPath-8: single.php\n"
"X-Poedit-SearchPath-9: sidebar.php\n"
"X-Poedit-SearchPath-10: comment-form.php\n"
"X-Poedit-SearchPath-11: comments.php\n"
"X-Poedit-SearchPath-12: content-none.php\n"
"X-Poedit-SearchPath-13: content-page.php\n"
"X-Poedit-SearchPath-14: content-search.php\n"
"X-Poedit-SearchPath-15: content-single.php\n"
"X-Poedit-SearchPath-16: content.php\n"
"X-Poedit-SearchPath-17: hero.php\n"
"X-Poedit-SearchPath-18: page.php\n"
"X-Poedit-SearchPath-19: functions.php\n"
"X-Poedit-SearchPath-20: page-templates\n"
#: search.php:29
#, php-format
msgid "Search Results for: %s"
msgstr "Wyniki wyszukiwania dla frazy: %s"
#: header.php:34
msgid "Skip to content"
msgstr "Przejdź do treści"
#: 404.php:24
msgid "Oops! That page can&rsquo;t be found."
msgstr "Ups! Strona nie została znaleziona."
#: 404.php:31
msgid ""
"It looks like nothing was found at this location. Maybe try one of the links "
"below or a search?"
msgstr ""
"Wygląda na to, że nic tutaj nie znaleziono. Może spróbuj wyszukiwania lub"
"kliknij jeden z odnośników poniżej?"
#: 404.php:42
msgid "Most Used Categories"
msgstr "Najczęściej używane kategorie"
#. translators: %1$s: smiley
#: 404.php:62
#, php-format
msgid "Try looking in the monthly archives. %1$s"
msgstr "Sprawdź w archiwum %1$s"
#: author.php:34
msgid "About:"
msgstr "Autor:"
#: author.php:42 inc/custom-comments.php:30
msgid "Website"
msgstr "Strona internetowa"
#: author.php:49
msgid "Profile"
msgstr "O autorze"
#: author.php:54
msgid "Posts by"
msgstr "Artykuły"
#: author.php:68
msgid "in"
msgstr "w"
#: comments.php:28
#, php-format
msgctxt "comments title"
msgid "One thought on &ldquo;%2$s&rdquo;"
msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
msgstr[0] "Jedna opinia na temat „%2$s”"
msgstr[1] "%1$s opinie na temat „%2$s”"
msgstr[2] "%1$s opinii na temat „%2$s”"
#: comments.php:36 comments.php:59
msgid "Comment navigation"
msgstr "Nawigacja po komentarzach"
#: comments.php:38 comments.php:61
msgid "&larr; Older Comments"
msgstr "&larr; Starsze komentarze"
#: comments.php:42 comments.php:65
msgid "Newer Comments &rarr;"
msgstr "Nowsze komentarze &rarr;"
#: comments.php:78
msgid "Comments are closed."
msgstr "Komentarze są zamknięte"
#: footer.php:27
msgid "http://wordpress.org/"
msgstr "http://wordpress.org/"
#: footer.php:28
#, php-format
msgid "Proudly powered by %s"
msgstr "Dumnie wspierany przez %s"
#: footer.php:31
#, php-format
msgid "Theme: %1$s by %2$s."
msgstr "Motyw: %1$s od %2$s."
#: footer.php:33
#, php-format
msgid "Version: %1$s"
msgstr "Wersja: %1$s"
#: searchform.php:10 searchform.php:16
msgid "Search"
msgstr "Szukaj"
#: searchform.php:13
msgid "Search &hellip;"
msgstr "Szukaj &hellip;"
#: loop-templates/content-card.php:43 loop-templates/content-page.php:25
#: loop-templates/content.php:37 loop-templates/content-single.php:31
#: loop-templates/content-verticalpage.php:28
msgid "Pages:"
msgstr "Strony:"
#: loop-templates/content-page.php:34
#: loop-templates/content-verticalpage.php:37
msgid "Edit"
msgstr "Edytuj"
#: loop-templates/content-none.php:15
msgid "Nothing Found"
msgstr "Nic nie znaleziono"
#: loop-templates/content-none.php:23
#, php-format
msgid ""
"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr ""
"Gotów do opublikowania pierwszego postu? <a href=\"%1$s\">Zacznij tutaj</a>."
#: loop-templates/content-none.php:28
msgid ""
"Sorry, but nothing matched your search terms. Please try again with some "
"different keywords."
msgstr ""
"Niestety, nie znaleziono niczego, co pasowałoby do Twoich kryteriów "
"wyszukiwania. Spróbuj ponownie używając innych słów kluczowych."
#: loop-templates/content-none.php:34
msgid ""
"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
"searching can help."
msgstr ""
"Wygląda na to, że nie mogliśmy znaleźć tej strony. Może skorzystaj z"
" wyszukiwarki?"
#. Name of the template
msgid "Blank Page Template"
msgstr "Czysta strona"
#. Name of the template
msgid "Left and Right Sidebar Layout"
msgstr "Lewy i prawy panel boczny"
#. Name of the template
msgid "Empty Page Template"
msgstr "Pusta strona"
#. Name of the template
msgid "Full Width Page"
msgstr "Pełna szerokość"
#. Name of the template
msgid "Left Sidebar Layout"
msgstr "Lewy panel boczny"
#. Name of the template
msgid "Vertical One Page"
msgstr ""
#: inc/template-tags.php:18
#, php-format
msgid " Edited %4$s"
msgstr " Zmiana %4$s"
#: inc/template-tags.php:29
#, php-format
msgctxt "post date"
msgid "Posted on %s"
msgstr "Opublikowano"
#: inc/template-tags.php:34
#, php-format
msgctxt "post author"
msgid "by %s"
msgstr "przez"
#. translators: used between list items, there is a space after the comma
#: inc/template-tags.php:51 inc/template-tags.php:57
msgid ", "
msgstr ","
#: inc/template-tags.php:53
#, php-format
msgid "Posted in %1$s"
msgstr "Opublikowano w %1$s"
#: inc/template-tags.php:59
#, php-format
msgid "Tagged %1$s"
msgstr "Tagi: %1$s"
#: inc/template-tags.php:65
msgid "Leave a comment"
msgstr "Napisz komentarz"
#: inc/template-tags.php:65
msgid "1 Comment"
msgstr "Komentarzy: 1"
#: inc/template-tags.php:65
msgid "% Comments"
msgstr "Komentarzy: %"
#. translators: %s: Name of current post
#: inc/template-tags.php:72
#, php-format
msgid "Edit %s"
msgstr "Edytuj %s"
#: inc/template-tags.php:143
msgid "Post navigation"
msgstr "Nawigacja po artykułach"
#: inc/template-tags.php:148
msgctxt "Previous post link"
msgid "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
msgstr "<i class=\"fa fa-angle-left\"></i>&nbsp;%title"
#: inc/template-tags.php:151
msgctxt "Next post link"
msgid "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
msgstr "%title&nbsp;<i class=\"fa fa-angle-right\"></i>"
#: inc/setup.php:51
msgid "Primary Menu"
msgstr "Menu główne"
#: inc/setup.php:122
msgid "Read More..."
msgstr "Czytaj dalej…"
#: inc/widgets.php:14
msgid "Right Sidebar"
msgstr "Prawy panel boczny"
#: inc/widgets.php:24
msgid "Left Sidebar"
msgstr "Lewy panel boczny"
#: inc/widgets.php:34
msgid "Hero Slider"
msgstr "Slider Hero"
#: inc/widgets.php:44
msgid "Hero Static"
msgstr "Nieruchomy Hero"
#: inc/widgets.php:54
msgid "Footer Full"
msgstr "Pełna stopka"
#: inc/custom-comments.php:24
msgid "Name"
msgstr "Imię"
#: inc/custom-comments.php:27
msgid "Email"
msgstr "Email"
#: inc/custom-comments.php:49
msgctxt "noun"
msgid "Comment"
msgstr "Komentarz"
#: inc/customizer.php:36
msgid "Slider Settings"
msgstr "Ustawienia slidera"
#: inc/customizer.php:45
msgid "Number of slides displaying at once"
msgstr "Liczba jednocześnie wyświetlanych slajdów"
#: inc/customizer.php:57
msgid "Slider Time (in ms)"
msgstr "Długość wyświetlania slajdu (w ms)"
#: inc/customizer.php:69
msgid "Loop Slider Content"
msgstr "Zapętlenie"
#: inc/customizer.php:81
msgid "Theme Layout Settings"
msgstr "Ustawienia układu szablonu"
#: inc/customizer.php:83
msgid "Container width and sidebar defaults"
msgstr "Domyślne ustawienia szerokości strony oraz panelu bocznego"
#: inc/customizer.php:98
msgid "Container Width"
msgstr "Szerokość strony"
#: inc/customizer.php:99
msgid "Choose between Bootstrap's container and container-fluid"
msgstr "Wybierz pomiędzy klasami Bootstrapa: container oraz container-fluid"
#: inc/customizer.php:104
msgid "Fixed width container"
msgstr "Stała"
#: inc/customizer.php:105
msgid "Full width container"
msgstr "Zmienna (wypełnia całą dostępną przestrzeń)"
#: inc/customizer.php:122
msgid "Sidebar Positioning"
msgstr "Umiejscowienie panelu bocznego"
#: inc/customizer.php:123
msgid "Set sidebar's position. Can either be: right, left, both or none"
msgstr ""
"Umiejscowienie panelu bocznego. Może znajdować się po prawej stronie, po"
" lewej stronie, "
"po obu stronach lub może w ogóle go nie być"
#: inc/customizer.php:129
msgid "Right sidebar"
msgstr "Panel boczny po prawej"
#: inc/customizer.php:130
msgid "Left sidebar"
msgstr "Panel boczny po lewej"
#: inc/customizer.php:131
msgid "Left & Right sidebars"
msgstr "Panel boczny po lewej i po prawej"
#: inc/customizer.php:132
msgid "No sidebar"
msgstr "Brak panelu bocznego"
#: inc/customizer.php:150
msgid "Posts Index Style"
msgstr ""
#: inc/customizer.php:151
msgid "Choose how to display latest posts"
msgstr ""
#: inc/customizer.php:156
msgid "Default"
msgstr ""
#: inc/customizer.php:157
msgid "Masonry"
msgstr ""
#: inc/customizer.php:158
msgid "Grid"
msgstr ""
#: inc/customizer.php:187
msgid "Grid Post Columns"
msgstr ""
#: inc/customizer.php:188
msgid "Choose how many columns to use"
msgstr ""
#: woocommerce/cart/proceed-to-checkout-button.php:27
msgid "Proceed to Checkout"
msgstr "Przejdź do kasy"
#: woocommerce/cart/mini-cart.php:49 woocommerce/cart/cart.php:60
msgid "Remove this item"
msgstr "Usuń ten przedmiot"
#: woocommerce/cart/mini-cart.php:72
msgid "No products in the cart."
msgstr "Koszyk jest pusty"
#: woocommerce/cart/mini-cart.php:80
msgid "Subtotal"
msgstr "Suma częściowa"
#: woocommerce/cart/mini-cart.php:85
msgid "View Cart"
msgstr "Zobacz koszyk"
#: woocommerce/cart/mini-cart.php:86
msgid "Checkout"
msgstr "Kasa"
#: woocommerce/cart/cart-empty.php:28
msgid "Your cart is currently empty."
msgstr "Twój koszyk jest pusty"
#: woocommerce/cart/cart-empty.php:36
msgid "Return To Shop"
msgstr "Wróć do sklepu"
#: woocommerce/cart/cart.php:36 woocommerce/cart/cart.php:79
#: woocommerce/checkout/form-pay.php:29
msgid "Product"
msgstr "Produkt"
#: woocommerce/cart/cart.php:37 woocommerce/cart/cart.php:97
msgid "Price"
msgstr "Cena"
#: woocommerce/cart/cart.php:38 woocommerce/cart/cart.php:103
msgid "Quantity"
msgstr "Liczba sztuk"
#: woocommerce/cart/cart.php:39 woocommerce/cart/cart.php:120
#: woocommerce/myaccount/my-orders.php:16
msgid "Total"
msgstr "Suma"
#: woocommerce/cart/cart.php:92
msgid "Available on backorder"
msgstr "Dostępny na zamówienie"
#: woocommerce/cart/cart.php:138
msgid "Coupon:"
msgstr "Kupon:"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:36
msgid "Coupon code"
msgstr "Kod kuponu"
#: woocommerce/cart/cart.php:138 woocommerce/checkout/form-coupon.php:40
msgid "Apply Coupon"
msgstr "Zastosuj kupon"
#: woocommerce/cart/cart.php:144
msgid "Update Cart"
msgstr "Zaktualizuj koszyk"
#: woocommerce/checkout/payment.php:35
msgid ""
"Sorry, it seems that there are no available payment methods for your state. "
"Please contact us if you require assistance or wish to make alternate "
"arrangements."
msgstr ""
"Przykro nam, ale dla Twojego regionu nie jest udostępniona żadna metoda"
" płatności. Prosimy skontaktuj się z nami, jeśli potrzebujesz wyjaśnień lub"
" chcesz omówić alternatywne sposoby płatności."
#: woocommerce/checkout/payment.php:35
msgid "Please fill in your details above to see available payment methods."
msgstr "Wypełnij powyższe szczegóły aby zobaczyć dostępne metody płatności."
#: woocommerce/checkout/payment.php:42
msgid ""
"Since your browser does not support JavaScript, or it is disabled, please "
"ensure you click the <em>Update Totals</em> button before placing your order."
" You may be charged more than the amount stated above if you fail to do so."
msgstr ""
"Ponieważ Twoja przeglądarka nie wspiera JavaScriptu lub jest on wyłączony,"
" upewnij się, że klikniesz przycisk <em>Zaktualizuj koszyk</em> przed"
" złożeniem zamówienia. Możesz zapłacić więcej niż jest podane powyżej, jeśli"
" tego nie zrobisz."
#: woocommerce/checkout/payment.php:43
msgid "Update totals"
msgstr "Zaktualizuj koszyk"
#: woocommerce/checkout/form-pay.php:30
msgid "Qty"
msgstr "Szt."
#: woocommerce/checkout/form-pay.php:31
msgid "Totals"
msgstr "Łącznie"
#: woocommerce/checkout/form-pay.php:79
msgid ""
"Sorry, it seems that there are no available payment methods for your "
"location. Please contact us if you require assistance or wish to make "
"alternate arrangements."
msgstr ""
"Przykro nam, ale dla Twojej lokalizacji nie jest udostępniona żadna metoda"
" płatności. Prosimy skontaktuj się z nami, jeśli potrzebujesz wyjaśnień lub"
" chcesz omówić alternatywne sposoby płatności."
#: woocommerce/checkout/form-coupon.php:28
msgid "Have a coupon?"
msgstr "Masz kupon?"
#: woocommerce/checkout/form-coupon.php:28
msgid "Click here to enter your code"
msgstr "Kliknij tutaj, aby dodać kod"
#: woocommerce/global/form-login.php:35
#: woocommerce/myaccount/form-lost-password.php:30
msgid "Username or email"
msgstr "Użytkownik lub e-mail"
#: woocommerce/global/form-login.php:39
#: woocommerce/myaccount/form-login.php:48
#: woocommerce/myaccount/form-login.php:98
msgid "Password"
msgstr "Hasło"
#: woocommerce/global/form-login.php:48
#: woocommerce/myaccount/form-login.php:37
#: woocommerce/myaccount/form-login.php:56
msgid "Login"
msgstr "Zaloguj się"
#: woocommerce/global/form-login.php:51 woocommerce/myaccount/form-login.php:58
msgid "Remember me"
msgstr "Zapamiętaj mnie"
#: woocommerce/global/form-login.php:55 woocommerce/myaccount/form-login.php:62
msgid "Lost your password?"
msgstr "Nie pamiętasz hasła?"
#: woocommerce/global/quantity-input.php:24
msgctxt "Product quantity input tooltip"
msgid "Qty"
msgstr "Szt."
#: woocommerce/myaccount/form-lost-password.php:27
msgid ""
"Lost your password? Please enter your username or email address. You will "
"receive a link to create a new password via email."
msgstr ""
"Zapomniałeś hasła? Wpisz swoją nazwę użytkownika lub adres e-mail. Dostaniesz"
" link do stworzenia nowego hasła mailem."
#: woocommerce/myaccount/form-lost-password.php:40
msgid "Reset Password"
msgstr "Resetuj hasło"
#: woocommerce/myaccount/form-login.php:44
msgid "Username or email address"
msgstr "Użytkownik lub e-mail"
#: woocommerce/myaccount/form-login.php:75
#: woocommerce/myaccount/form-login.php:112
msgid "Register"
msgstr "Zarejestruj się"
#: woocommerce/myaccount/form-login.php:84
msgid "Username"
msgstr "Nazwa użytkownika"
#: woocommerce/myaccount/form-login.php:91
#: woocommerce/myaccount/form-edit-account.php:40
msgid "Email address"
msgstr "E-mail"
#: woocommerce/myaccount/form-login.php:105
msgid "Anti-spam"
msgstr "Antyspam"
#: woocommerce/myaccount/form-edit-account.php:30
msgid "First name"
msgstr "Imię"
#: woocommerce/myaccount/form-edit-account.php:34
msgid "Last name"
msgstr "Nazwisko"
#: woocommerce/myaccount/form-edit-account.php:45
msgid "Password Change"
msgstr "Zmiana hasła"
#: woocommerce/myaccount/form-edit-account.php:48
msgid "Current Password (leave blank to leave unchanged)"
msgstr "Aktualne hasło (pozostaw puste, aby nie zmieniać)"
#: woocommerce/myaccount/form-edit-account.php:52
msgid "New Password (leave blank to leave unchanged)"
msgstr "Nowe hasło (pozostaw puste, aby nie zmieniać)"
#: woocommerce/myaccount/form-edit-account.php:56
msgid "Confirm New Password"
msgstr "Potwierdź nowe hasło"
#: woocommerce/myaccount/form-edit-account.php:66
msgid "Save changes"
msgstr "Zapisz zmiany"
#: woocommerce/myaccount/my-orders.php:13
msgid "Order"
msgstr "Zamówienie"
#: woocommerce/myaccount/my-orders.php:14
msgid "Date"
msgstr "Data"
#: woocommerce/myaccount/my-orders.php:15
msgid "Status"
msgstr "Status"
#: woocommerce/myaccount/my-orders.php:30
msgid "Recent Orders"
msgstr "Ostatnie zamówienia"
#: woocommerce/myaccount/my-orders.php:55 woocommerce/myaccount/orders.php:51
msgctxt "hash before order number"
msgid "#"
msgstr "#"
#: woocommerce/myaccount/my-orders.php:65 woocommerce/myaccount/orders.php:61
#, php-format
msgid "%s for %s item"
msgid_plural "%s for %s items"
msgstr[0] "%s za %s pozycję"
msgstr[1] "%s za %s pozycje"
msgstr[2] "%s za %s pozycji"
#: woocommerce/myaccount/my-orders.php:72 woocommerce/myaccount/orders.php:68
msgid "Pay"
msgstr "Zapłać"
#: woocommerce/myaccount/my-orders.php:76 woocommerce/myaccount/orders.php:72
msgid "View"
msgstr "Zobacz"
#: woocommerce/myaccount/my-orders.php:80 woocommerce/myaccount/orders.php:76
msgid "Cancel"
msgstr "Anuluj"
#: woocommerce/myaccount/orders.php:107
msgid "Previous"
msgstr "Poprzednie"
#: woocommerce/myaccount/orders.php:111
msgid "Next"
msgstr "Następne"
#: woocommerce/myaccount/orders.php:119 woocommerce/myaccount/downloads.php:98
msgid "Go Shop"
msgstr "Przejdź do sklepu"
#: woocommerce/myaccount/orders.php:121
msgid "No order has been made yet."
msgstr "Żadne zamówienia nie zostały jeszcze złożone."
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Billing Address"
msgstr "Adres rozliczeniowy."
#: woocommerce/myaccount/form-edit-address.php:23
msgid "Shipping Address"
msgstr "Adres wysyłki."
#: woocommerce/myaccount/form-edit-address.php:46
msgid "Save Address"
msgstr "Zapisz adres"
#: woocommerce/myaccount/form-reset-password.php:27
msgid "Enter a new password below."
msgstr "Wpisz nowe hasło poniżej."
#: woocommerce/myaccount/form-reset-password.php:30
msgid "New password"
msgstr "Nowe hasło"
#: woocommerce/myaccount/form-reset-password.php:34
msgid "Re-enter new password"
msgstr "Powtórz nowe hasło"
#: woocommerce/myaccount/form-reset-password.php:47
msgid "Save"
msgstr "Zapisz"
#: woocommerce/myaccount/downloads.php:59
msgid "&infin;"
msgstr "&infin;"
#: woocommerce/myaccount/downloads.php:67
msgid "Never"
msgstr "Nigdy"
#: woocommerce/myaccount/downloads.php:75
msgid "Download"
msgstr "Pobieranie"
#: woocommerce/myaccount/downloads.php:100
msgid "No downloads available yet."
msgstr "Pliki do pobrania nie są jeszcze dostępne."
#: woocommerce/single-product/review-rating.php:28
#, php-format
msgid "Rated %d out of 5"
msgstr "Oceniony %s na 5."
#: woocommerce/single-product/review-rating.php:29
msgid "out of 5"
msgstr "z 5"
#: woocommerce/single-product/rating.php:36
#, php-format
msgid "Rated %s out of 5"
msgstr "Oceniony %s na 5."
#: woocommerce/single-product/rating.php:38
#, php-format
msgid "out of %s5%s"
msgstr "z %s5%s"
#: woocommerce/single-product/rating.php:39
#, php-format
msgid "based on %s customer rating"
msgid_plural "based on %s customer ratings"
msgstr[0] "na podstawie %s oceny klienta"
msgstr[1] "na podstawie %s ocen klientów"
msgstr[2] "na podstawie %s ocen klientów"
#: woocommerce/single-product/rating.php:42
#, php-format
msgid "%s customer review"
msgid_plural "%s customer reviews"
msgstr[0] "%s opinia klienta"
msgstr[1] "%s opinie klienta"
msgstr[2] "%s opinii klienta"
#. Name of the theme
msgid "UnderStrap"
msgstr "UnderStrap"
#. Description of the theme
msgid ""
"Combination of Automattic´s _s theme and Bootstrap 4. Made as a solid "
"starting point for your next theme project and WordPress website. Use it as "
"starter theme or as a parent theme. It is up to you. Including Font Awesome "
"support, built-in widget slider and much more you need for basic websites. "
"IMPORTANT: All developer dependencies are not bundled with this install file."
" Just download the .zip, extract it and run \"npm install\" and \"gulp copy-"
"assets\" inside the extracted /understrap folder."
msgstr ""
"Połączenie motywu _s od Automattic oraz Bootstrapa 4. Stworzony jako solidna "
"podstawa dla Twojego następnego motywu lub strony opartej na WordPressie. "
"Wykorzystaj go jako motyw startowy lub motyw nadrzędny. Jak chcesz. "
"Zawiera obsługę Font Awesome, wbudowany widżet slidera i wiele innych. "
"WAŻNE: Zależności nie są dołączone do tego pliku instalacyjnego. Po prostu "
"pobierz plik .zip, rozpakuj go, wejdź do katalogu /understrap i uruchom"
" polecenia "
"\"npm install\" i \"gulp copy-assets\"."
#. Theme URI of the theme
msgid "http://understrap.com"
msgstr "http://understrap.com"
#. Author of the theme
msgid "Holger Koenemann"
msgstr "Holger Koenemann"
#. Author URI of the theme
msgid "http://www.holgerkoenemann.de"
msgstr "http://www.holgerkoenemann.de"

View File

@ -1,6 +1,6 @@
{
"name": "understrap",
"version": "0.8.1",
"version": "0.8.2",
"description": "WordPress Theme framework",
"main": "index.js",
"scripts": {

View File

@ -42,8 +42,6 @@ $container = get_theme_mod( 'understrap_container_type' );
</main><!-- #main -->
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Bootstrap v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

View File

@ -1,7 +1,7 @@
@import "theme/theme_variables"; // <--------- Add your variables into this file. Also add variables to overwrite Bootstrap or UnderStrap variables here
@import "assets/bootstrap4";// <--------- Loads Bootstrap3 or Bootstrap4. Change from /bootstrap3 to /bootstrap4 Watch out! just for testing in the moment!
@import "understrap/understrap";// <-------- Loads the UnderStrap defaults. Just a few classes to incorporate BS in WP
@import "understrap/woocommerce";// <-------- Loads WooCommerce style fixes. Comment out if you aren't using WooCommerce
//Optional files - If you dont use the corresponding scripts/fonts comment em out
@import "assets/font-awesome"; // <------- Font Awesome Icon font

View File

@ -0,0 +1,4 @@
// Fix billing field wrapper
.woocommerce-input-wrapper {
width: 100%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 KiB

After

Width:  |  Height:  |  Size: 356 KiB

View File

@ -58,8 +58,6 @@ $container = get_theme_mod( 'understrap_container_type' );
<!-- The pagination component -->
<?php understrap_pagination(); ?>
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

16
sidebar-herocanvas.php Normal file
View File

@ -0,0 +1,16 @@
<?php
/**
* Sidebar - hero canvas setup.
*
* @package understrap
*/
?>
<?php if ( is_active_sidebar( 'herocanvas' ) ) : ?>
<!-- ******************* The Hero Canvas Widget Area ******************* -->
<?php dynamic_sidebar( 'herocanvas' ); ?>
<?php endif; ?>

View File

@ -37,8 +37,6 @@ $container = get_theme_mod( 'understrap_container_type' );
</main><!-- #main -->
</div><!-- #primary -->
<!-- Do the right sidebar check -->
<?php get_template_part( 'global-templates/right-sidebar-check' ); ?>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -5,17 +5,20 @@
margin-bottom: $breadcrumb-margin-bottom;
list-style: none;
background-color: $breadcrumb-bg;
@include border-radius($border-radius);
@include border-radius($breadcrumb-border-radius);
}
.breadcrumb-item {
// The separator between breadcrumbs (by default, a forward-slash: "/")
+ .breadcrumb-item::before {
display: inline-block; // Suppress underlining of the separator in modern browsers
padding-right: $breadcrumb-item-padding;
+ .breadcrumb-item {
padding-left: $breadcrumb-item-padding;
color: $breadcrumb-divider-color;
content: "#{$breadcrumb-divider}";
&::before {
display: inline-block; // Suppress underlining of the separator in modern browsers
padding-right: $breadcrumb-item-padding;
color: $breadcrumb-divider-color;
content: $breadcrumb-divider;
}
}
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built

View File

@ -76,9 +76,15 @@
padding-right: $btn-padding-x * .75;
padding-left: $btn-padding-x * .75;
&::after {
&::after,
.dropup &::after,
.dropright &::after {
margin-left: 0;
}
.dropleft &::before {
margin-right: 0;
}
}
.btn-sm + .dropdown-toggle-split {

View File

@ -100,6 +100,7 @@ fieldset:disabled a.btn {
&:disabled,
&.disabled {
color: $btn-link-disabled-color;
pointer-events: none;
}
// No need for an active state here

View File

@ -153,7 +153,7 @@
.card {
display: flex;
// Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
flex: 1 0 0%;
flex-direction: column;
margin-right: $card-deck-margin;
@ -183,7 +183,7 @@
// The child selector allows nested `.card` within `.card-group`
// to display properly.
> .card {
// Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
flex: 1 0 0%;
margin-bottom: 0;
@ -261,6 +261,8 @@
@include media-breakpoint-up(sm) {
column-count: $card-columns-count;
column-gap: $card-columns-gap;
orphans: 1;
widows: 1;
.card {
display: inline-block; // Don't let them vertically span multiple columns
@ -268,3 +270,32 @@
}
}
}
//
// Accordion
//
.accordion {
.card:not(:first-of-type):not(:last-of-type) {
border-bottom: 0;
border-radius: 0;
}
.card:not(:first-of-type) {
.card-header:first-child {
border-radius: 0;
}
}
.card:first-of-type {
border-bottom: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.card:last-of-type {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}

View File

@ -1,4 +1,13 @@
// Wrapper for the slide container and indicators
// Notes on the classes:
//
// 1. The .carousel-item-left and .carousel-item-right is used to indicate where
// the active slide is heading.
// 2. .active.carousel-item is the current slide.
// 3. .active.carousel-item-left and .active.carousel-item-right is the current
// slide in its in-transition state. Only one of these occurs at a time.
// 4. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
// is the upcoming slide in transition.
.carousel {
position: relative;
}
@ -31,7 +40,6 @@
top: 0;
}
// CSS3 transforms when supported by the browser
.carousel-item-next.carousel-item-left,
.carousel-item-prev.carousel-item-right {
transform: translateX(0);
@ -60,6 +68,42 @@
}
//
// Alternate transitions
//
.carousel-fade {
.carousel-item {
opacity: 0;
transition-duration: .6s;
transition-property: opacity;
}
.carousel-item.active,
.carousel-item-next.carousel-item-left,
.carousel-item-prev.carousel-item-right {
opacity: 1;
}
.active.carousel-item-left,
.active.carousel-item-right {
opacity: 0;
}
.carousel-item-next,
.carousel-item-prev,
.carousel-item.active,
.active.carousel-item-left,
.active.carousel-item-prev {
transform: translateX(0);
@supports (transform-style: preserve-3d) {
transform: translate3d(0, 0, 0);
}
}
}
//
// Left/right controls for nav
//
@ -91,13 +135,13 @@
.carousel-control-prev {
left: 0;
@if $enable-gradients {
background: linear-gradient(90deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));
background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
}
}
.carousel-control-next {
right: 0;
@if $enable-gradients {
background: linear-gradient(270deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .001));
background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
}
}

View File

@ -157,7 +157,7 @@
// Select
//
// Replaces the browser default select with a custom one, mostly pulled from
// http://primercss.io.
// https://primer.github.io/.
//
.custom-select {
@ -247,11 +247,11 @@
margin: 0;
opacity: 0;
&:focus ~ .custom-file-control {
&:focus ~ .custom-file-label {
border-color: $custom-file-focus-border-color;
box-shadow: $custom-file-focus-box-shadow;
&::before {
&::after {
border-color: $custom-file-focus-border-color;
}
}
@ -295,3 +295,126 @@
@include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
}
}
// Range
//
// Style range inputs the same across browsers. Vendor-specific rules for psuedo
// elements cannot be mixed. As such, there are no shared styles for focus or
// active states on prefixed selectors.
.custom-range {
width: 100%;
padding-left: 0; // Firefox specific
background-color: transparent;
appearance: none;
&:focus {
outline: none;
}
&::-moz-focus-outer {
border: 0;
}
&::-webkit-slider-thumb {
width: $custom-range-thumb-width;
height: $custom-range-thumb-height;
margin-top: -($custom-range-thumb-width * .25); // Webkit specific?
@include gradient-bg($custom-range-thumb-bg);
border: $custom-range-thumb-border;
@include border-radius($custom-range-thumb-border-radius);
@include box-shadow($custom-range-thumb-box-shadow);
appearance: none;
&:focus {
outline: none;
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
}
&:active {
@include gradient-bg($custom-range-thumb-active-bg);
}
}
&::-webkit-slider-runnable-track {
width: $custom-range-track-width;
height: $custom-range-track-height;
color: transparent; // Why?
cursor: $custom-range-track-cursor;
background-color: $custom-range-track-bg;
border-color: transparent;
@include border-radius($custom-range-track-border-radius);
@include box-shadow($custom-range-track-box-shadow);
}
&::-moz-range-thumb {
width: $custom-range-thumb-width;
height: $custom-range-thumb-height;
@include gradient-bg($custom-range-thumb-bg);
border: $custom-range-thumb-border;
@include border-radius($custom-range-thumb-border-radius);
@include box-shadow($custom-range-thumb-box-shadow);
appearance: none;
&:focus {
outline: none;
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
}
&:active {
@include gradient-bg($custom-range-thumb-active-bg);
}
}
&::-moz-range-track {
width: $custom-range-track-width;
height: $custom-range-track-height;
color: transparent;
cursor: $custom-range-track-cursor;
background-color: $custom-range-track-bg;
border-color: transparent; // Firefox specific?
@include border-radius($custom-range-track-border-radius);
@include box-shadow($custom-range-track-box-shadow);
}
&::-ms-thumb {
width: $custom-range-thumb-width;
height: $custom-range-thumb-height;
@include gradient-bg($custom-range-thumb-bg);
border: $custom-range-thumb-border;
@include border-radius($custom-range-thumb-border-radius);
@include box-shadow($custom-range-thumb-box-shadow);
appearance: none;
&:focus {
outline: none;
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
}
&:active {
@include gradient-bg($custom-range-thumb-active-bg);
}
}
&::-ms-track {
width: $custom-range-track-width;
height: $custom-range-track-height;
color: transparent;
cursor: $custom-range-track-cursor;
background-color: transparent;
border-color: transparent;
border-width: ($custom-range-thumb-height * .5);
@include box-shadow($custom-range-track-box-shadow);
}
&::-ms-fill-lower {
background-color: $custom-range-track-bg;
@include border-radius($custom-range-track-border-radius);
}
&::-ms-fill-upper {
margin-right: 15px; // arbitrary?
background-color: $custom-range-track-bg;
@include border-radius($custom-range-track-border-radius);
}
}

View File

@ -1,6 +1,8 @@
// The dropdown wrapper (`<div>`)
.dropup,
.dropdown {
.dropright,
.dropdown,
.dropleft {
position: relative;
}
@ -31,10 +33,17 @@
@include box-shadow($dropdown-box-shadow);
}
.dropdown-menu-right {
right: 0;
left: auto;
}
// Allow for dropdowns to go bottom up (aka, dropup-menu)
// Just add .dropup after the standard .dropdown class and you're set.
.dropup {
.dropdown-menu {
top: auto;
bottom: 100%;
margin-top: 0;
margin-bottom: $dropdown-spacer;
}
@ -46,6 +55,9 @@
.dropright {
.dropdown-menu {
top: 0;
right: auto;
left: 100%;
margin-top: 0;
margin-left: $dropdown-spacer;
}
@ -60,6 +72,9 @@
.dropleft {
.dropdown-menu {
top: 0;
right: 100%;
left: auto;
margin-top: 0;
margin-right: $dropdown-spacer;
}
@ -72,6 +87,19 @@
}
}
// When enabled Popper.js, reset basic dropdown position
// stylelint-disable no-duplicate-selectors
.dropdown-menu {
&[x-placement^="top"],
&[x-placement^="right"],
&[x-placement^="bottom"],
&[x-placement^="left"] {
right: auto;
bottom: auto;
}
}
// stylelint-enable no-duplicate-selectors
// Dividers (basically an `<hr>`) within the dropdown
.dropdown-divider {
@include nav-divider($dropdown-divider-bg);
@ -129,3 +157,10 @@
color: $dropdown-header-color;
white-space: nowrap; // as with > li > a
}
// Dropdown text
.dropdown-item-text {
display: block;
padding: $dropdown-item-padding-y $dropdown-item-padding-x;
color: $dropdown-link-color;
}

View File

@ -121,6 +121,7 @@ select.form-control {
padding-bottom: $input-padding-y;
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
line-height: $input-line-height;
color: $input-plaintext-color;
background-color: transparent;
border: solid transparent;
border-width: $input-border-width 0;
@ -302,7 +303,8 @@ select.form-control-lg {
display: inline-block;
}
.input-group {
.input-group,
.custom-select {
width: auto;
}

View File

@ -79,7 +79,7 @@
// Request a theme color level
@function theme-color-level($color-name: "primary", $level: 0) {
$color: theme-color($color-name);
$color-base: if($level > 0, #000, #fff);
$color-base: if($level > 0, $black, $white);
$level: abs($level);
@return mix($color-base, $color, $level * $theme-color-interval);

View File

@ -46,9 +46,9 @@
align-items: center;
&:not(:last-child) .custom-file-label,
&:not(:last-child) .custom-file-label::before { @include border-right-radius(0); }
&:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
&:not(:first-child) .custom-file-label,
&:not(:first-child) .custom-file-label::before { @include border-left-radius(0); }
&:not(:first-child) .custom-file-label::after { @include border-left-radius(0); }
}
}

View File

@ -36,7 +36,6 @@
// // Layout
@import "mixins/clearfix";
// @import "mixins/navbar-align";
@import "mixins/grid-framework";
@import "mixins/grid";
@import "mixins/float";

View File

@ -67,7 +67,7 @@
background-color: $modal-content-bg;
background-clip: padding-box;
border: $modal-content-border-width solid $modal-content-border-color;
@include border-radius($border-radius-lg);
@include border-radius($modal-content-border-radius);
@include box-shadow($modal-content-box-shadow-xs);
// Remove focus outline from opened modal
outline: 0;
@ -96,7 +96,7 @@
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
padding: $modal-header-padding;
border-bottom: $modal-header-border-width solid $modal-header-border-color;
@include border-top-radius($border-radius-lg);
@include border-top-radius($modal-content-border-radius);
.close {
padding: $modal-header-padding;

View File

@ -162,11 +162,6 @@
position: absolute;
}
.dropdown-menu-right {
right: 0;
left: auto; // Reset the default from `.dropdown-menu`
}
.nav-link {
padding-right: $navbar-nav-link-padding-x;
padding-left: $navbar-nav-link-padding-x;
@ -189,13 +184,6 @@
.navbar-toggler {
display: none;
}
.dropup {
.dropdown-menu {
top: auto;
bottom: 100%;
}
}
}
}
}

View File

@ -15,6 +15,7 @@
border: $pagination-border-width solid $pagination-border-color;
&:hover {
z-index: 2;
color: $pagination-hover-color;
text-decoration: none;
background-color: $pagination-hover-bg;
@ -23,7 +24,7 @@
&:focus {
z-index: 2;
outline: 0;
outline: $pagination-focus-outline;
box-shadow: $pagination-focus-box-shadow;
}

View File

@ -5,7 +5,7 @@
// ==========================================================================
// Print styles.
// Inlined to avoid the additional HTTP request:
// http://www.phpied.com/delay-loading-your-print-css/
// https://www.phpied.com/delay-loading-your-print-css/
// ==========================================================================
@if $enable-print-styles {
@ -14,7 +14,7 @@
*::before,
*::after {
// Bootstrap specific; comment out `color` and `background`
//color: #000 !important; // Black prints faster: http://www.sanbeiji.com/archives/953
//color: $black !important; // Black prints faster
text-shadow: none !important;
//background: transparent !important;
box-shadow: none !important;
@ -51,7 +51,7 @@
}
pre,
blockquote {
border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px
border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
page-break-inside: avoid;
}
@ -101,7 +101,7 @@
display: none;
}
.badge {
border: $border-width solid #000;
border: $border-width solid $black;
}
.table {
@ -109,13 +109,13 @@
td,
th {
background-color: #fff !important;
background-color: $white !important;
}
}
.table-bordered {
th,
td {
border: 1px solid #ddd !important;
border: 1px solid $gray-300 !important;
}
}

View File

@ -19,6 +19,7 @@
justify-content: center;
color: $progress-bar-color;
text-align: center;
white-space: nowrap;
background-color: $progress-bar-bg;
@include transition($progress-bar-transition);
}

View File

@ -30,7 +30,7 @@ html {
-webkit-text-size-adjust: 100%; // 4
-ms-text-size-adjust: 100%; // 4
-ms-overflow-style: scrollbar; // 5
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); // 6
-webkit-tap-highlight-color: rgba($black, 0); // 6
}
// IE10+ doesn't honor `<meta name="viewport">` in some cases.
@ -290,7 +290,7 @@ table {
caption {
padding-top: $table-cell-padding;
padding-bottom: $table-cell-padding;
color: $text-muted;
color: $table-caption-color;
text-align: left;
caption-side: bottom;
}
@ -309,7 +309,7 @@ th {
label {
// Allow labels to use `margin` for spacing.
display: inline-block;
margin-bottom: .5rem;
margin-bottom: $label-margin-bottom;
}
// Remove the default `border-radius` that macOS Chrome adds.

View File

@ -42,9 +42,9 @@
}
// Bordered version
// Border versions
//
// Add borders all around the table and between all the columns.
// Add or remove borders all around the table and between all the columns.
.table-bordered {
border: $table-border-width solid $table-border-color;
@ -62,13 +62,21 @@
}
}
.table-borderless {
th,
td,
thead th,
tbody + tbody {
border: 0;
}
}
// Zebra-striping
//
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
.table-striped {
tbody tr:nth-of-type(odd) {
tbody tr:nth-of-type(#{$table-striped-order}) {
background-color: $table-accent-bg;
}
}

View File

@ -1,30 +1,16 @@
// stylelint-disable selector-no-qualifying-type
.fade {
opacity: 0;
@include transition($transition-fade);
&.show {
opacity: 1;
&:not(.show) {
opacity: 0;
}
}
.collapse {
display: none;
&.show {
display: block;
}
}
tr {
&.collapse.show {
display: table-row;
}
}
tbody {
&.collapse.show {
display: table-row-group;
&:not(.show) {
display: none;
}
}

View File

@ -8,6 +8,7 @@
@import "utilities/float";
@import "utilities/position";
@import "utilities/screenreaders";
@import "utilities/shadows";
@import "utilities/sizing";
@import "utilities/spacing";
@import "utilities/text";

View File

@ -88,11 +88,11 @@ $theme-colors: map-merge((
$theme-color-interval: 8% !default;
// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
$yiq-contrasted-threshold: 150 !default;
$yiq-contrasted-threshold: 150 !default;
// Customize the light and dark text colors for use in our YIQ color contrast function.
$yiq-text-dark: $gray-900 !default;
$yiq-text-light: $white !default;
$yiq-text-dark: $gray-900 !default;
$yiq-text-light: $white !default;
// Options
//
@ -132,7 +132,8 @@ $sizes: map-merge((
25: 25%,
50: 50%,
75: 75%,
100: 100%
100: 100%,
auto: auto
), $sizes);
// stylelint-enable
@ -211,6 +212,10 @@ $border-radius: .25rem !default;
$border-radius-lg: .3rem !default;
$border-radius-sm: .2rem !default;
$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;
$component-active-color: $white !default;
$component-active-bg: theme-color("primary") !default;
@ -317,6 +322,9 @@ $table-dark-hover-bg: rgba($white, .075) !default;
$table-dark-border-color: lighten($gray-900, 7.5%) !default;
$table-dark-color: $body-bg !default;
$table-striped-order: odd !default;
$table-caption-color: $text-muted !default;
// Buttons + Forms
//
@ -380,6 +388,8 @@ $btn-transition: color .15s ease-in-out, background-color .15s ease
// Forms
$label-margin-bottom: .5rem !default;
$input-padding-y: $input-btn-padding-y !default;
$input-padding-x: $input-btn-padding-x !default;
$input-line-height: $input-btn-line-height !default;
@ -411,6 +421,7 @@ $input-focus-width: $input-btn-focus-width !default;
$input-focus-box-shadow: $input-btn-focus-box-shadow !default;
$input-placeholder-color: $gray-600 !default;
$input-plaintext-color: $body-color !default;
$input-height-border: $input-border-width * 2 !default;
@ -449,7 +460,7 @@ $custom-control-indicator-bg-size: 50% 50% !default;
$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;
$custom-control-indicator-disabled-bg: $gray-200 !default;
$custom-control-label-disabled-color: $gray-600 !default;
$custom-control-label-disabled-color: $gray-600 !default;
$custom-control-indicator-checked-color: $component-active-color !default;
$custom-control-indicator-checked-bg: $component-active-bg !default;
@ -465,22 +476,22 @@ $custom-control-indicator-active-box-shadow: none !default;
$custom-checkbox-indicator-border-radius: $border-radius !default;
$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
$custom-radio-indicator-border-radius: 50% !default;
$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-select-padding-y: .375rem !default;
$custom-select-padding-x: .75rem !default;
$custom-select-padding-x: .75rem !default;
$custom-select-height: $input-height !default;
$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
$custom-select-line-height: $input-btn-line-height !default;
$custom-select-color: $input-color !default;
$custom-select-disabled-color: $gray-600 !default;
$custom-select-bg: $white !default;
$custom-select-bg: $input-bg !default;
$custom-select-disabled-bg: $gray-200 !default;
$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
$custom-select-indicator-color: $gray-800 !default;
@ -498,6 +509,22 @@ $custom-select-height-sm: $input-height-sm !default;
$custom-select-font-size-lg: 125% !default;
$custom-select-height-lg: $input-height-lg !default;
$custom-range-track-width: 100% !default;
$custom-range-track-height: .5rem !default;
$custom-range-track-cursor: pointer !default;
$custom-range-track-bg: $gray-300 !default;
$custom-range-track-border-radius: 1rem !default;
$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;
$custom-range-thumb-width: 1rem !default;
$custom-range-thumb-height: $custom-range-thumb-width !default;
$custom-range-thumb-bg: $component-active-bg !default;
$custom-range-thumb-border: 0 !default;
$custom-range-thumb-border-radius: 1rem !default;
$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;
$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;
$custom-file-height: $input-height !default;
$custom-file-focus-border-color: $input-focus-border-color !default;
$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default;
@ -585,6 +612,9 @@ $nav-pills-border-radius: $border-radius !default;
$nav-pills-link-active-color: $component-active-color !default;
$nav-pills-link-active-bg: $component-active-bg !default;
$nav-divider-color: $gray-200 !default;
$nav-divider-margin-y: ($spacer / 2) !default;
// Navbar
$navbar-padding-y: ($spacer / 2) !default;
@ -633,6 +663,7 @@ $pagination-border-width: $border-width !default;
$pagination-border-color: $gray-300 !default;
$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;
$pagination-focus-outline: 0 !default;
$pagination-hover-color: $link-hover-color !default;
$pagination-hover-bg: $gray-200 !default;
@ -676,19 +707,19 @@ $card-columns-margin: $card-spacer-y !default;
// Tooltips
$tooltip-font-size: $font-size-sm !default;
$tooltip-max-width: 200px !default;
$tooltip-color: $white !default;
$tooltip-bg: $black !default;
$tooltip-border-radius: $border-radius !default;
$tooltip-opacity: .9 !default;
$tooltip-padding-y: .25rem !default;
$tooltip-padding-x: .5rem !default;
$tooltip-margin: 0 !default;
$tooltip-font-size: $font-size-sm !default;
$tooltip-max-width: 200px !default;
$tooltip-color: $white !default;
$tooltip-bg: $black !default;
$tooltip-border-radius: $border-radius !default;
$tooltip-opacity: .9 !default;
$tooltip-padding-y: .25rem !default;
$tooltip-padding-x: .5rem !default;
$tooltip-margin: 0 !default;
$tooltip-arrow-width: .8rem !default;
$tooltip-arrow-height: .4rem !default;
$tooltip-arrow-color: $tooltip-bg !default;
$tooltip-arrow-width: .8rem !default;
$tooltip-arrow-height: .4rem !default;
$tooltip-arrow-color: $tooltip-bg !default;
// Popovers
@ -734,26 +765,27 @@ $badge-pill-border-radius: 10rem !default;
// Modals
// Padding applied to the modal body
$modal-inner-padding: 1rem !default;
$modal-inner-padding: 1rem !default;
$modal-dialog-margin: .5rem !default;
$modal-dialog-margin-y-sm-up: 1.75rem !default;
$modal-dialog-margin: .5rem !default;
$modal-dialog-margin-y-sm-up: 1.75rem !default;
$modal-title-line-height: $line-height-base !default;
$modal-content-bg: $white !default;
$modal-content-border-color: rgba($black, .2) !default;
$modal-content-border-width: $border-width !default;
$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
$modal-content-bg: $white !default;
$modal-content-border-color: rgba($black, .2) !default;
$modal-content-border-width: $border-width !default;
$modal-content-border-radius: $border-radius-lg !default;
$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
$modal-backdrop-bg: $black !default;
$modal-backdrop-opacity: .5 !default;
$modal-header-border-color: $gray-200 !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-header-border-width: $modal-content-border-width !default;
$modal-footer-border-width: $modal-header-border-width !default;
$modal-header-padding: 1rem !default;
$modal-backdrop-bg: $black !default;
$modal-backdrop-opacity: .5 !default;
$modal-header-border-color: $gray-200 !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-header-border-width: $modal-content-border-width !default;
$modal-footer-border-width: $modal-header-border-width !default;
$modal-header-padding: 1rem !default;
$modal-lg: 800px !default;
$modal-md: 500px !default;
@ -842,7 +874,9 @@ $breadcrumb-margin-bottom: 1rem !default;
$breadcrumb-bg: $gray-200 !default;
$breadcrumb-divider-color: $gray-600 !default;
$breadcrumb-active-color: $gray-600 !default;
$breadcrumb-divider: "/" !default;
$breadcrumb-divider: quote("/") !default;
$breadcrumb-border-radius: $border-radius !default;
// Carousel
@ -864,7 +898,7 @@ $carousel-control-icon-width: 20px !default;
$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), "#", "%23") !default;
$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), "#", "%23") !default;
$carousel-transition: transform .6s ease !default;
$carousel-transition: transform .6s ease !default; // Define transform transition first if using multiple transitons (e.g., `transform 2s ease, opacity .5s ease-out`)
// Close

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Grid v4.0.0 (https://getbootstrap.com)
* Bootstrap Grid v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Reboot v4.0.0 (https://getbootstrap.com)
* Bootstrap Reboot v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Bootstrap v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)

View File

@ -14,6 +14,7 @@
@mixin caret-right {
border-top: $caret-width solid transparent;
border-right: 0;
border-bottom: $caret-width solid transparent;
border-left: $caret-width solid;
}

View File

@ -45,7 +45,7 @@
margin-top: .1rem;
font-size: .875rem;
line-height: 1;
color: #fff;
color: $white;
background-color: rgba($color, .8);
border-radius: .2rem;
}

View File

@ -11,7 +11,7 @@
// Horizontal gradient, from left to right
//
// Creates two color stops, start and end, by specifying a color and position for each color stop.
@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
background-repeat: repeat-x;
}
@ -19,27 +19,27 @@
// Vertical gradient, from top to bottom
//
// Creates two color stops, start and end, by specifying a color and position for each color stop.
@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
background-repeat: repeat-x;
}
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
background-image: linear-gradient($deg, $start-color, $end-color);
background-repeat: repeat-x;
}
@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
background-repeat: no-repeat;
}
@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
background-repeat: no-repeat;
}
@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
background-image: radial-gradient(circle, $inner-color, $outer-color);
background-repeat: no-repeat;
}
@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
}

View File

@ -1,9 +1,7 @@
// stylelint-disable indentation
// Hover mixin and `$enable-hover-media-query` are deprecated.
//
// Origally added during our alphas and maintained during betas, this mixin was
// designed to prevent `:hover` stickiness on iOSan issue where hover styles
// designed to prevent `:hover` stickiness on iOS-an issue where hover styles
// would persist after initial touch.
//
// For backward compatibility, we've kept these mixins and updated them to

View File

@ -12,7 +12,7 @@
}
&.active {
color: #fff;
color: $white;
background-color: $color;
border-color: $color;
}

View File

@ -2,9 +2,9 @@
//
// Dividers (basically an hr) within dropdowns and nav lists
@mixin nav-divider($color: #e5e5e5) {
@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {
height: 0;
margin: ($spacer / 2) 0;
margin: $margin-y 0;
overflow: hidden;
border-top: 1px solid $color;
}

View File

@ -1,6 +1,6 @@
// Only display content to screen readers
//
// See: http://a11yproject.com/posts/how-to-hide-content/
// See: https://a11yproject.com/posts/how-to-hide-content/
// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
@mixin sr-only {
@ -11,7 +11,6 @@
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
clip-path: inset(50%);
border: 0;
}
@ -30,6 +29,5 @@
overflow: visible;
clip: auto;
white-space: normal;
clip-path: none;
}
}

View File

@ -6,4 +6,6 @@
text-shadow: none;
background-color: transparent;
border: 0;
@warn "The `text-hide()` mixin has been deprecated as of v4.1.0. It will be removed entirely in v5.";
}

View File

@ -6,4 +6,8 @@
transition: $transition;
}
}
@media screen and (prefers-reduced-motion: reduce) {
transition: none;
}
}

View File

@ -16,6 +16,11 @@
.flex#{$infix}-wrap { flex-wrap: wrap !important; }
.flex#{$infix}-nowrap { flex-wrap: nowrap !important; }
.flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
.flex#{$infix}-fill { flex: 1 1 auto !important; }
.flex#{$infix}-grow-0 { flex-grow: 0 !important; }
.flex#{$infix}-grow-1 { flex-grow: 1 !important; }
.flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }
.flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }
.justify-content#{$infix}-start { justify-content: flex-start !important; }
.justify-content#{$infix}-end { justify-content: flex-end !important; }

View File

@ -3,6 +3,7 @@
// Common values
// Sass list not in variables since it's not intended for customization.
// stylelint-disable-next-line scss/dollar-variable-default
$positions: static, relative, absolute, fixed, sticky;
@each $position in $positions {

View File

@ -0,0 +1,6 @@
// stylelint-disable declaration-no-important
.shadow-sm { box-shadow: $box-shadow-sm !important; }
.shadow { box-shadow: $box-shadow !important; }
.shadow-lg { box-shadow: $box-shadow-lg !important; }
.shadow-none { box-shadow: none !important; }

View File

@ -4,6 +4,8 @@
// Text
//
.text-monospace { font-family: $font-family-monospace; }
// Alignment
.text-justify { text-align: justify !important; }
@ -37,14 +39,18 @@
// Contextual colors
.text-white { color: #fff !important; }
.text-white { color: $white !important; }
@each $color, $value in $theme-colors {
@include text-emphasis-variant(".text-#{$color}", $value);
}
.text-body { color: $body-color !important; }
.text-muted { color: $text-muted !important; }
.text-black-50 { color: rgba($black, .5) !important; }
.text-white-50 { color: rgba($white, .5) !important; }
// Misc
.text-hide {

View File

@ -3,12 +3,12 @@ Theme Name: UnderStrap
Theme URI: http://understrap.com
Author: Holger Koenemann
Author URI: http://www.holgerkoenemann.de
GitHub Theme URI: holger1411/understrap
GitHub Theme URI: https://github.com/understrap/understrap
Description: Combination of Automattic´s _s theme and Bootstrap 4. Made as a solid starting point for your next theme project and WordPress website. Use it as starter theme or as a parent theme. It is up to you. Including Font Awesome support, built-in widget slider and much more you need for basic websites. IMPORTANT: All developer dependencies are not bundled with this install file. Just download the .zip, extract it and run "npm install" and "gulp copy-assets" inside the extracted /understrap folder.
That downloads everything and moves it in place so that you can recompile your CSS and JS files;
A developer version (with Gulp/node and Sass sources) is available on gitHub: https://github.com/holger1411/understrap
A child theme is available on Github, too: https://github.com/holger1411/understrap-child;
Version: 0.8.1
A developer version (with Gulp/node and Sass sources) is available on gitHub: https://github.com/understrap/understrap
A child theme is available on Github, too: https://github.com/understrap/understrap-child;
Version: 0.8.2
License: UnderStrap WordPress Theme, Copyright 2013-2017 Holger Koenemann
UnderStrap is distributed under the terms of the GNU GPL version 2
License URI: http://www.gnu.org/licenses/gpl-2.0.html

View File

@ -44,7 +44,7 @@ wc_print_notices(); ?>
<p class="woocommerce-form-row form-row">
<input type="hidden" name="wc_reset_password" value="true" />
<button type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Save', 'understrap' ); ?>"><?php esc_html_e( 'Save', 'woocommerce' ); ?></button>
<button type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Save', 'understrap' ); ?>"><?php esc_html_e( 'Save', 'understrap' ); ?></button>
</p>
<?php wp_nonce_field( 'reset_password' ); ?>

View File

@ -23,7 +23,7 @@ if ( ! defined( 'ABSPATH' ) ) {
?>
<form role="search" method="get" class="woocommerce-product-search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<div class="input-group">
<label class="sr-only" for="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>"><?php esc_html_e( 'Search for:', 'woocommerce' ); ?></label>
<label class="sr-only" for="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>"><?php esc_html_e( 'Search for:', 'understrap' ); ?></label>
<input type="search" id="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>" class="search-field field form-control" placeholder="<?php echo esc_attr__( 'Search products&hellip;', 'understrap' ); ?>" value="<?php echo get_search_query(); ?>" name="s" />
<input type="hidden" name="post_type" value="product" />
<span class="input-group-append">