Lightning is a base distribution for fast and feature-rich Drupal. Please submit issues to our Drupal.Org queue here: https://www.drupal.org/project/issues/lightning
PHP Makefile Gherkin Shell HTML
Clone or download
Permalink
Failed to load latest commit information.
config Introduce automatic configuration updates (#462) Sep 18, 2017
console/translations/en Sub-profile utilities should link to documentation (#569) May 11, 2018
git-hooks Verify Patched constraints (#361) May 9, 2017
help Issue #2678240 by balsama, phenaproxima: [Meta] Panelizer Implementat… Jun 14, 2016
hooks Switch to non-free tier env for nightly builds and fix cloud config d… Jun 7, 2017
src Use a shell script to generate tarballs (#580) May 11, 2018
templates/profile Issue #2862124 by phenaproxima: Create new Lightning Experimental Bra… Mar 29, 2017
tests Test with headless Chrome (#579) May 11, 2018
.entity-helper.php Prepare for RC4 May 5, 2016
.gitignore Issue #2933237: [META] Lightning 8.x-3.002 Feb 21, 2018
.travis.yml Test with headless Chrome (#579) May 11, 2018
CHANGELOG.md Back to dev. May 9, 2018
LICENSE.txt Added GPLv2 License. Jun 16, 2016
README.md Issue #2908097 by phenaproxima, mpotter, Dane Powell, balsama: Docume… May 11, 2018
RoboFile.php Move bin directory to default location (#540) Dec 13, 2017
UPDATE.md Document the entity schema updates created by Scheduler update path (#… May 25, 2018
VERSIONS.md Issue #2925010 by balsama: Split Lightning Components into individual… Dec 26, 2017
acquia-pipelines.yml Update Drupal core to 8.5.0 (#555) Feb 28, 2018
build-lightning.make Back to dev. May 9, 2018
build.xml Use a shell script to generate tarballs (#580) May 11, 2018
composer.json Fix extraneous Drupal core patch directories (#581) May 30, 2018
composer.lock Fix extraneous Drupal core patch directories (#581) May 30, 2018
drupal-org-core.make Test with headless Chrome (#579) May 11, 2018
drupal-org.make Fix extraneous Drupal core patch directories (#581) May 30, 2018
favicon.ico Added logo, favicon and completed readme file Dec 10, 2015
lightning-subprofile Sub-profile utilities should link to documentation (#569) May 11, 2018
lightning.info.yml Back to dev. May 9, 2018
lightning.install Issue #2784699 by phenaproxima: Provide option for resizing inline im… Jun 29, 2017
lightning.png Added logo, favicon and completed readme file Dec 10, 2015
lightning.profile Use the new Lightning Dev infrastructure (#551) Feb 9, 2018
lightning.services.yml Remove update:lightning command (#553) Feb 13, 2018
tarball.sh Use a shell script to generate tarballs (#580) May 11, 2018

README.md

Build Status

Drupal Lightning

Lightning's mission is to enable developers to create great authoring experiences and empower editorial teams.

You'll notice that Lightning appears very sparse out of the box. This is by design. We want to empower editorial teams and enable developers to jump-start their site builds. That means that a developer should never have to undo something that Lightning has done. So we started with a blank slate and justified each addition from there.

Installing Lightning

The preferred way to install Lightning is using our Composer-based project template. It's easy!

$ composer self-update
$ composer create-project acquia/lightning-project MY_PROJECT

If you don't want to use Composer, you can install Lightning the traditional way by downloading a tarball from Lightning's GitHub releases page. (Please note that the tarball generated by Drupal.Org's packager does not include required Composer dependencies and should not be used without following the special instructions found there.)

You can customize your installation by creating a sub-profile which uses Lightning as its base profile. Lightning includes a Drupal Console command (lightning:subprofile) which will generate a sub-profile for you.

Installing from exported config

If you have a config export of a site built with Lighting, you can install it using the Config Installer profile. This profile is fully supported by Lightning (we even run our tests against it). You can find more information about installing Lightning from exported config here.

What Lightning Does

Through custom, contrib, and core modules plus configuration, Lightning aims to target four functional areas:

Media

The current version of media includes the following functionality:

  • A preconfigured Text Format (Rich Text) with CKEditor WYSIWYG.
  • A media button (indicated by a star -- for now) within the WYSIWYG that launches a custom media widget.
  • The ability to place media into the text area and have it fully embedded as it will appear in the live entity. The following media types are currently supported:
    • Tweets
    • Instagram posts
    • Videos (YouTube and Vimeo supported out of the box)
    • Images
  • Drag-and-drop bulk image uploads.
  • Image cropping.
  • Ability to create new media through the media library (/media/add)
  • Ability to embed tweets, Instagrams, and YouTube/Vimeo videos directly into CKEditor by pasting the video URL

Extending Lightning Media (Contributed Modules)

Drupal community members have contributed several modules which integrate Lightning Media with additional third-party media services. These modules are not packaged with Lightning or maintained by Acquia, but they are stable and you can use them in your Lightning site:

Layout

Lightning includes the Panelizer module, which allows you to configure the layout of any content type using a drag-and-drop interface (Panels IPE). Lightning also includes a Landing Page content type for you to create landing pages with their own one-off layouts and content.

Any content type that uses Panelizer will allow you to set up default layouts for each view mode of that content type, which you can choose from (or override on a one-off basis) for individual pieces of content.

Eight layouts are provided out of the box by Panels. You can create your own layouts (see the Layout Discovery module bundled with Core) or install a contributed library of layouts like Radix Layouts.

Workflow

Lightning includes tools for building organization-specific content workflows. Out of the box, Lightning gives you the ability to manage content in one of four workflow states (draft, needs review, published, and archived). You can create as many additional states as you like and define transitions between them. It's also possible to schedule content to be transitioned between states at a specific future date and time.

API-First

Lightning ships with several modules which, together, quickly set up Drupal to deliver data to decoupled applications via a standardized API. By default, Lightning installs the OpenAPI and JSON API modules, plus the Simple OAuth module, as a toolkit for authentication, authorization, and delivery of data to API consumers. Currently, Lightning includes no default configuration for any of these modules, because it does not make any assumptions about how the API data will be consumed, but we might add support for standard use cases as they present themselves.

If you have PHP's OpenSSL extension enabled, Lightning can automatically create an asymmetric key pair for use with OAuth.

Project Roadmap

We publish sprint plans for each patch release. You can find a link to the current one in [this meta-issue][meta_releases] on Drupal.org.

Resources

Demonstration videos for each of our user stories can be found here.

Please use the Drupal.org issue queue for latest information and to request features or bug fixes.

Known Issues

Media

  • If you upload an image into an image field using the new image browser, you can set the image's alt text at upload time, but that text will not be replicated to the image field. This is due to a limitation of Entity Browser's API.
  • Some of the Lightning contributed media module listed above might not yet be compatible with the Core Media entity.
  • Using the bulk upload feature in environments with a load balancer might result in some images not being saved.

Inherited profiles

Drush is not aware of the concept of inherited profiles and as a result, you will be unable to uninstall dependencies of any parent profile using Drush. You can still uninstall these dependencies via the UI at "/admin/modules/uninstall". We have provided patches here for Drush which allow you to uninstall dependencies of parent profiles.

Contributing

Issues are tracked on drupal.org. Contributions can be provided either as traditional patches or as pull requests on our GitHub clone.

Each Lightning component also has a drupal.org issue queue:

Local Development

Lightning has a dev dependency on Lightning Dev which provides tools to aid in developing and contributing to Lightning. To install locally:

  1. Clone this repo:
$ git clone git@github.com:acquia/lightning.git
  1. Install dependencies:
$ cd lightning
$ composer install

This will create a fully functional docroot with a git-ignored copy of the profile files inside the docroot/contrib/lightning. You can modify those files directly, then use the provided composer pull command to move the changes back into the VCS controlled directory.

Lightning is still compatible with PHP 5.6, but you will need PHP >= 7.0.8 in order to build a local version of Lightning in this way.