├── web ├── app │ ├── themes │ │ ├── .gitkeep │ │ ├── sage │ │ │ ├── resources │ │ │ │ ├── assets │ │ │ │ │ ├── fonts │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── images │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── styles │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ ├── _global.scss │ │ │ │ │ │ │ └── _variables.scss │ │ │ │ │ │ ├── layouts │ │ │ │ │ │ │ ├── _pages.scss │ │ │ │ │ │ │ ├── _posts.scss │ │ │ │ │ │ │ ├── _footer.scss │ │ │ │ │ │ │ ├── _sidebar.scss │ │ │ │ │ │ │ ├── _tinymce.scss │ │ │ │ │ │ │ └── _header.scss │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── _buttons.scss │ │ │ │ │ │ │ ├── _forms.scss │ │ │ │ │ │ │ ├── _comments.scss │ │ │ │ │ │ │ └── _wp-classes.scss │ │ │ │ │ │ ├── autoload │ │ │ │ │ │ │ └── _bootstrap.scss │ │ │ │ │ │ └── main.scss │ │ │ │ │ ├── scripts │ │ │ │ │ │ ├── routes │ │ │ │ │ │ │ ├── about.js │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── common.js │ │ │ │ │ │ ├── customizer.js │ │ │ │ │ │ ├── autoload │ │ │ │ │ │ │ └── _bootstrap.js │ │ │ │ │ │ ├── util │ │ │ │ │ │ │ ├── camelCase.js │ │ │ │ │ │ │ └── Router.js │ │ │ │ │ │ └── main.js │ │ │ │ │ ├── build │ │ │ │ │ │ ├── helpers │ │ │ │ │ │ │ ├── hmr-client.js │ │ │ │ │ │ │ └── public-path.js │ │ │ │ │ │ ├── util │ │ │ │ │ │ │ ├── desire.js │ │ │ │ │ │ │ ├── addHotMiddleware.js │ │ │ │ │ │ │ └── assetManifestsFormatter.js │ │ │ │ │ │ ├── postcss.config.js │ │ │ │ │ │ ├── webpack.config.optimize.js │ │ │ │ │ │ ├── webpack.config.watch.js │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── webpack.config.js │ │ │ │ │ └── config.json │ │ │ │ ├── index.php │ │ │ │ ├── views │ │ │ │ │ ├── partials │ │ │ │ │ │ ├── sidebar.blade.php │ │ │ │ │ │ ├── page-header.blade.php │ │ │ │ │ │ ├── footer.blade.php │ │ │ │ │ │ ├── content-page.blade.php │ │ │ │ │ │ ├── head.blade.php │ │ │ │ │ │ ├── entry-meta.blade.php │ │ │ │ │ │ ├── content.blade.php │ │ │ │ │ │ ├── content-search.blade.php │ │ │ │ │ │ ├── header.blade.php │ │ │ │ │ │ ├── content-single.blade.php │ │ │ │ │ │ └── comments.blade.php │ │ │ │ │ ├── single.blade.php │ │ │ │ │ ├── page.blade.php │ │ │ │ │ ├── template-custom.blade.php │ │ │ │ │ ├── 404.blade.php │ │ │ │ │ ├── search.blade.php │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── layouts │ │ │ │ │ │ └── app.blade.php │ │ │ │ ├── screenshot.png │ │ │ │ ├── style.css │ │ │ │ └── functions.php │ │ │ ├── app │ │ │ │ ├── Controllers │ │ │ │ │ ├── FrontPage.php │ │ │ │ │ └── App.php │ │ │ │ ├── admin.php │ │ │ │ ├── filters.php │ │ │ │ ├── helpers.php │ │ │ │ └── setup.php │ │ │ ├── .gitignore │ │ │ ├── .editorconfig │ │ │ ├── .stylelintrc.js │ │ │ ├── config │ │ │ │ ├── theme.php │ │ │ │ ├── assets.php │ │ │ │ └── view.php │ │ │ ├── LICENSE.md │ │ │ ├── .eslintrc.js │ │ │ ├── composer.json │ │ │ ├── phpcs.xml │ │ │ ├── package.json │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ ├── README.md │ │ │ └── CHANGELOG.md │ │ └── yarn.lock │ ├── plugins │ │ └── .gitkeep │ ├── uploads │ │ ├── .gitkeep │ │ └── cache │ │ │ ├── 21485a3ade0d9fc2166570cb61146c2e61571941.php │ │ │ ├── b0ca68e62983674b70735c799f4be1f5fd5b3941.php │ │ │ ├── 43b63bd38c6fa4d253b4c4718cf01a8318b90ca3.php │ │ │ ├── 60278962fc7a7b02def72b914b0d0b22e8831057.php │ │ │ ├── 4a086ae0a37dd94171fb8d45dbdcf8655676bfbe.php │ │ │ ├── b050821e50e2ad96173eb000996bccc81c23af24.php │ │ │ ├── b3b2e514e95a56335b37d7d4feb045e0a17335ea.php │ │ │ ├── 4b737d4c14aa77d9679ac1c2b2827880627405ce.php │ │ │ └── 539a93f574588a16287a69293b6fa1324d597749.php │ └── mu-plugins │ │ ├── register-theme-directory.php │ │ ├── disallow-indexing.php │ │ └── bedrock-autoloader.php ├── index.php ├── .htaccess └── wp-config.php ├── Procfile ├── wp-cli.yml ├── config ├── environments │ ├── staging.php │ └── development.php └── application.php ├── .lando.yml ├── .gitignore ├── .env.example ├── package.json ├── LICENSE.md ├── composer.json ├── README.md ├── CHANGELOG.md └── composer.lock /web/app/themes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/plugins/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/uploads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: vendor/bin/heroku-php-apache2 web/ -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/fonts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/images/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /wp-cli.yml: -------------------------------------------------------------------------------- 1 | path: web/wp 2 | server: 3 | docroot: web 4 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/common/_global.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/layouts/_pages.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/layouts/_posts.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/layouts/_footer.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/assets/styles/layouts/_sidebar.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/app/themes/sage/resources/index.php: -------------------------------------------------------------------------------- 1 | 2 |
{$message}
{$footer}
"; 20 | wp_die($message, $title); 21 | }; 22 | 23 | /** 24 | * Ensure compatible version of PHP is used 25 | */ 26 | if (version_compare('7.1', phpversion(), '>=')) { 27 | $sage_error(__('You must be using PHP 7.1 or greater.', 'sage'), __('Invalid PHP version', 'sage')); 28 | } 29 | 30 | /** 31 | * Ensure compatible version of WordPress is used 32 | */ 33 | if (version_compare('4.7.0', get_bloginfo('version'), '>=')) { 34 | $sage_error(__('You must be using WordPress 4.7.0 or greater.', 'sage'), __('Invalid WordPress version', 'sage')); 35 | } 36 | 37 | /** 38 | * Ensure dependencies are loaded 39 | */ 40 | if (!class_exists('Roots\\Sage\\Container')) { 41 | if (!file_exists($composer = __DIR__.'/../vendor/autoload.php')) { 42 | $sage_error( 43 | __('You must runcomposer install from the Sage directory.', 'sage'),
44 | __('Autoloader not found.', 'sage')
45 | );
46 | }
47 | require_once $composer;
48 | }
49 |
50 | /**
51 | * Sage required files
52 | *
53 | * The mapped array determines the code library included in your theme.
54 | * Add or remove files to the array as needed. Supports child theme overrides.
55 | */
56 | array_map(function ($file) use ($sage_error) {
57 | $file = "../app/{$file}.php";
58 | if (!locate_template($file, true, true)) {
59 | $sage_error(sprintf(__('Error locating %s for inclusion.', 'sage'), $file), 'File not found');
60 | }
61 | }, ['helpers', 'setup', 'filters', 'admin']);
62 |
63 | /**
64 | * Here's what's happening with these hooks:
65 | * 1. WordPress initially detects theme in themes/sage/resources
66 | * 2. Upon activation, we tell WordPress that the theme is actually in themes/sage/resources/views
67 | * 3. When we call get_template_directory() or get_template_directory_uri(), we point it back to themes/sage/resources
68 | *
69 | * We do this so that the Template Hierarchy will look in themes/sage/resources/views for core WordPress themes
70 | * But functions.php, style.css, and index.php are all still located in themes/sage/resources
71 | *
72 | * This is not compatible with the WordPress Customizer theme preview prior to theme activation
73 | *
74 | * get_template_directory() -> /srv/www/example.com/current/web/app/themes/sage/resources
75 | * get_stylesheet_directory() -> /srv/www/example.com/current/web/app/themes/sage/resources
76 | * locate_template()
77 | * ├── STYLESHEETPATH -> /srv/www/example.com/current/web/app/themes/sage/resources/views
78 | * └── TEMPLATEPATH -> /srv/www/example.com/current/web/app/themes/sage/resources
79 | */
80 | array_map(
81 | 'add_filter',
82 | ['theme_file_path', 'theme_file_uri', 'parent_theme_file_path', 'parent_theme_file_uri'],
83 | array_fill(0, 4, 'dirname')
84 | );
85 | Container::getInstance()
86 | ->bindIf('config', function () {
87 | return new Config([
88 | 'assets' => require dirname(__DIR__).'/config/assets.php',
89 | 'theme' => require dirname(__DIR__).'/config/theme.php',
90 | 'view' => require dirname(__DIR__).'/config/view.php',
91 | ]);
92 | }, true);
93 |
--------------------------------------------------------------------------------
/web/app/themes/sage/app/helpers.php:
--------------------------------------------------------------------------------
1 | bound($abstract)
22 | ? $container->makeWith($abstract, $parameters)
23 | : $container->makeWith("sage.{$abstract}", $parameters);
24 | }
25 |
26 | /**
27 | * Get / set the specified configuration value.
28 | *
29 | * If an array is passed as the key, we will assume you want to set an array of values.
30 | *
31 | * @param array|string $key
32 | * @param mixed $default
33 | * @return mixed|\Roots\Sage\Config
34 | * @copyright Taylor Otwell
35 | * @link https://github.com/laravel/framework/blob/c0970285/src/Illuminate/Foundation/helpers.php#L254-L265
36 | */
37 | function config($key = null, $default = null)
38 | {
39 | if (is_null($key)) {
40 | return sage('config');
41 | }
42 | if (is_array($key)) {
43 | return sage('config')->set($key);
44 | }
45 | return sage('config')->get($key, $default);
46 | }
47 |
48 | /**
49 | * @param string $file
50 | * @param array $data
51 | * @return string
52 | */
53 | function template($file, $data = [])
54 | {
55 | return sage('blade')->render($file, $data);
56 | }
57 |
58 | /**
59 | * Retrieve path to a compiled blade view
60 | * @param $file
61 | * @param array $data
62 | * @return string
63 | */
64 | function template_path($file, $data = [])
65 | {
66 | return sage('blade')->compiledPath($file, $data);
67 | }
68 |
69 | /**
70 | * @param $asset
71 | * @return string
72 | */
73 | function asset_path($asset)
74 | {
75 | return sage('assets')->getUri($asset);
76 | }
77 |
78 | /**
79 | * @param string|string[] $templates Possible template files
80 | * @return array
81 | */
82 | function filter_templates($templates)
83 | {
84 | $paths = apply_filters('sage/filter_templates/paths', [
85 | 'views',
86 | 'resources/views'
87 | ]);
88 | $paths_pattern = "#^(" . implode('|', $paths) . ")/#";
89 |
90 | return collect($templates)
91 | ->map(function ($template) use ($paths_pattern) {
92 | /** Remove .blade.php/.blade/.php from template names */
93 | $template = preg_replace('#\.(blade\.?)?(php)?$#', '', ltrim($template));
94 |
95 | /** Remove partial $paths from the beginning of template names */
96 | if (strpos($template, '/')) {
97 | $template = preg_replace($paths_pattern, '', $template);
98 | }
99 |
100 | return $template;
101 | })
102 | ->flatMap(function ($template) use ($paths) {
103 | return collect($paths)
104 | ->flatMap(function ($path) use ($template) {
105 | return [
106 | "{$path}/{$template}.blade.php",
107 | "{$path}/{$template}.php",
108 | ];
109 | })
110 | ->concat([
111 | "{$template}.blade.php",
112 | "{$template}.php",
113 | ]);
114 | })
115 | ->filter()
116 | ->unique()
117 | ->all();
118 | }
119 |
120 | /**
121 | * @param string|string[] $templates Relative path to possible template files
122 | * @return string Location of the template
123 | */
124 | function locate_template($templates)
125 | {
126 | return \locate_template(filter_templates($templates));
127 | }
128 |
129 | /**
130 | * Determine whether to show the sidebar
131 | * @return bool
132 | */
133 | function display_sidebar()
134 | {
135 | static $display;
136 | isset($display) || $display = apply_filters('sage/display_sidebar', false);
137 | return $display;
138 | }
139 |
--------------------------------------------------------------------------------
/config/application.php:
--------------------------------------------------------------------------------
1 | load();
30 | $dotenv->required(['WP_HOME', 'WP_SITEURL']);
31 | if (!env('DATABASE_URL')) {
32 | $dotenv->required(['DB_NAME', 'DB_USER', 'DB_PASSWORD']);
33 | }
34 | }
35 |
36 | /**
37 | * Set up our global environment constant and load its config first
38 | * Default: production
39 | */
40 | define('WP_ENV', env('WP_ENV') ?: 'production');
41 |
42 | /**
43 | * URLs
44 | */
45 | Config::define('WP_HOME', env('WP_HOME'));
46 | Config::define('WP_SITEURL', env('WP_SITEURL'));
47 |
48 | /**
49 | * Custom Content Directory
50 | */
51 | Config::define('CONTENT_DIR', '/app');
52 | Config::define('WP_CONTENT_DIR', $webroot_dir . Config::get('CONTENT_DIR'));
53 | Config::define('WP_CONTENT_URL', Config::get('WP_HOME') . Config::get('CONTENT_DIR'));
54 |
55 | /**
56 | * DB settings
57 | */
58 | Config::define('DB_NAME', env('DB_NAME'));
59 | Config::define('DB_USER', env('DB_USER'));
60 | Config::define('DB_PASSWORD', env('DB_PASSWORD'));
61 | Config::define('DB_HOST', env('DB_HOST') ?: 'localhost');
62 | Config::define('DB_CHARSET', 'utf8mb4');
63 | Config::define('DB_COLLATE', '');
64 | $table_prefix = env('DB_PREFIX') ?: 'wp_';
65 |
66 | if (env('DATABASE_URL')) {
67 | $dsn = (object) parse_url(env('DATABASE_URL'));
68 |
69 | Config::define('DB_NAME', substr($dsn->path, 1));
70 | Config::define('DB_USER', $dsn->user);
71 | Config::define('DB_PASSWORD', isset($dsn->pass) ? $dsn->pass : null);
72 | Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host);
73 | }
74 |
75 | /**
76 | * Authentication Unique Keys and Salts
77 | */
78 | Config::define('AUTH_KEY', env('AUTH_KEY'));
79 | Config::define('SECURE_AUTH_KEY', env('SECURE_AUTH_KEY'));
80 | Config::define('LOGGED_IN_KEY', env('LOGGED_IN_KEY'));
81 | Config::define('NONCE_KEY', env('NONCE_KEY'));
82 | Config::define('AUTH_SALT', env('AUTH_SALT'));
83 | Config::define('SECURE_AUTH_SALT', env('SECURE_AUTH_SALT'));
84 | Config::define('LOGGED_IN_SALT', env('LOGGED_IN_SALT'));
85 | Config::define('NONCE_SALT', env('NONCE_SALT'));
86 |
87 | /**
88 | * Custom Settings
89 | */
90 | Config::define('AUTOMATIC_UPDATER_DISABLED', true);
91 | Config::define('DISABLE_WP_CRON', env('DISABLE_WP_CRON') ?: false);
92 | // Disable the plugin and theme file editor in the admin
93 | Config::define('DISALLOW_FILE_EDIT', true);
94 | // Disable plugin and theme updates and installation from the admin
95 | Config::define('DISALLOW_FILE_MODS', true);
96 |
97 | /**
98 | * Debugging Settings
99 | */
100 | Config::define('WP_DEBUG_DISPLAY', false);
101 | Config::define('SCRIPT_DEBUG', false);
102 | ini_set('display_errors', 0);
103 |
104 | /**
105 | * Allow WordPress to detect HTTPS when used behind a reverse proxy or a load balancer
106 | * See https://codex.wordpress.org/Function_Reference/is_ssl#Notes
107 | */
108 | if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
109 | $_SERVER['HTTPS'] = 'on';
110 | }
111 |
112 | $env_config = __DIR__ . '/environments/' . WP_ENV . '.php';
113 |
114 | if (file_exists($env_config)) {
115 | require_once $env_config;
116 | }
117 |
118 | Config::apply();
119 |
120 | /**
121 | * Bootstrap WordPress
122 | */
123 | if (!defined('ABSPATH')) {
124 | define('ABSPATH', $webroot_dir . '/wp/');
125 | }
126 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Lando/Bedrock/Sage Wordpress Base
2 |
3 | This is a modern code base for wordpress development that should be used as the base for all new wordpress projects. It implements:
4 |
5 | * Lando (docker) for easy local site setup on any OS. https://docs.devwithlando.io/
6 | * Bedrock for dependancy management of wordpress and plugins. https://roots.io/bedrock/
7 | * Sage for a modern theme development setup using bootstrap, scss and blade templating. https://roots.io/sage/
8 |
9 | Please leave this repo as you would wish to find it and when starting a new project first make any relevant updates to the base before branching off and creating your own project.
10 |
11 |
12 |
13 | ## Installation
14 |
15 | This installation guide already assumes that you have both Docker and Lando installed. To install both of these please Visit:
16 | * https://hub.docker.com/signup
17 | * https://docs.devwithlando.io/installation/macos.html
18 | * https://docs.devwithlando.io/installation/linux.html
19 | * https://docs.devwithlando.io/installation/windows.html
20 |
21 |
22 |
23 | ### Download the repo
24 | First off your going to need to download the repository localy. Open up your terminal and Head to whichever folder you would like the project to be created.
25 | ```
26 | git clone https://github.com/sam-g-roberts/docker-lando-wordpress-bedrock.git
27 | cd docker-lando-wordpress-bedrock
28 | ```
29 |
30 | if you need to make changes to the core repo before creating your new project do it now. Otherwise do.
31 | ```
32 | git remote remove origin
33 | ```
34 |
35 |
36 |
37 | ### Spin up lando
38 | You might want to now go into the .lando.yml in the root and change the name as this is what your local url will be based off of.
39 |
40 | Now lets get your site running locally on lando. There's alot of work involved in this one...
41 | ```
42 | lando start
43 | ```
44 |
45 | Done. to see all lando commands just type and enter the below into the terminal
46 | ```
47 | lando
48 | ```
49 |
50 |
51 |
52 | ### Add your site and connection details
53 | First off go to the root of the repo and copy .env.example into a new file called .env This is an enviroment variables file.
54 |
55 | Your going to need to add some database details and also the url for your site. To find out the url and your database connection details type and enter the below into the terminal.
56 | ```
57 | lando info
58 | ```
59 |
60 | you'll notice database connections has internal and external. You would use the external details for somehting like sequel pro and internal details on your local
61 |
62 | Add these connection details to your env AND change the WP_HOME to the url from your lando info
63 |
64 | ```
65 | DB_NAME=wordpress
66 | DB_USER=wordpress
67 | DB_PASSWORD=wordpress
68 | DB_HOST=database
69 | ```
70 |
71 |
72 | ### Install dependencies
73 | Now lets start getting the guts installed
74 |
75 | To install wordpress the plugins and any other php dependencies run
76 | ```
77 | lando composer install
78 | ```
79 |
80 | Now lets head into the theme folder and install their dependencies as well
81 | ```
82 | cd web/app/themes/sage
83 | lando composer install
84 | lando yarn
85 | ```
86 |
87 |
88 | ### Compiling assets and watching them
89 | Run the below to get your assets compiling
90 | ```
91 | lando yarn build
92 | lando yarn start
93 | ```
94 |
95 | ### Visit your site and setup the db
96 | Final Step!! Now you just need to go to /wp-admin on the site url that lando has created for you and setup your WP site creds
97 |
98 | Once that is done please active the theme and plugins
99 |
100 | ## Fini!!!
101 |
102 |
103 |
104 |
105 |
106 | # Production considerations
107 | For using on production you should setup git hooks to compile the assets on deployment using the same methods above, lando is irrelevant on production though so exclude the lando prefix on all the commands
108 |
109 | You could also setup post isntall scripts in the composer .json so you only need to deploy the code to the server then run the compoaser install (server will also need to be running node)
110 |
111 | You'll also need to make /web the public root the traffice goes to this should already have an .htaccess in it
112 |
113 | The server will also need enviroment variables setup like local.
114 |
115 |
116 |
--------------------------------------------------------------------------------
/web/app/themes/sage/app/setup.php:
--------------------------------------------------------------------------------
1 | __('Primary Navigation', 'sage')
48 | ]);
49 |
50 | /**
51 | * Enable post thumbnails
52 | * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
53 | */
54 | add_theme_support('post-thumbnails');
55 |
56 | /**
57 | * Enable HTML5 markup support
58 | * @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
59 | */
60 | add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
61 |
62 | /**
63 | * Enable selective refresh for widgets in customizer
64 | * @link https://developer.wordpress.org/themes/advanced-topics/customizer-api/#theme-support-in-sidebars
65 | */
66 | add_theme_support('customize-selective-refresh-widgets');
67 |
68 | /**
69 | * Use main stylesheet for visual editor
70 | * @see resources/assets/styles/layouts/_tinymce.scss
71 | */
72 | add_editor_style(asset_path('styles/main.css'));
73 | }, 20);
74 |
75 | /**
76 | * Register sidebars
77 | */
78 | add_action('widgets_init', function () {
79 | $config = [
80 | 'before_widget' => '',
82 | 'before_title' => '
111 |
112 | ## Community
113 |
114 | Keep track of development and community news.
115 |
116 | * Participate on the [Roots Discourse](https://discourse.roots.io/)
117 | * Follow [@rootswp on Twitter](https://twitter.com/rootswp)
118 | * Read and subscribe to the [Roots Blog](https://roots.io/blog/)
119 | * Subscribe to the [Roots Newsletter](https://roots.io/subscribe/)
120 | * Listen to the [Roots Radio podcast](https://roots.io/podcast/)
121 |
--------------------------------------------------------------------------------
/web/app/mu-plugins/bedrock-autoloader.php:
--------------------------------------------------------------------------------
1 | loadPlugins();
64 | }
65 |
66 | /**
67 | * Run some checks then autoload our plugins.
68 | */
69 | public function loadPlugins()
70 | {
71 | $this->checkCache();
72 | $this->validatePlugins();
73 | $this->countPlugins();
74 |
75 | array_map(static function () {
76 | include_once WPMU_PLUGIN_DIR . '/' . func_get_args()[0];
77 | }, array_keys(self::$cache['plugins']));
78 |
79 | $this->pluginHooks();
80 | }
81 |
82 | /**
83 | * Filter show_advanced_plugins to display the autoloaded plugins.
84 | * @param $show bool Whether to show the advanced plugins for the specified plugin type.
85 | * @param $type string The plugin type, i.e., `mustuse` or `dropins`
86 | * @return bool We return `false` to prevent WordPress from overriding our work
87 | * {@internal We add the plugin details ourselves, so we return false to disable the filter.}
88 | */
89 | public function showInAdmin($show, $type)
90 | {
91 | $screen = get_current_screen();
92 | $current = is_multisite() ? 'plugins-network' : 'plugins';
93 |
94 | if ($screen->base !== $current || $type !== 'mustuse' || !current_user_can('activate_plugins')) {
95 | return $show;
96 | }
97 |
98 | $this->updateCache();
99 |
100 | self::$auto_plugins = array_map(function ($auto_plugin) {
101 | $auto_plugin['Name'] .= ' *';
102 | return $auto_plugin;
103 | }, self::$auto_plugins);
104 |
105 | $GLOBALS['plugins']['mustuse'] = array_unique(array_merge(self::$auto_plugins, self::$mu_plugins), SORT_REGULAR);
106 |
107 | return false;
108 | }
109 |
110 | /**
111 | * This sets the cache or calls for an update
112 | */
113 | private function checkCache()
114 | {
115 | $cache = get_site_option('bedrock_autoloader');
116 |
117 | if ($cache === false || (isset($cache['plugins'], $cache['count']) && count($cache['plugins']) !== $cache['count'])) {
118 | $this->updateCache();
119 | return;
120 | }
121 |
122 | self::$cache = $cache;
123 | }
124 |
125 | /**
126 | * Get the plugins and mu-plugins from the mu-plugin path and remove duplicates.
127 | * Check cache against current plugins for newly activated plugins.
128 | * After that, we can update the cache.
129 | */
130 | private function updateCache()
131 | {
132 | require_once ABSPATH . 'wp-admin/includes/plugin.php';
133 |
134 | self::$auto_plugins = get_plugins(self::$relative_path);
135 | self::$mu_plugins = get_mu_plugins();
136 | $plugins = array_diff_key(self::$auto_plugins, self::$mu_plugins);
137 | $rebuild = !is_array(self::$cache['plugins']);
138 | self::$activated = $rebuild ? $plugins : array_diff_key($plugins, self::$cache['plugins']);
139 | self::$cache = ['plugins' => $plugins, 'count' => $this->countPlugins()];
140 |
141 | update_site_option('bedrock_autoloader', self::$cache);
142 | }
143 |
144 | /**
145 | * This accounts for the plugin hooks that would run if the plugins were
146 | * loaded as usual. Plugins are removed by deletion, so there's no way
147 | * to deactivate or uninstall.
148 | */
149 | private function pluginHooks()
150 | {
151 | if (!is_array(self::$activated)) {
152 | return;
153 | }
154 |
155 | foreach (self::$activated as $plugin_file => $plugin_info) {
156 | do_action('activate_' . $plugin_file);
157 | }
158 | }
159 |
160 | /**
161 | * Check that the plugin file exists, if it doesn't update the cache.
162 | */
163 | private function validatePlugins()
164 | {
165 | foreach (self::$cache['plugins'] as $plugin_file => $plugin_info) {
166 | if (!file_exists(WPMU_PLUGIN_DIR . '/' . $plugin_file)) {
167 | $this->updateCache();
168 | break;
169 | }
170 | }
171 | }
172 |
173 | /**
174 | * Count the number of autoloaded plugins.
175 | *
176 | * Count our plugins (but only once) by counting the top level folders in the
177 | * mu-plugins dir. If it's more or less than last time, update the cache.
178 | *
179 | * @return int Number of autoloaded plugins.
180 | */
181 | private function countPlugins()
182 | {
183 | if (isset(self::$count)) {
184 | return self::$count;
185 | }
186 |
187 | $count = count(glob(WPMU_PLUGIN_DIR . '/*/', GLOB_ONLYDIR | GLOB_NOSORT));
188 |
189 | if (!isset(self::$cache['count']) || $count !== self::$cache['count']) {
190 | self::$count = $count;
191 | $this->updateCache();
192 | }
193 |
194 | return self::$count;
195 | }
196 | }
197 |
198 | new Autoloader();
199 |
--------------------------------------------------------------------------------
/web/app/themes/sage/resources/assets/build/webpack.config.js:
--------------------------------------------------------------------------------
1 | 'use strict'; // eslint-disable-line
2 |
3 | const webpack = require('webpack');
4 | const merge = require('webpack-merge');
5 | const CleanPlugin = require('clean-webpack-plugin');
6 | const ExtractTextPlugin = require('extract-text-webpack-plugin');
7 | const StyleLintPlugin = require('stylelint-webpack-plugin');
8 | const CopyGlobsPlugin = require('copy-globs-webpack-plugin');
9 | const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
10 |
11 | const desire = require('./util/desire');
12 | const config = require('./config');
13 |
14 | const assetsFilenames = (config.enabled.cacheBusting) ? config.cacheBusting : '[name]';
15 |
16 | let webpackConfig = {
17 | context: config.paths.assets,
18 | entry: config.entry,
19 | devtool: (config.enabled.sourceMaps ? '#source-map' : undefined),
20 | output: {
21 | path: config.paths.dist,
22 | publicPath: config.publicPath,
23 | filename: `scripts/${assetsFilenames}.js`,
24 | },
25 | stats: {
26 | hash: false,
27 | version: false,
28 | timings: false,
29 | children: false,
30 | errors: false,
31 | errorDetails: false,
32 | warnings: false,
33 | chunks: false,
34 | modules: false,
35 | reasons: false,
36 | source: false,
37 | publicPath: false,
38 | },
39 | module: {
40 | rules: [
41 | {
42 | enforce: 'pre',
43 | test: /\.js$/,
44 | include: config.paths.assets,
45 | use: 'eslint',
46 | },
47 | {
48 | enforce: 'pre',
49 | test: /\.(js|s?[ca]ss)$/,
50 | include: config.paths.assets,
51 | loader: 'import-glob',
52 | },
53 | {
54 | test: /\.js$/,
55 | exclude: [/node_modules(?)/],
56 | use: [
57 | { loader: 'cache' },
58 | { loader: 'buble', options: { objectAssign: 'Object.assign' } },
59 | ],
60 | },
61 | {
62 | test: /\.css$/,
63 | include: config.paths.assets,
64 | use: ExtractTextPlugin.extract({
65 | fallback: 'style',
66 | use: [
67 | { loader: 'cache' },
68 | { loader: 'css', options: { sourceMap: config.enabled.sourceMaps } },
69 | {
70 | loader: 'postcss', options: {
71 | config: { path: __dirname, ctx: config },
72 | sourceMap: config.enabled.sourceMaps,
73 | },
74 | },
75 | ],
76 | }),
77 | },
78 | {
79 | test: /\.scss$/,
80 | include: config.paths.assets,
81 | use: ExtractTextPlugin.extract({
82 | fallback: 'style',
83 | use: [
84 | { loader: 'cache' },
85 | { loader: 'css', options: { sourceMap: config.enabled.sourceMaps } },
86 | {
87 | loader: 'postcss', options: {
88 | config: { path: __dirname, ctx: config },
89 | sourceMap: config.enabled.sourceMaps,
90 | },
91 | },
92 | { loader: 'resolve-url', options: { sourceMap: config.enabled.sourceMaps } },
93 | {
94 | loader: 'sass', options: {
95 | sourceMap: config.enabled.sourceMaps,
96 | sourceComments: true,
97 | },
98 | },
99 | ],
100 | }),
101 | },
102 | {
103 | test: /\.(ttf|otf|eot|woff2?|png|jpe?g|gif|svg|ico)$/,
104 | include: config.paths.assets,
105 | loader: 'url',
106 | options: {
107 | limit: 4096,
108 | name: `[path]${assetsFilenames}.[ext]`,
109 | },
110 | },
111 | {
112 | test: /\.(ttf|otf|eot|woff2?|png|jpe?g|gif|svg|ico)$/,
113 | include: /node_modules/,
114 | loader: 'url',
115 | options: {
116 | limit: 4096,
117 | outputPath: 'vendor/',
118 | name: `${config.cacheBusting}.[ext]`,
119 | },
120 | },
121 | ],
122 | },
123 | resolve: {
124 | modules: [
125 | config.paths.assets,
126 | 'node_modules',
127 | ],
128 | enforceExtension: false,
129 | },
130 | resolveLoader: {
131 | moduleExtensions: ['-loader'],
132 | },
133 | externals: {
134 | jquery: 'jQuery',
135 | },
136 | plugins: [
137 | new CleanPlugin([config.paths.dist], {
138 | root: config.paths.root,
139 | verbose: false,
140 | }),
141 | /**
142 | * It would be nice to switch to copy-webpack-plugin, but
143 | * unfortunately it doesn't provide a reliable way of
144 | * tracking the before/after file names
145 | */
146 | new CopyGlobsPlugin({
147 | pattern: config.copy,
148 | output: `[path]${assetsFilenames}.[ext]`,
149 | manifest: config.manifest,
150 | }),
151 | new ExtractTextPlugin({
152 | filename: `styles/${assetsFilenames}.css`,
153 | allChunks: true,
154 | disable: (config.enabled.watcher),
155 | }),
156 | new webpack.ProvidePlugin({
157 | $: 'jquery',
158 | jQuery: 'jquery',
159 | 'window.jQuery': 'jquery',
160 | Popper: 'popper.js/dist/umd/popper.js',
161 | }),
162 | new webpack.LoaderOptionsPlugin({
163 | minimize: config.enabled.optimize,
164 | debug: config.enabled.watcher,
165 | stats: { colors: true },
166 | }),
167 | new webpack.LoaderOptionsPlugin({
168 | test: /\.s?css$/,
169 | options: {
170 | output: { path: config.paths.dist },
171 | context: config.paths.assets,
172 | },
173 | }),
174 | new webpack.LoaderOptionsPlugin({
175 | test: /\.js$/,
176 | options: {
177 | eslint: { failOnWarning: false, failOnError: true },
178 | },
179 | }),
180 | new StyleLintPlugin({
181 | failOnError: !config.enabled.watcher,
182 | syntax: 'scss',
183 | }),
184 | new FriendlyErrorsWebpackPlugin(),
185 | ],
186 | };
187 |
188 | /* eslint-disable global-require */ /** Let's only load dependencies as needed */
189 |
190 | if (config.enabled.optimize) {
191 | webpackConfig = merge(webpackConfig, require('./webpack.config.optimize'));
192 | }
193 |
194 | if (config.env.production) {
195 | webpackConfig.plugins.push(new webpack.NoEmitOnErrorsPlugin());
196 | }
197 |
198 | if (config.enabled.cacheBusting) {
199 | const WebpackAssetsManifest = require('webpack-assets-manifest');
200 |
201 | webpackConfig.plugins.push(
202 | new WebpackAssetsManifest({
203 | output: 'assets.json',
204 | space: 2,
205 | writeToDisk: false,
206 | assets: config.manifest,
207 | replacer: require('./util/assetManifestsFormatter'),
208 | })
209 | );
210 | }
211 |
212 | if (config.enabled.watcher) {
213 | webpackConfig.entry = require('./util/addHotMiddleware')(webpackConfig.entry);
214 | webpackConfig = merge(webpackConfig, require('./webpack.config.watch'));
215 | }
216 |
217 | /**
218 | * During installation via sage-installer (i.e. composer create-project) some
219 | * presets may generate a preset specific config (webpack.config.preset.js) to
220 | * override some of the default options set here. We use webpack-merge to merge
221 | * them in. If you need to modify Sage's default webpack config, we recommend
222 | * that you modify this file directly, instead of creating your own preset
223 | * file, as there are limitations to using webpack-merge which can hinder your
224 | * ability to change certain options.
225 | */
226 | module.exports = merge.smartStrategy({
227 | 'module.loaders': 'replace',
228 | })(webpackConfig, desire(`${__dirname}/webpack.config.preset`));
229 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ### 1.12.6: 2019-05-21
2 |
3 | * Update to WordPress 5.2.1 ([#436](https://github.com/roots/bedrock/pull/436))
4 |
5 | ### 1.12.5: 2019-05-14
6 |
7 | * Disable WordPress' built-in fatal error handler on development ([#432](https://github.com/roots/bedrock/pull/434))
8 |
9 | ### 1.12.4: 2019-05-07
10 |
11 | * Update to WordPress 5.2 ([#432](https://github.com/roots/bedrock/pull/432))
12 | * Configure WP-CLI `wp server` webroot ([#427](https://github.com/roots/bedrock/pull/427))
13 | * Fix issue with `bedrock_autoloader` option ([#386](https://github.com/roots/bedrock/pull/386))
14 |
15 | ### 1.12.3: 2019-03-13
16 |
17 | * Update to WordPress 5.1.1 ([#426](https://github.com/roots/bedrock/pull/426))
18 |
19 | ### 1.12.2: 2019-02-21
20 |
21 | * Update to WordPress 5.1 ([#420](https://github.com/roots/bedrock/pull/420))
22 |
23 | ### 1.12.1: 2019-02-14
24 |
25 | * Update `vlucas/phpdotenv` ([#417](https://github.com/roots/bedrock/pull/417))
26 | * Make DSN implementation more uniform ([#415](https://github.com/roots/bedrock/pull/415))
27 |
28 | ### 1.12.0: 2019-02-07
29 |
30 | * Support database DSN ([#414](https://github.com/roots/bedrock/pull/414))
31 | * Detect HTTPS if WordPress is behind a reverse proxy ([#413](https://github.com/roots/bedrock/pull/413))
32 | * Update `vlucas/phpdotenv` to `^3` ([#412](https://github.com/roots/bedrock/pull/412))
33 |
34 | ### 1.11.1: 2019-01-09
35 |
36 | * Update to WordPress 5.0.3 ([#408](https://github.com/roots/bedrock/pull/408))
37 |
38 | ### 1.11.0: 2018-12-19
39 |
40 | * Bump PHP requirement to >= 7.1 ([#405](https://github.com/roots/bedrock/pull/405))
41 |
42 | ### 1.10.2: 2018-12-19
43 |
44 | * Update to WordPress 5.0.2 ([#406](https://github.com/roots/bedrock/pull/406))
45 |
46 | ### 1.10.1: 2018-12-12
47 |
48 | * Update to WordPress 5.0.1 ([#403](https://github.com/roots/bedrock/pull/403))
49 |
50 | ### 1.10.0: 2018-12-09
51 |
52 | * Update to WordPress 5.0, switch from `johnpbloch/wordpress` to `roots/wordpress` package ([#395](https://github.com/roots/bedrock/pull/395))
53 |
54 | ### 1.9.0: 2018-09-17
55 |
56 | * Fix error display in development environments ([c457082](https://github.com/roots/bedrock/commit/c457082cf4b153400d3e34f4f68a30eea4cc7c38))
57 | * --prefer-dist on roave/security-advisories ([#381](https://github.com/roots/bedrock/pull/381))
58 | * New Bedrock Configuration Model ([#380](https://github.com/roots/bedrock/pull/380))
59 | * Remove vendor/.gitkeep ([#379](https://github.com/roots/bedrock/pull/379))
60 | * Composer 1.7.0 lockfile ([#378](https://github.com/roots/bedrock/pull/378))
61 | * Adds roave/security-advisories to composer dev deps ([#376](https://github.com/roots/bedrock/pull/376))
62 |
63 | ### 1.8.12: 2018-08-03
64 |
65 | * Update to WordPress 4.9.8
66 |
67 | ### 1.8.11: 2018-07-09
68 |
69 | * Update to WordPress 4.9.7
70 |
71 | ### 1.8.10: 2018-05-18
72 |
73 | * Update to WordPress 4.9.6
74 |
75 | ### 1.8.9: 2018-04-04
76 |
77 | * Update to WordPress 4.9.5
78 |
79 | ### 1.8.8: 2018-02-06
80 |
81 | * Update to WordPress 4.9.4
82 |
83 | ### 1.8.7: 2018-02-05
84 |
85 | * Update to WordPress 4.9.3
86 |
87 | ### 1.8.6: 2018-01-16
88 |
89 | * Update to WordPress 4.9.2
90 |
91 | ### 1.8.5: 2017-11-29
92 |
93 | * Update to WordPress 4.9.1
94 |
95 | ### 1.8.4: 2017-11-16
96 |
97 | * Update to WordPress 4.9.0
98 |
99 | ### 1.8.3: 2017-10-31
100 |
101 | * Update to WordPress 4.8.3
102 |
103 | ### 1.8.2: 2017-09-19
104 |
105 | * Update to WordPress 4.8.2
106 |
107 | ### 1.8.1: 2017-08-02
108 |
109 | * Update to WordPress 4.8.1
110 |
111 | ### 1.8.0: 2017-06-08
112 |
113 | * Update to WordPress 4.8.0
114 |
115 | ### 1.7.9: 2017-05-16
116 |
117 | * Update to WordPress 4.7.5
118 |
119 | ### 1.7.8: 2017-05-03
120 |
121 | * Update `johnpbloch/wordpress` to 4.7.4.1 (see https://github.com/johnpbloch/wordpress/issues/32)
122 |
123 | ### 1.7.7: 2017-04-20
124 |
125 | * Update to WordPress 4.7.4
126 |
127 | ### 1.7.6: 2017-03-06
128 |
129 | * Update to WordPress 4.7.3
130 |
131 | ### 1.7.5: 2017-01-26
132 |
133 | * Update to WordPress 4.7.2
134 |
135 | ### 1.7.4: 2017-01-11
136 |
137 | * Update to WordPress 4.7.1
138 | * Add Optional variables to `.env.example`
139 | * Remove unnecessary gitignore rules ([#286](https://github.com/roots/bedrock/pull/286))
140 |
141 | ### 1.7.3: 2016-12-06
142 |
143 | * Update to WordPress 4.7
144 | * Default `WP_ENV` to `production` instead of `development` ([#277](https://github.com/roots/bedrock/pull/277))
145 |
146 | ### 1.7.2: 2016-09-07
147 |
148 | * Update to WordPress 4.6.1
149 |
150 | ### 1.7.1: 2016-08-16
151 |
152 | * Update to WordPress 4.6
153 |
154 | ### 1.7.0: 2016-07-10
155 |
156 | * Bump PHP requirement to >= 5.6 (5.5 is no longer supported)
157 |
158 | ### 1.6.4: 2016-06-21
159 |
160 | * Update to WordPress 4.5.3
161 |
162 | ### 1.6.3: 2016-05-06
163 |
164 | * Update to WordPress 4.5.2
165 |
166 | ### 1.6.2: 2016-04-26
167 |
168 | * Update to WordPress 4.5.1
169 |
170 | ### 1.6.1: 2016-04-12
171 |
172 | * Update to WordPress 4.5
173 | * Update coding standards (PSR-2) ([#244](https://github.com/roots/bedrock/pull/244))
174 |
175 | ### 1.6.0: 2016-03-03
176 |
177 | * Add wp-password-bcrypt for more secure passwords ([#243](https://github.com/roots/bedrock/pull/243))
178 |
179 | ### 1.5.4: 2016-02-29
180 |
181 | * Use HTTPS for wpackagist.org
182 |
183 | ### 1.5.3: 2016-02-03
184 |
185 | * Update to WordPress 4.4.2
186 |
187 | ### 1.5.2: 2016-02-01
188 |
189 | * Bump `composer/installers` dependency to 1.0.23 to fix deprecation notice
190 |
191 | ### 1.5.1: 2016-01-27
192 |
193 | * Use [oscarotero/env](https://github.com/oscarotero/env) instead of `getenv` ([#229](https://github.com/roots/bedrock/pull/233))
194 |
195 | ### 1.5.0: 2016-01-17
196 |
197 | * Fix `DISABLE_WP_CRON` setting via ENV variable ([#229](https://github.com/roots/bedrock/pull/229))
198 | * Set default `DB_CHARSET` to `utf8mb4`
199 |
200 | ### 1.4.7: 2016-01-07
201 |
202 | * Update to WordPress 4.4.1
203 |
204 | ### 1.4.6: 2015-12-09
205 |
206 | * Update to WordPress 4.4
207 |
208 | ### 1.4.5: 2015-09-16
209 |
210 | * Update to WordPress 4.3.1
211 | * Bump minimum required PHP version to 5.5 ([#201](https://github.com/roots/bedrock/pull/201))
212 |
213 | ### 1.4.4: 2015-08-18
214 |
215 | * Update to WordPress 4.3
216 |
217 | ### 1.4.3: 2015-08-04
218 |
219 | * Update to WordPress 4.2.4
220 |
221 | ### 1.4.2: 2015-07-24
222 |
223 | * Update to WordPress 4.2.3
224 |
225 | ### 1.4.1: 2015-06-30
226 |
227 | * Dotenv 2.0.1 update
228 |
229 | ### 1.4.0: 2015-06-07
230 |
231 | * Removed .env generation script
232 |
233 | ### 1.3.7: 2015-05-07
234 |
235 | * Update to WordPress 4.2.2
236 |
237 | ### 1.3.6: 2015-04-27
238 |
239 | * Update to WordPress 4.2.1
240 |
241 | ### 1.3.5: 2015-04-23
242 |
243 | * Update to WordPress 4.2
244 | * Update to WordPress 4.1.2
245 | * Don't register theme directory if `WP_DEFAULT_THEME` is defined
246 | * Move Capistrano configs to https://github.com/roots/bedrock-capistrano
247 |
248 | ### 1.3.4: 2015-02-18
249 |
250 | * WordPress 4.1.1 fix
251 |
252 | ### 1.3.3: 2015-02-18
253 |
254 | * Update to WordPress 4.1.1
255 | * mu-plugins autoloader Multisite fix
256 | * Coding standards update + TravisCI integration
257 |
258 | ### 1.3.2: 2014-12-18
259 |
260 | * Update to WordPress 4.1
261 | * Remove WPLANG constant
262 |
263 | ### 1.3.1: 2014-11-28
264 |
265 | * Add Capistrano task to fix/update WP theme paths after deploys
266 |
267 | ### 1.3.0: 2014-11-20
268 |
269 | * Update to WordPress 4.0.1
270 | * Use johnpbloch/wordpress package instead of custom repository
271 | * Update default deploy.rb
272 | * Require PHP >= 5.4 in composer.json
273 | * Better PSR-1 adherence
274 | * Update phpdotenv dependency to 1.0.9
275 | * Fix Composer installer path plugin order
276 | * Add bedrock-autoloader mu-plugin
277 |
278 | ### 1.2.7: 2014-09-04
279 |
280 | * Update to WordPress 4.0
281 |
282 | ### 1.2.6: 2014-08-06
283 |
284 | * Update to WordPress 3.9.2
285 | * Minor deploy fix
286 | * Doc updates
287 |
288 | ### 1.2.5: 2014-07-16
289 |
290 | * Update to WordPress 3.9.1
291 | * Doc updates
292 | * Add `DB_PREFIX` constant
293 | * Update Gem versions
294 | * Disallow indexing in non-production environments
295 |
296 | ### 1.2.4: 2014-04-17
297 |
298 | * Fixes issue with 3.9 update (`composer.lock` wasn't updated)
299 |
300 | ### 1.2.3: 2014-04-16
301 |
302 | * Update to WordPress 3.9
303 |
304 | ### 1.2.2: 2014-04-14
305 |
306 | * Update to WordPress 3.8.3
307 | * Only run `Dotenv::load` if `.env` file exists
308 |
309 | ### 1.2.1: 2014-04-08
310 |
311 | * Update to WordPress 3.8.2
312 |
313 | ### 1.2.0: 2014-04-07
314 |
315 | * WP package now has `wordpress` vendor name: `wordpress/wordpress`
316 | * Remove wp-cli and add `wp-cli.yml` config
317 |
318 | ### 1.1.1: 2014-03-11
319 |
320 | * Update phpdotenv to 1.0.6
321 | * Update wp-cli to v0.14.1
322 | * Update README to refence new WordPress Packagist namespaces
323 | * Fix uploads path in `linked_dirs` for Capistrano deploys
324 |
325 | ### 1.1.0: 2014-03-01
326 |
327 | * Update to Capistrano 3.1.0: `deploy:restart` is no longer run by default
328 | * Better webroot structure: introduces the `/web` directory as the document/web root for web server vhosts
329 |
330 | ### 1.0.0: 2013-12-18
331 |
332 | * Initial release
333 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "a9772e642055110fce9d72321a68b876",
8 | "packages": [
9 | {
10 | "name": "composer/installers",
11 | "version": "v1.6.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/composer/installers.git",
15 | "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b",
20 | "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "composer-plugin-api": "^1.0"
25 | },
26 | "replace": {
27 | "roundcube/plugin-installer": "*",
28 | "shama/baton": "*"
29 | },
30 | "require-dev": {
31 | "composer/composer": "1.0.*@dev",
32 | "phpunit/phpunit": "^4.8.36"
33 | },
34 | "type": "composer-plugin",
35 | "extra": {
36 | "class": "Composer\\Installers\\Plugin",
37 | "branch-alias": {
38 | "dev-master": "1.0-dev"
39 | }
40 | },
41 | "autoload": {
42 | "psr-4": {
43 | "Composer\\Installers\\": "src/Composer/Installers"
44 | }
45 | },
46 | "notification-url": "https://packagist.org/downloads/",
47 | "license": [
48 | "MIT"
49 | ],
50 | "authors": [
51 | {
52 | "name": "Kyle Robinson Young",
53 | "email": "kyle@dontkry.com",
54 | "homepage": "https://github.com/shama"
55 | }
56 | ],
57 | "description": "A multi-framework Composer library installer",
58 | "homepage": "https://composer.github.io/installers/",
59 | "keywords": [
60 | "Craft",
61 | "Dolibarr",
62 | "Eliasis",
63 | "Hurad",
64 | "ImageCMS",
65 | "Kanboard",
66 | "Lan Management System",
67 | "MODX Evo",
68 | "Mautic",
69 | "Maya",
70 | "OXID",
71 | "Plentymarkets",
72 | "Porto",
73 | "RadPHP",
74 | "SMF",
75 | "Thelia",
76 | "WolfCMS",
77 | "agl",
78 | "aimeos",
79 | "annotatecms",
80 | "attogram",
81 | "bitrix",
82 | "cakephp",
83 | "chef",
84 | "cockpit",
85 | "codeigniter",
86 | "concrete5",
87 | "croogo",
88 | "dokuwiki",
89 | "drupal",
90 | "eZ Platform",
91 | "elgg",
92 | "expressionengine",
93 | "fuelphp",
94 | "grav",
95 | "installer",
96 | "itop",
97 | "joomla",
98 | "kohana",
99 | "laravel",
100 | "lavalite",
101 | "lithium",
102 | "magento",
103 | "majima",
104 | "mako",
105 | "mediawiki",
106 | "modulework",
107 | "modx",
108 | "moodle",
109 | "osclass",
110 | "phpbb",
111 | "piwik",
112 | "ppi",
113 | "puppet",
114 | "pxcms",
115 | "reindex",
116 | "roundcube",
117 | "shopware",
118 | "silverstripe",
119 | "sydes",
120 | "symfony",
121 | "typo3",
122 | "wordpress",
123 | "yawik",
124 | "zend",
125 | "zikula"
126 | ],
127 | "time": "2018-08-27T06:10:37+00:00"
128 | },
129 | {
130 | "name": "oscarotero/env",
131 | "version": "v1.2.0",
132 | "source": {
133 | "type": "git",
134 | "url": "https://github.com/oscarotero/env.git",
135 | "reference": "4ab45ce5c1f2c62549208426bfa20a3d5fa008c6"
136 | },
137 | "dist": {
138 | "type": "zip",
139 | "url": "https://api.github.com/repos/oscarotero/env/zipball/4ab45ce5c1f2c62549208426bfa20a3d5fa008c6",
140 | "reference": "4ab45ce5c1f2c62549208426bfa20a3d5fa008c6",
141 | "shasum": ""
142 | },
143 | "require": {
144 | "ext-ctype": "*",
145 | "php": ">=5.2"
146 | },
147 | "type": "library",
148 | "autoload": {
149 | "psr-0": {
150 | "Env": "src/"
151 | }
152 | },
153 | "notification-url": "https://packagist.org/downloads/",
154 | "license": [
155 | "MIT"
156 | ],
157 | "authors": [
158 | {
159 | "name": "Oscar Otero",
160 | "email": "oom@oscarotero.com",
161 | "homepage": "http://oscarotero.com",
162 | "role": "Developer"
163 | }
164 | ],
165 | "description": "Simple library to consume environment variables",
166 | "homepage": "https://github.com/oscarotero/env",
167 | "keywords": [
168 | "env"
169 | ],
170 | "time": "2019-04-03T18:28:43+00:00"
171 | },
172 | {
173 | "name": "phpoption/phpoption",
174 | "version": "1.5.0",
175 | "source": {
176 | "type": "git",
177 | "url": "https://github.com/schmittjoh/php-option.git",
178 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
179 | },
180 | "dist": {
181 | "type": "zip",
182 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
183 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
184 | "shasum": ""
185 | },
186 | "require": {
187 | "php": ">=5.3.0"
188 | },
189 | "require-dev": {
190 | "phpunit/phpunit": "4.7.*"
191 | },
192 | "type": "library",
193 | "extra": {
194 | "branch-alias": {
195 | "dev-master": "1.3-dev"
196 | }
197 | },
198 | "autoload": {
199 | "psr-0": {
200 | "PhpOption\\": "src/"
201 | }
202 | },
203 | "notification-url": "https://packagist.org/downloads/",
204 | "license": [
205 | "Apache2"
206 | ],
207 | "authors": [
208 | {
209 | "name": "Johannes M. Schmitt",
210 | "email": "schmittjoh@gmail.com"
211 | }
212 | ],
213 | "description": "Option Type for PHP",
214 | "keywords": [
215 | "language",
216 | "option",
217 | "php",
218 | "type"
219 | ],
220 | "time": "2015-07-25T16:39:46+00:00"
221 | },
222 | {
223 | "name": "roots/wordpress",
224 | "version": "5.2.1",
225 | "source": {
226 | "type": "git",
227 | "url": "https://github.com/WordPress/WordPress.git",
228 | "reference": "5.2.1"
229 | },
230 | "dist": {
231 | "type": "zip",
232 | "url": "https://api.github.com/repos/WordPress/WordPress/zipball/5.2.1",
233 | "reference": "5.2.1"
234 | },
235 | "require": {
236 | "php": ">=5.3.2",
237 | "roots/wordpress-core-installer": ">=1.0.0"
238 | },
239 | "type": "wordpress-core",
240 | "notification-url": "https://packagist.org/downloads/",
241 | "license": [
242 | "GPL-2.0-or-later"
243 | ],
244 | "authors": [
245 | {
246 | "name": "WordPress Community",
247 | "homepage": "https://wordpress.org/about/"
248 | }
249 | ],
250 | "description": "WordPress is web software you can use to create a beautiful website or blog.",
251 | "homepage": "https://wordpress.org/",
252 | "keywords": [
253 | "blog",
254 | "cms",
255 | "wordpress"
256 | ],
257 | "time": "2019-05-21T19:53:10+00:00"
258 | },
259 | {
260 | "name": "roots/wordpress-core-installer",
261 | "version": "1.1.0",
262 | "source": {
263 | "type": "git",
264 | "url": "https://github.com/roots/wordpress-core-installer.git",
265 | "reference": "83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80"
266 | },
267 | "dist": {
268 | "type": "zip",
269 | "url": "https://api.github.com/repos/roots/wordpress-core-installer/zipball/83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80",
270 | "reference": "83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80",
271 | "shasum": ""
272 | },
273 | "require": {
274 | "composer-plugin-api": "^1.0"
275 | },
276 | "conflict": {
277 | "composer/installers": "<1.0.6"
278 | },
279 | "replace": {
280 | "johnpbloch/wordpress-core-installer": "*"
281 | },
282 | "require-dev": {
283 | "composer/composer": "^1.0",
284 | "phpunit/phpunit": ">=4.8.35"
285 | },
286 | "type": "composer-plugin",
287 | "extra": {
288 | "class": "Roots\\Composer\\WordPressCorePlugin"
289 | },
290 | "autoload": {
291 | "psr-4": {
292 | "Roots\\Composer\\": "src/"
293 | }
294 | },
295 | "notification-url": "https://packagist.org/downloads/",
296 | "license": [
297 | "GPL-2.0-or-later"
298 | ],
299 | "authors": [
300 | {
301 | "name": "John P. Bloch",
302 | "email": "me@johnpbloch.com"
303 | },
304 | {
305 | "name": "Roots",
306 | "email": "team@roots.io"
307 | }
308 | ],
309 | "description": "A custom installer to handle deploying WordPress with composer",
310 | "keywords": [
311 | "wordpress"
312 | ],
313 | "time": "2018-12-10T00:22:15+00:00"
314 | },
315 | {
316 | "name": "roots/wp-config",
317 | "version": "1.0.0",
318 | "source": {
319 | "type": "git",
320 | "url": "https://github.com/roots/wp-config.git",
321 | "reference": "37c38230796119fb487fa03346ab0706ce6d4962"
322 | },
323 | "dist": {
324 | "type": "zip",
325 | "url": "https://api.github.com/repos/roots/wp-config/zipball/37c38230796119fb487fa03346ab0706ce6d4962",
326 | "reference": "37c38230796119fb487fa03346ab0706ce6d4962",
327 | "shasum": ""
328 | },
329 | "require": {
330 | "php": ">=5.6"
331 | },
332 | "require-dev": {
333 | "php-coveralls/php-coveralls": "^2.1",
334 | "phpunit/phpunit": "^5.7",
335 | "roave/security-advisories": "dev-master",
336 | "squizlabs/php_codesniffer": "^3.3"
337 | },
338 | "type": "library",
339 | "autoload": {
340 | "psr-4": {
341 | "Roots\\WPConfig\\": "src"
342 | }
343 | },
344 | "notification-url": "https://packagist.org/downloads/",
345 | "license": [
346 | "MIT"
347 | ],
348 | "authors": [
349 | {
350 | "name": "Austin Pray",
351 | "email": "austin@austinpray.com"
352 | }
353 | ],
354 | "description": "Collect configuration values and safely define() them",
355 | "time": "2018-08-10T14:18:38+00:00"
356 | },
357 | {
358 | "name": "roots/wp-password-bcrypt",
359 | "version": "1.0.0",
360 | "source": {
361 | "type": "git",
362 | "url": "https://github.com/roots/wp-password-bcrypt.git",
363 | "reference": "5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa"
364 | },
365 | "dist": {
366 | "type": "zip",
367 | "url": "https://api.github.com/repos/roots/wp-password-bcrypt/zipball/5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa",
368 | "reference": "5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa",
369 | "shasum": ""
370 | },
371 | "require": {
372 | "composer/installers": "~1.0",
373 | "php": ">=5.5.0"
374 | },
375 | "require-dev": {
376 | "brain/monkey": "^1.3.1",
377 | "mockery/mockery": "^0.9.4",
378 | "phpunit/phpunit": "^4.8.23|^5.2.9",
379 | "squizlabs/php_codesniffer": "^2.5.1"
380 | },
381 | "type": "library",
382 | "autoload": {
383 | "files": [
384 | "wp-password-bcrypt.php"
385 | ]
386 | },
387 | "notification-url": "https://packagist.org/downloads/",
388 | "license": [
389 | "MIT"
390 | ],
391 | "authors": [
392 | {
393 | "name": "Scott Walkinshaw",
394 | "email": "scott.walkinshaw@gmail.com",
395 | "homepage": "https://github.com/swalkinshaw"
396 | },
397 | {
398 | "name": "qwp6t",
399 | "homepage": "https://github.com/qwp6t"
400 | },
401 | {
402 | "name": "Jan Pingel",
403 | "email": "jpingel@bitpiston.com",
404 | "homepage": "http://janpingel.com"
405 | }
406 | ],
407 | "description": "WordPress plugin which replaces wp_hash_password and wp_check_password's phpass hasher with PHP 5.5's password_hash and password_verify using bcrypt.",
408 | "homepage": "https://roots.io/plugins/wp-password-bcrypt",
409 | "keywords": [
410 | "wordpress wp bcrypt password"
411 | ],
412 | "time": "2016-03-01T16:27:06+00:00"
413 | },
414 | {
415 | "name": "symfony/polyfill-ctype",
416 | "version": "v1.11.0",
417 | "source": {
418 | "type": "git",
419 | "url": "https://github.com/symfony/polyfill-ctype.git",
420 | "reference": "82ebae02209c21113908c229e9883c419720738a"
421 | },
422 | "dist": {
423 | "type": "zip",
424 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
425 | "reference": "82ebae02209c21113908c229e9883c419720738a",
426 | "shasum": ""
427 | },
428 | "require": {
429 | "php": ">=5.3.3"
430 | },
431 | "suggest": {
432 | "ext-ctype": "For best performance"
433 | },
434 | "type": "library",
435 | "extra": {
436 | "branch-alias": {
437 | "dev-master": "1.11-dev"
438 | }
439 | },
440 | "autoload": {
441 | "psr-4": {
442 | "Symfony\\Polyfill\\Ctype\\": ""
443 | },
444 | "files": [
445 | "bootstrap.php"
446 | ]
447 | },
448 | "notification-url": "https://packagist.org/downloads/",
449 | "license": [
450 | "MIT"
451 | ],
452 | "authors": [
453 | {
454 | "name": "Symfony Community",
455 | "homepage": "https://symfony.com/contributors"
456 | },
457 | {
458 | "name": "Gert de Pagter",
459 | "email": "BackEndTea@gmail.com"
460 | }
461 | ],
462 | "description": "Symfony polyfill for ctype functions",
463 | "homepage": "https://symfony.com",
464 | "keywords": [
465 | "compatibility",
466 | "ctype",
467 | "polyfill",
468 | "portable"
469 | ],
470 | "time": "2019-02-06T07:57:58+00:00"
471 | },
472 | {
473 | "name": "vlucas/phpdotenv",
474 | "version": "v3.3.3",
475 | "source": {
476 | "type": "git",
477 | "url": "https://github.com/vlucas/phpdotenv.git",
478 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde"
479 | },
480 | "dist": {
481 | "type": "zip",
482 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde",
483 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde",
484 | "shasum": ""
485 | },
486 | "require": {
487 | "php": "^5.4 || ^7.0",
488 | "phpoption/phpoption": "^1.5",
489 | "symfony/polyfill-ctype": "^1.9"
490 | },
491 | "require-dev": {
492 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0"
493 | },
494 | "type": "library",
495 | "extra": {
496 | "branch-alias": {
497 | "dev-master": "3.3-dev"
498 | }
499 | },
500 | "autoload": {
501 | "psr-4": {
502 | "Dotenv\\": "src/"
503 | }
504 | },
505 | "notification-url": "https://packagist.org/downloads/",
506 | "license": [
507 | "BSD-3-Clause"
508 | ],
509 | "authors": [
510 | {
511 | "name": "Vance Lucas",
512 | "email": "vance@vancelucas.com",
513 | "homepage": "http://www.vancelucas.com"
514 | }
515 | ],
516 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
517 | "keywords": [
518 | "dotenv",
519 | "env",
520 | "environment"
521 | ],
522 | "time": "2019-03-06T09:39:45+00:00"
523 | }
524 | ],
525 | "packages-dev": [
526 | {
527 | "name": "roave/security-advisories",
528 | "version": "dev-master",
529 | "source": {
530 | "type": "git",
531 | "url": "https://github.com/Roave/SecurityAdvisories.git",
532 | "reference": "4c0ba8a35f1f12dd9236452e9fae4346b0bf2a56"
533 | },
534 | "dist": {
535 | "type": "zip",
536 | "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4c0ba8a35f1f12dd9236452e9fae4346b0bf2a56",
537 | "reference": "4c0ba8a35f1f12dd9236452e9fae4346b0bf2a56",
538 | "shasum": ""
539 | },
540 | "conflict": {
541 | "3f/pygmentize": "<1.2",
542 | "adodb/adodb-php": "<5.20.12",
543 | "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
544 | "amphp/artax": "<1.0.6|>=2,<2.0.6",
545 | "amphp/http": "<1.0.1",
546 | "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
547 | "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
548 | "aws/aws-sdk-php": ">=3,<3.2.1",
549 | "brightlocal/phpwhois": "<=4.2.5",
550 | "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
551 | "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
552 | "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
553 | "cartalyst/sentry": "<=2.1.6",
554 | "codeigniter/framework": "<=3.0.6",
555 | "composer/composer": "<=1-alpha.11",
556 | "contao-components/mediaelement": ">=2.14.2,<2.21.1",
557 | "contao/core": ">=2,<3.5.39",
558 | "contao/core-bundle": ">=4,<4.4.39|>=4.5,<4.7.5",
559 | "contao/listing-bundle": ">=4,<4.4.8",
560 | "contao/newsletter-bundle": ">=4,<4.1",
561 | "david-garcia/phpwhois": "<=4.3.1",
562 | "doctrine/annotations": ">=1,<1.2.7",
563 | "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
564 | "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
565 | "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
566 | "doctrine/doctrine-bundle": "<1.5.2",
567 | "doctrine/doctrine-module": "<=0.7.1",
568 | "doctrine/mongodb-odm": ">=1,<1.0.2",
569 | "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
570 | "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
571 | "dompdf/dompdf": ">=0.6,<0.6.2",
572 | "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1",
573 | "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1",
574 | "erusev/parsedown": "<1.7.2",
575 | "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1",
576 | "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3",
577 | "ezsystems/repository-forms": ">=2.3,<2.3.2.1",
578 | "ezyang/htmlpurifier": "<4.1.1",
579 | "firebase/php-jwt": "<2",
580 | "fooman/tcpdf": "<6.2.22",
581 | "fossar/tcpdf-parser": "<6.2.22",
582 | "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
583 | "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
584 | "fuel/core": "<1.8.1",
585 | "gree/jose": "<=2.2",
586 | "gregwar/rst": "<1.0.3",
587 | "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
588 | "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
589 | "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30",
590 | "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29",
591 | "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
592 | "ivankristianto/phpwhois": "<=4.3",
593 | "james-heinrich/getid3": "<1.9.9",
594 | "joomla/session": "<1.3.1",
595 | "jsmitty12/phpwhois": "<5.1",
596 | "kazist/phpwhois": "<=4.2.6",
597 | "kreait/firebase-php": ">=3.2,<3.8.1",
598 | "la-haute-societe/tcpdf": "<6.2.22",
599 | "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30",
600 | "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
601 | "league/commonmark": "<0.18.3",
602 | "magento/magento1ce": "<1.9.4.1",
603 | "magento/magento1ee": ">=1.9,<1.14.4.1",
604 | "magento/product-community-edition": ">=2,<2.2.8|>=2.3,<2.3.1",
605 | "monolog/monolog": ">=1.8,<1.12",
606 | "namshi/jose": "<2.2",
607 | "onelogin/php-saml": "<2.10.4",
608 | "openid/php-openid": "<2.3",
609 | "oro/crm": ">=1.7,<1.7.4",
610 | "oro/platform": ">=1.7,<1.7.4",
611 | "padraic/humbug_get_contents": "<1.1.2",
612 | "pagarme/pagarme-php": ">=0,<3",
613 | "paragonie/random_compat": "<2",
614 | "paypal/merchant-sdk-php": "<3.12",
615 | "pear/archive_tar": "<1.4.4",
616 | "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6",
617 | "phpoffice/phpexcel": "<=1.8.1",
618 | "phpoffice/phpspreadsheet": "<=1.5",
619 | "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
620 | "phpwhois/phpwhois": "<=4.2.5",
621 | "phpxmlrpc/extras": "<0.6.1",
622 | "propel/propel": ">=2-alpha.1,<=2-alpha.7",
623 | "propel/propel1": ">=1,<=1.7.1",
624 | "pusher/pusher-php-server": "<2.2.1",
625 | "robrichards/xmlseclibs": ">=1,<3.0.2",
626 | "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
627 | "sensiolabs/connect": "<4.2.3",
628 | "serluck/phpwhois": "<=4.2.6",
629 | "shopware/shopware": "<5.3.7",
630 | "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11",
631 | "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
632 | "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.0.7|>=4.1,<4.1.5|>=4.2,<4.2.4|>=4.3,<4.3.1",
633 | "silverstripe/userforms": "<3",
634 | "simple-updates/phpwhois": "<=1",
635 | "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
636 | "simplesamlphp/simplesamlphp": "<1.15.2|>=1.16,<1.16.3",
637 | "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
638 | "slim/slim": "<2.6",
639 | "smarty/smarty": "<3.1.33",
640 | "socalnick/scn-social-auth": "<1.15.2",
641 | "spoonity/tcpdf": "<6.2.22",
642 | "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
643 | "stormpath/sdk": ">=0,<9.9.99",
644 | "swiftmailer/swiftmailer": ">=4,<5.4.5",
645 | "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
646 | "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
647 | "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
648 | "sylius/sylius": ">=1,<1.1.18|>=1.2,<1.2.17|>=1.3,<1.3.12|>=1.4,<1.4.4",
649 | "symfony/cache": ">=3.2,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
650 | "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
651 | "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
652 | "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
653 | "symfony/http-foundation": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
654 | "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8",
655 | "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
656 | "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
657 | "symfony/polyfill": ">=1,<1.10",
658 | "symfony/polyfill-php55": ">=1,<1.10",
659 | "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
660 | "symfony/routing": ">=2,<2.0.19",
661 | "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
662 | "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
663 | "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7",
664 | "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
665 | "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
666 | "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
667 | "symfony/serializer": ">=2,<2.0.11",
668 | "symfony/symfony": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
669 | "symfony/translation": ">=2,<2.0.17",
670 | "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
671 | "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
672 | "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
673 | "tecnickcom/tcpdf": "<6.2.22",
674 | "thelia/backoffice-default-template": ">=2.1,<2.1.2",
675 | "thelia/thelia": ">=2.1-beta.1,<2.1.3",
676 | "theonedemon/phpwhois": "<=4.2.5",
677 | "titon/framework": ">=0,<9.9.99",
678 | "truckersmp/phpwhois": "<=4.3.1",
679 | "twig/twig": "<1.38|>=2,<2.7",
680 | "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.25|>=9,<9.5.6",
681 | "typo3/cms-core": ">=8,<8.7.25|>=9,<9.5.6",
682 | "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
683 | "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
684 | "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
685 | "ua-parser/uap-php": "<3.8",
686 | "wallabag/tcpdf": "<6.2.22",
687 | "willdurand/js-translation-bundle": "<2.1.1",
688 | "yiisoft/yii": ">=1.1.14,<1.1.15",
689 | "yiisoft/yii2": "<2.0.15",
690 | "yiisoft/yii2-bootstrap": "<2.0.4",
691 | "yiisoft/yii2-dev": "<2.0.15",
692 | "yiisoft/yii2-elasticsearch": "<2.0.5",
693 | "yiisoft/yii2-gii": "<2.0.4",
694 | "yiisoft/yii2-jui": "<2.0.4",
695 | "yiisoft/yii2-redis": "<2.0.8",
696 | "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
697 | "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
698 | "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
699 | "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
700 | "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
701 | "zendframework/zend-diactoros": ">=1,<1.8.4",
702 | "zendframework/zend-feed": ">=1,<2.10.3",
703 | "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
704 | "zendframework/zend-http": ">=1,<2.8.1",
705 | "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
706 | "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
707 | "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
708 | "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
709 | "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
710 | "zendframework/zend-validator": ">=2.3,<2.3.6",
711 | "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
712 | "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
713 | "zendframework/zendframework": "<2.5.1",
714 | "zendframework/zendframework1": "<1.12.20",
715 | "zendframework/zendopenid": ">=2,<2.0.2",
716 | "zendframework/zendxml": ">=1,<1.0.1",
717 | "zetacomponents/mail": "<1.8.2",
718 | "zf-commons/zfc-user": "<1.2.2",
719 | "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
720 | "zfr/zfr-oauth2-server-module": "<0.1.2"
721 | },
722 | "type": "metapackage",
723 | "notification-url": "https://packagist.org/downloads/",
724 | "license": [
725 | "MIT"
726 | ],
727 | "authors": [
728 | {
729 | "name": "Marco Pivetta",
730 | "email": "ocramius@gmail.com",
731 | "role": "maintainer"
732 | }
733 | ],
734 | "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
735 | "time": "2019-05-23T20:42:12+00:00"
736 | },
737 | {
738 | "name": "squizlabs/php_codesniffer",
739 | "version": "3.4.2",
740 | "source": {
741 | "type": "git",
742 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
743 | "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8"
744 | },
745 | "dist": {
746 | "type": "zip",
747 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
748 | "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
749 | "shasum": ""
750 | },
751 | "require": {
752 | "ext-simplexml": "*",
753 | "ext-tokenizer": "*",
754 | "ext-xmlwriter": "*",
755 | "php": ">=5.4.0"
756 | },
757 | "require-dev": {
758 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
759 | },
760 | "bin": [
761 | "bin/phpcs",
762 | "bin/phpcbf"
763 | ],
764 | "type": "library",
765 | "extra": {
766 | "branch-alias": {
767 | "dev-master": "3.x-dev"
768 | }
769 | },
770 | "notification-url": "https://packagist.org/downloads/",
771 | "license": [
772 | "BSD-3-Clause"
773 | ],
774 | "authors": [
775 | {
776 | "name": "Greg Sherwood",
777 | "role": "lead"
778 | }
779 | ],
780 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
781 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
782 | "keywords": [
783 | "phpcs",
784 | "standards"
785 | ],
786 | "time": "2019-04-10T23:49:02+00:00"
787 | }
788 | ],
789 | "aliases": [],
790 | "minimum-stability": "stable",
791 | "stability-flags": {
792 | "roave/security-advisories": 20
793 | },
794 | "prefer-stable": false,
795 | "prefer-lowest": false,
796 | "platform": {
797 | "php": ">=7.1",
798 | "ext-gd": "*",
799 | "ext-mbstring": "*"
800 | },
801 | "platform-dev": []
802 | }
803 |
--------------------------------------------------------------------------------
/web/app/themes/sage/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ### 9.0.9: February 13th, 2019
2 | * Update to Bootstrap 4.3.1 ([#2153](https://github.com/roots/sage/pull/2153))
3 |
4 | ### 9.0.8: February 11th, 2019
5 | * Update to Bootstrap 4.3.0 ([#2152](https://github.com/roots/sage/pull/2152))
6 | * Filter template hierarchy for embed templates ([#2145](https://github.com/roots/sage/pull/2145))
7 | * Decrease optipng level ([#2143](https://github.com/roots/sage/pull/2143))
8 | * Unescape post titles ([#2141](https://github.com/roots/sage/pull/2141))
9 |
10 | ### 9.0.7: December 28th, 2018
11 | * Update sage-installer which now allows to opt-in for sending framework selection data ([#2137](https://github.com/roots/sage/pull/2137))
12 |
13 | ### 9.0.6: December 21st, 2018
14 | * Update to Bootstrap 4.2.1 ([#2136](https://github.com/roots/sage/pull/2136))
15 | * Do not ignore vendors for plugins ([#2132](https://github.com/roots/sage/pull/2132))
16 | * Fix stylelint and eslint validation errors ([#2131](https://github.com/roots/sage/pull/2131))
17 | * Hook run sequence fix ([#2123](https://github.com/roots/sage/pull/2123))
18 | * Dispatch event when firing routes ([#2080](https://github.com/roots/sage/pull/2080))
19 | * Normalize and enforce single quotes ([#2076](https://github.com/roots/sage/pull/2076))
20 |
21 | ### 9.0.5: September 17th, 2018
22 | * Workaround for Bootstrap incompatibility with webpack. Fixes #2017 ([e72b490](https://github.com/roots/sage/commit/e72b4906264551dc00cd0890de74ae2bce0d77c8))
23 |
24 | ### 9.0.4: September 7th, 2018
25 | * Force `illuminate/support` to `5.6.*` ([#2112](https://github.com/roots/sage/pull/2112))
26 |
27 | ### 9.0.3: September 7th, 2018
28 | * Revert "Add searchform partial and function to replace default WordPress functionality" ([#2110](https://github.com/roots/sage/pull/2110))
29 | * Unescape get_language_attributes() ([#2108](https://github.com/roots/sage/pull/2108))
30 | * Add data from controller to comments template ([#2100](https://github.com/roots/sage/pull/2100))
31 |
32 | ### 9.0.2: August 21st, 2018
33 | * Update to Bootstrap 4.1.3 ([#2097](https://github.com/roots/sage/pull/2097))
34 | * Comments template fix ([#2095](https://github.com/roots/sage/pull/2095))
35 | * UglifyJs: Change the ecma option from 8 to 5 ([#2092](https://github.com/roots/sage/pull/2092))
36 | * Add searchform partial and function to replace default WordPress functionality ([#2090](https://github.com/roots/sage/pull/2090))
37 | * Change language_attributes() to get_language_attributes() ([#2089](https://github.com/roots/sage/pull/2089))
38 | * Fix missing comment-reply JS ([#2085](https://github.com/roots/sage/pull/2085))
39 | * Use better merge method for Webpack Preset config ([#2084](https://github.com/roots/sage/pull/2084))
40 | * Add support for preset specific Webpack config ([#2083](https://github.com/roots/sage/pull/2083))
41 | * Enable Sass comments and run prefixing before minification ([#2078](https://github.com/roots/sage/pull/2078))
42 | * Set removeViewBox to 'false' in webpack's optimization settings ([#2075](https://github.com/roots/sage/pull/2075))
43 | * Add uglifyjs plugin ([#2070](https://github.com/roots/sage/pull/2070))
44 | * Make template() compatible with wp admin ([#2068](https://github.com/roots/sage/pull/2068))
45 | * Upgrade to Controller 2.1.0 ([#2025](https://github.com/roots/sage/pull/2025))
46 |
47 | ### 9.0.1: April 30th, 2018
48 | * Update to Bootstrap 4.1.1 ([#2065](https://github.com/roots/sage/pull/2065))
49 | * Auto-detect `proxyUrl` scheme ([#2062](https://github.com/roots/sage/pull/2062))
50 | * Bump to Laravel 5.6 ([#2061](https://github.com/roots/sage/pull/2061))
51 | * Update to Bootstrap 4.1.0 ([#2056](https://github.com/roots/sage/pull/2056))
52 | * Change inline `@php` directive to full form ([#2042](https://github.com/roots/sage/pull/2042))
53 | * PHP 7.1.3+ is now required ([#2037](https://github.com/roots/sage/pull/2037))
54 |
55 | ### 9.0.0: February 7th, 2018
56 | * Update to Bootstrap 4 ([#2015](https://github.com/roots/sage/pull/2015))
57 | * Allow `no-console` development ([#2008](https://github.com/roots/sage/pull/2008))
58 | * Move variables and Bootstrap lines to autoload ([#1993](https://github.com/roots/sage/pull/1993))
59 | * Update controller examples ([#1986](https://github.com/roots/sage/pull/1986))
60 | * Update to Bootstrap 4 Beta 2 ([#1981](https://github.com/roots/sage/pull/1981))
61 | * Add friendly-errors-webpack-plugin ([#1961](https://github.com/roots/sage/pull/1961))
62 | * Update to Controller 9.0.0-beta.4 ([#1959](https://github.com/roots/sage/pull/1959))
63 | * Change default Controller path to `app/controllers/` ([#1954](https://github.com/roots/sage/pull/1954))
64 | * Fix `lint:styles` task with cmd.exe ([#1955](https://github.com/roots/sage/pull/1955))
65 | * Ensure template filenames are without path and extension ([#1941](https://github.com/roots/sage/pull/1941))
66 | * Moved `title()` helper to `app.php` controller ([#1912](https://github.com/roots/sage/pull/1912))
67 | * Fix `lint:styles` script not matching files in deep subdirectories ([#1951](https://github.com/roots/sage/pull/1951))
68 | * Fix for plugins that don't enqueue their scripts properly ([#1949](https://github.com/roots/sage/pull/1949))
69 | * Fix Popper for Bootstrap 4 ([#1946](https://github.com/roots/sage/pull/1946))
70 |
71 | ### 9.0.0-beta.4: August 11th, 2017
72 | * Update to Bootstrap 4.0.0-beta ([#1943](https://github.com/roots/sage/pull/1943))
73 | * PHP 7+ is now required ([#1935](https://github.com/roots/sage/pull/1935))
74 | * Update dependencies, support `config-local.json`, implement autoload system for styles/scripts, use `roots/sage-installer`, use `roots/sage-lib` ([#1919](https://github.com/roots/sage/pull/1919))
75 | * Add soberwp/controller ([#1903](https://github.com/roots/sage/pull/1903))
76 | * Change syntax of template call to match other files in views ([#1908](https://github.com/roots/sage/pull/1908))
77 | * Add Tachyons as a CSS framework option ([#1867](https://github.com/roots/sage/pull/1867))
78 | * Remove post format reference in template call ([#1904](https://github.com/roots/sage/pull/1904))
79 | * Update inline documentation to reflect correct theme file locations ([#1890](https://github.com/roots/sage/pull/1890))
80 | * Optimize CSS Assets safe = true ([#1901](https://github.com/roots/sage/pull/1901))
81 | * Update Autoprefixer and standardize browserlist location ([#1899](https://github.com/roots/sage/pull/1899))
82 | * Do not redirect for WP-CLI ([#1891](https://github.com/roots/sage/pull/1891))
83 | * Illuminate: container make with parameters ([#1888](https://github.com/roots/sage/pull/1888))
84 | * Add Stylelint for linting stylesheets ([#1885](https://github.com/roots/sage/pull/1885))
85 |
86 | ### 9.0.0-beta.3: April 21st, 2017
87 | * Move required theme files to `sage/resources` ([#1877](https://github.com/roots/sage/pull/1877))
88 | * Move `src/` to `app/` ([#1868](https://github.com/roots/sage/pull/1868))
89 | * Move `templates/` to `resources/views/`, move `assets/` to `resources/assets/`, rename `base.blade.php` to `app.blade.php` ([#1864](https://github.com/roots/sage/pull/1864))
90 | * Add option to configure build settings ([#1822](https://github.com/roots/sage/pull/1822))
91 | * Add support for HTML injection ([#1817](https://github.com/roots/sage/pull/1817))
92 | * Add Tachyons as a CSS framework option ([#1867](https://github.com/roots/sage/pull/1867))
93 |
94 | ### 9.0.0-beta.2: January 19th, 2017
95 | * Fix Browersync ([#1815](https://github.com/roots/sage/pull/1815))
96 | * Add option to select CSS framework, add Foundation as an option ([#1813](https://github.com/roots/sage/pull/1813))
97 | * Add option to add Font Awesome ([#1812](https://github.com/roots/sage/pull/1812))
98 | * Add option to change theme file headers ([#1811](https://github.com/roots/sage/pull/1811))
99 | * Add option to remove Bootstrap ([#1810](https://github.com/roots/sage/pull/1810))
100 | * Remove Font Awesome ([#1809](https://github.com/roots/sage/pull/1809))
101 | * Remove grid defaults ([#1808](https://github.com/roots/sage/pull/1808))
102 | * Fix for `publicPath` ([#1806](https://github.com/roots/sage/pull/1806))
103 | * Update clean task name ([#1800](https://github.com/roots/sage/pull/1800))
104 | * Allow browser versions to be configured in `config.json` ([#1798](https://github.com/roots/sage/pull/1798))
105 | * Use stock ESLint ([#1796](https://github.com/roots/sage/pull/1796))
106 |
107 | ### 9.0.0-beta.1: January 10th, 2017
108 | * Update to Bootstrap 4 Alpha 6 ([#1792](https://github.com/roots/sage/pull/1792))
109 | * Add Blade ([#1765](https://github.com/roots/sage/pull/1765) and [#1777](https://github.com/roots/sage/pull/1777))
110 | * Remove sidebar defaults ([#1760](https://github.com/roots/sage/pull/1760))
111 | * Remove post formats ([#1759](https://github.com/roots/sage/pull/1759))
112 |
113 | ### 9.0.0-alpha.4: November 16th, 2016
114 | * Use new webpack api schema ([8ac5f15](https://github.com/roots/sage/commit/e6e60aa))
115 | * Update dependencies ([70ebba7](https://github.com/roots/sage/commit/70ebba7))
116 | * Variables organization ([8ac5f15](https://github.com/roots/sage/commit/8ac5f15))
117 | * Use `$.fn.ready()` (reverts [724d550](https://github.com/roots/sage/commit/724d550)) ([e7fccbe](https://github.com/roots/sage/commit/e7fccbe))
118 | * Theme activation updates 'stylesheet' option instead of 'template' ([fb19145](https://github.com/roots/sage/commit/fb19145))
119 | * Reorganize and refactor build routine ([8c9ba05](https://github.com/roots/sage/commit/8c9ba05))
120 | * Switch assets manifest plugin ([c1bb2b3](https://github.com/roots/sage/commit/c1bb2b3))
121 | * Add images to assets manifest ([c49793c](https://github.com/roots/sage/commit/c49793c))
122 | * Switch from babel to buble ([0d38ab8](https://github.com/roots/sage/commit/0d38ab8))
123 | * Update dependencies & webpack compatibility ([eae52fd](https://github.com/roots/sage/commit/eae52fd))
124 | * Use http by default (not https) to be consistent with Trellis ([e6f2f49](https://github.com/roots/sage/commit/e6f2f49))
125 |
126 | ### 9.0.0-alpha.3: September 11th, 2016
127 | * Fix webpack HMR ([#1713](https://github.com/roots/sage/issues/1713))
128 | * Remove minor edits from CHANGELOG.md ([3516629](https://github.com/roots/sage/commit/3516629))
129 |
130 | ### 9.0.0-alpha.2: September 4th, 2016
131 | * Refactor build routine ([#1703](https://github.com/roots/sage/pull/1703))
132 | * Update `_grid.scss` to use `@include make-col-ready()` mixin ([#1706](https://github.com/roots/sage/pull/1706))
133 |
134 | ### 9.0.0-alpha.1: August 30th, 2016
135 | * Move assets found in `node_modules/` to `dist/vendor`, simpler `assets/config.json` ([#1697](https://github.com/roots/sage/pull/1697))
136 | * Set dynamically absolute public path ([#1696](https://github.com/roots/sage/pull/1696))
137 | * Load Tether ([#1686](https://github.com/roots/sage/pull/1686))
138 | * Squash asset pipeline bugs ([4d58f88](https://github.com/roots/sage/commit/4d58f88))
139 | * Update dependencies, incl Bootstrap 4 alpha 3 ([447c24d](https://github.com/roots/sage/commit/447c24d))
140 | * Fix path to stylesheet in `add_editor_style` ([#1684](https://github.com/roots/sage/pull/1684))
141 | * Update required Node.js version ([72b2d89](https://github.com/roots/sage/commit/72b2d89))
142 | * Router doesn't require jQuery, use default params ([339cc8e](https://github.com/roots/sage/commit/339cc8e))
143 | * Fix display of theme name in Customizer ([3425386](https://github.com/roots/sage/commit/3425386))
144 | * Convert scripts to ES6 ([f34af48](https://github.com/roots/sage/commit/f34af48))
145 | * Refactor functions.php ([eae36be](https://github.com/roots/sage/commit/eae36be))
146 | * Rework template wrapper, bring back template_part() ([#1678](https://github.com/roots/sage/pull/1678))
147 | * Remove unused static variable in Wrapper ([9bfdd5a](https://github.com/roots/sage/commit/9bfdd5a))
148 | * Remove `path.extname()` check ([#1673](https://github.com/roots/sage/pull/1673))
149 | * Updated to align with the Bootstrap 4 docs ([#1667](https://github.com/roots/sage/pull/1667))
150 | * Add `npm prune` to Travis CI ([#1663](https://github.com/roots/sage/pull/1663))
151 | * Bootstrap NPM ^4.0.0-alpha.2 ([#1650](https://github.com/roots/sage/pull/1650))
152 | * Fix Bootstrap 4 styles ([#1642](https://github.com/roots/sage/pull/1642))
153 | * Fix autoloader load order issue when including Sage 9 via composer.json in Bedrock ([#1628](https://github.com/roots/sage/pull/1628))
154 | * `is_page_template()` requires the name of the subfolder ([#1626](https://github.com/roots/sage/pull/1626))
155 | * Webpack config improvements ([#1629](https://github.com/roots/sage/pull/1629))
156 | * Webpack implementation improvements ([#1627](https://github.com/roots/sage/pull/1627))
157 | * Webpack implementation ([#1625](https://github.com/roots/sage/pull/1625))
158 | * Fix BS4 grid after their grid updates ([5551dde](https://github.com/roots/sage/commit/5551dde))
159 | * Pass the correct template ([856a482](https://github.com/roots/sage/commit/856a482))
160 | * Optimize travis a bit ([b42c425](https://github.com/roots/sage/commit/b42c425))
161 | * Move single-post loop to single.php, closes #1582 ([6efa099](https://github.com/roots/sage/commit/6efa099))
162 | * All function braces need to be on new line ([b491f76](https://github.com/roots/sage/commit/b491f76))
163 | * Fix issue with WP loading wrong index.php ([9e2917e](https://github.com/roots/sage/commit/9e2917e))
164 | * Use 4 spaces for `src/*.php` ([fe659f4](https://github.com/roots/sage/commit/fe659f4))
165 | * Use phpcs.xml for all rules ([246955c](https://github.com/roots/sage/commit/246955c))
166 | * Conform to new rules ([6a4d3bd](https://github.com/roots/sage/commit/6a4d3bd))
167 | * Create new phpcs rules ([2d02544](https://github.com/roots/sage/commit/2d02544))
168 | * Remove Template class ([1df3fee](https://github.com/roots/sage/commit/1df3fee))
169 | * Remove closure from sidebar registration ([12d6ac3](https://github.com/roots/sage/commit/12d6ac3))
170 | * Remove sage.pot ([d4461fa](https://github.com/roots/sage/commit/d4461fa))
171 | * Remove template_part, template_sidebar, temp sidebar fix ([abeea0f](https://github.com/roots/sage/commit/abeea0f))
172 | * Update asset handles ([fa0e51f](https://github.com/roots/sage/commit/fa0e51f))
173 | * Remove comment-reply JS ([d217ba6](https://github.com/roots/sage/commit/d217ba6))
174 | * Update node in travis, remove unsupported php ([8712dc8](https://github.com/roots/sage/commit/8712dc8))
175 | * Update dependencies, switch to eslint ([e51e41e](https://github.com/roots/sage/commit/e51e41e))
176 | * Bootstrap 4 ([c9ef232](https://github.com/roots/sage/commit/c9ef232))
177 | * Fix: page title not displaying ([9283bbb](https://github.com/roots/sage/commit/9283bbb))
178 | * Rename interfaces, unset after unwrapping ([97906e9](https://github.com/roots/sage/commit/97906e9))
179 | * Restructure theme, use autoloader ([9eaffa3](https://github.com/roots/sage/commit/9eaffa3a2d4df462dd8020a10551334208bd32a3))
180 |
181 | ### 8.5.0: September 20th, 2016
182 | * Update installation instructions
183 | * Update dependencies
184 | * Update to Bootstrap 4.0.0-alpha.4 ([5eb01fd](https://github.com/roots/sage/commit/5eb01fd0319a7b6576e31579dc50e16b023abb74))
185 |
186 | ### 8.4.2: February 19th, 2016
187 | * Add Composer vendor directory to gitignore ([#1618](https://github.com/roots/sage/issues/1618))
188 | * Fix build test by removing trailing space ([#1617](https://github.com/roots/sage/issues/1617))
189 | * Replace deprecated gulp-minify-css with gulp-cssnano ([#1610](https://github.com/roots/sage/issues/1610))
190 |
191 | ### 8.4.1: January 27th, 2016
192 | * Add `composer.json` and update installation instructions ([#1583](https://github.com/roots/sage/issues/1583))
193 |
194 | ### 8.4.0: December 1st, 2015
195 | * Update to Bootstrap 3.3.6 ([#1578](https://github.com/roots/sage/pull/1578))
196 | * Remove unnecessary underscore ([#1577](https://github.com/roots/sage/pull/1577))
197 | * Drop support for older browsers ([#1571](https://github.com/roots/sage/pull/1571))
198 | * Add support for theme customizer ([#1573](https://github.com/roots/sage/pull/1573))
199 | * Remove extraneous no-js ([#1562](https://github.com/roots/sage/pull/1562))
200 | * Simplify/speed up editor style process ([#1560](https://github.com/roots/sage/pull/1560))
201 |
202 | ### 8.3.0: October 13th, 2015
203 | * Setup organization ([#1558](https://github.com/roots/sage/pull/1558))
204 | * Remove redundancy with WAI-ARIA in HTML ([#1557](https://github.com/roots/sage/pull/1557))
205 | * Rename config.php to setup.php ([#1556](https://github.com/roots/sage/pull/1556))
206 | * Move init.php to config.php ([#1555](https://github.com/roots/sage/pull/1555))
207 | * Use Sass to style search form, remove search template ([#1545](https://github.com/roots/sage/pull/1545))
208 | * Remove Modernizr ([#1541](https://github.com/roots/sage/pull/1541))
209 | * Remove references to WP_ENV ([#1554](https://github.com/roots/sage/pull/1554))
210 | * Use WP core's HTML5 gallery markup ([#1546](https://github.com/roots/sage/pull/1546))
211 | * Use slash in handle names for theme CSS and JS ([#1537](https://github.com/roots/sage/pull/1537))
212 | * Add compatibility with WooCommerce Multilingual plugin ([#1530](https://github.com/roots/sage/pull/1530))
213 | * Remove ConditionalTagCheck class ([#1494](https://github.com/roots/sage/pull/1494))
214 | * Add search templates ([#1459](https://github.com/roots/sage/issues/1459))
215 | * Allow `debugger` statements in development JavaScript ([#1487](https://github.com/roots/sage/issues/1487))
216 |
217 | ### 8.2.1: May 7th, 2015
218 | * Update BrowserSync ([#1457](https://github.com/roots/sage/issues/1457))
219 | * Bump dependencies ([#1448](https://github.com/roots/sage/issues/1448))
220 | * Allow revved files to resolve in development if they exist ([#1456](https://github.com/roots/sage/issues/1456))
221 | * Disable advanced minification features to fix incorrect file path in compiled CSS ([#1452](https://github.com/roots/sage/issues/1452))
222 | * Fix Glyphicon font path ([#1455](https://github.com/roots/sage/issues/1455))
223 |
224 | ### 8.2.0: April 29th, 2015
225 | * Use Sass Bootstrap by default ([#1437](https://github.com/roots/sage/issues/1437))
226 | * Remove nav walker and Bootstrap navbar ([#1427](https://github.com/roots/sage/issues/1427))
227 | * Remove Bootstrap gallery ([#1421](https://github.com/roots/sage/issues/1421))
228 | * Remove hardcoded feed link ([#1426](https://github.com/roots/sage/issues/1426))
229 | * Move jQuery CDN feature to Soil ([#1422](https://github.com/roots/sage/issues/1422))
230 | * Bump `gulp-load-plugins` to 0.10.0 ([#1419](https://github.com/roots/sage/issues/1419))
231 | * Switch from [yargs](https://github.com/bcoe/yargs) to [minimist](https://github.com/substack/minimist) ([#1418](https://github.com/roots/sage/issues/1418))
232 | * Remove `$content_width` ([#1417](https://github.com/roots/sage/issues/1417))
233 | * Lowercase `X-UA-Compatible` ([#1409](https://github.com/roots/sage/issues/1409))
234 | * Remove mention of Google Analytics from the config ([#1384](https://github.com/roots/sage/issues/1384))
235 |
236 | ### 8.1.1: March 31st, 2015
237 | * Remove pleeease dependency in favor of vanilla gulp-autoprefixer and gulp-minify-css ([#1402](https://github.com/roots/sage/issues/1402))
238 | * Fix `gulp --production` race condition ([#1398](https://github.com/roots/sage/issues/1398))
239 | * Update to Bootstrap 3.3.4 ([#1387](https://github.com/roots/sage/issues/1387))
240 |
241 | ### 8.1.0: March 13th, 2015
242 | * Move HTML5 Boilerplate's Google Analytics snippet to Soil ([#1382](https://github.com/roots/sage/issues/1382))
243 | * Run `gulp build` if `bower.json` is changed ([#1378](https://github.com/roots/sage/issues/1378))
244 | * Remove namespace from base.php ([#1372](https://github.com/roots/sage/issues/1372))
245 | * Allow build directory to be customized ([#1352](https://github.com/roots/sage/issues/1352), [#1366](https://github.com/roots/sage/issues/1366))
246 | * Update ConditionalTagCheck and usage docs ([#1365](https://github.com/roots/sage/issues/1365))
247 | * Change default gallery columns to 3 ([#1364](https://github.com/roots/sage/issues/1364))
248 | * Apply `script_loader_src` filter to jQuery fallback ([#1363](https://github.com/roots/sage/issues/1363))
249 |
250 | ### 8.0.1: February 26th, 2015
251 | * Update asset-builder version to fix Windows compatibility ([#1351](https://github.com/roots/sage/issues/1351))
252 | * Fix broken wiredep imports with main.scss.example ([Discussion](https://discourse.roots.io/t/issue-with-sage-sass-version/2962))
253 |
254 | ### 8.0.0: February 25th, 2015
255 | * Change theme name from Roots to Sage
256 | * Bump required PHP version to >=5.4
257 | * Add coding standards based on PSR-2
258 | * Add Travis CI
259 | * Add namespace
260 | * Use short array syntax
261 | * Use short echo syntax
262 | * Switch from Grunt to gulp, new front-end development workflow
263 | * Switch from Livereload to [BrowserSync](http://www.browsersync.io/)
264 | * Use wiredep for Sass and Less injection
265 | * Implement JSON file based asset pipeline with [asset-builder](https://github.com/austinpray/asset-builder)
266 | * Re-organize asset file structure
267 | * Re-organize stylesheet file structure
268 | * Add main.scss.example and instructions for using Sass
269 | * Use the primary theme stylesheet for the editor stylesheet
270 | * Remove theme activation, move to [wp-cli-theme-activation](https://github.com/roots/wp-cli-theme-activation)
271 | * Simplify 404 page
272 | * Convert Sidebar to ConditionalTagCheck
273 | * Update to jQuery 1.11.2
274 | * Use new core navigation template tag
275 | * Update sidebar to fix default template check
276 | * Update nav walker to correctly assign `active` classes for custom post types
277 | * Better support for CPT templates
278 |
279 | ### 7.0.3: December 18th, 2014
280 | * Use `get_the_archive_title`
281 | * Remove `wp_title`, add title-tag theme support
282 | * Remove `Roots_Nav_Walker` as default for all menus
283 | * Update to Bootstrap 3.3.1
284 | * Add some base comment styling
285 | * Make search term `required` in search form
286 |
287 | ### 7.0.2: October 24th, 2014
288 | * Simplify comments, use core comment form and list
289 | * Remove HTML5 shiv from Modernizr build
290 | * Move JavaScript to footer
291 | * Update hEntry schema to use `updated` instead of `published`
292 | * Move variables into `main.less`
293 | * Add `roots_body_class` function that checks for page slug in `body_class`
294 | * Move `wp_footer` from footer template into `base.php`
295 |
296 | ### 7.0.1: August 15th, 2014
297 | * Move `
10 | {!! sprintf(_nx('One response to “%2$s”', '%1$s responses to “%2$s”', get_comments_number(), 'comments title', 'sage'), number_format_i18n(get_comments_number()), '' . get_the_title() . '') !!} 11 |
12 | 13 |14 | {!! wp_list_comments(['style' => 'ol', 'short_ping' => true]) !!} 15 |
16 | 17 | @if (get_comment_pages_count() > 1 && get_option('page_comments')) 18 | 28 | @endif 29 | @endif 30 | 31 | @if (!comments_open() && get_comments_number() != '0' && post_type_supports(get_post_type(), 'comments')) 32 |