building blocks for tor project websites
Go to file
kez 08b7a15faf This is a temp branch for implementing TPA RFC 29
Context: tpo/web/lego#27

Implementing TPA RFC 29 is going to require changes to how SCSS files
are structured in lego. These changes will break existing sites. This
branch exists so that the sites don't have to implement TPA RFC 29 at
the same time.

The site gets restructured, and pointed at this branch.
Because the sites (usually) only track lego's `main` branch, they won't
be affected by these changes prematurely.

Once all sites have had TPA RFC 29 implemented and have their `lego`
submodules pointing at this branch, this branch will be merged into
main.
2022-08-23 12:31:28 -07:00
.github Add .github/FUNDING.yml 2019-09-12 15:45:52 +02:00
assets This is a temp branch for implementing TPA RFC 29 2022-08-23 12:31:28 -07:00
content/robots.txt Add an extensible template for robots.txt 2022-06-29 18:04:42 -07:00
databags add ru version for community portal 2022-05-17 14:50:35 +02:00
models Add key field to redirect model 2020-03-24 18:23:18 -04:00
packages Add the lektor-markdown-highlighter plugin 2022-08-02 22:28:56 +00:00
templates Fix error when the robots_txt databag doesn't exist 2022-06-30 21:23:37 -07:00
.gitignore Ignore built egg packages 2020-10-13 11:23:03 -07:00
help Update css 2019-11-05 14:54:52 +01:00
README.md Add more information about lego 2022-01-12 12:03:31 -08:00

Lego

This repository contains templates, models, assets, databags, and lektor plugins used by many of the lektor sites. It's intended to be added as a submodule, to keep the style and assets up-to-date between sites.

You won't use this repo directly. You'll usually clone it as a submodule:

git clone https://gitlab.torproject.org/tpo/web/tpo
cd tpo
git submodule update --init

# or
git clone --recurse-submodules https://gitlab.torproject.org/tpo/web/tpo

You might also want to add it to a new lektor project. This is a three-step process:

  1. Clone the submodule from the project root: git submodule add https://gitlab.torproject.org/tpo/web/lego.git
  2. Edit the submodule URL. See <#relative-submodule-urls>.
  3. Symlink everything you need. See <#symlinking-lego>.

Relative submodule URLs

Gitlab CI requires that submodules hosted on the same server as the main repo use relative URLs. If your project isn't hosted on https://gitlab.torproject.org or isn't using Gitlab CI, you can skip this!

Relative submodule URLs means that if lego is located at https://gitlab.torproject.org/tpo/web/lego and your project is https://gitlab.torproject.org/tpo/web/some_website, then your submodule URL should be ../lego.git The .git suffix is required. If your project is hosted in your own namespace (like a fork), your repo URL should look like https://gitlab.torproject.org/user/repo your submodule URL should be ../../tpo/web/lego.git. This means that forking requires you to change your submodule URL to use CI. This is a known bug with upstream gitlab https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3374 and TPA is looking into solutions in the meantime.

Symlinking lego

Adding lego as a submodule doesn't actually do anything on its own. You'll need to symlink the parts of lego that you want. For instance, lektor installs all the python packages in /packages. Symlinking /lego/packages to /packages means lektor will install all the packages lego comes with. You can even pick and choose what packages get symlinked: mkdir -p packages && ln -s ../lego/lektor-md-tag ../lego/npm-support packages

A list of things contained in lego and descriptions of them is <#package-may-contain>. Usually, you'll want to symlink /lego/assets/* to /assets, /lego/templates/* to /templates, /lego/databags/* to /databags*, and the entire /lego/packages directory to /packages

Package may contain

Here's what's inside lego:

  • assets/
    • assets/javascript/: Contains the javascript used by bootstrap
    • assets/scss/: Contains the SCSS for lego. This is Bootstrap v4, with our own styles layered on top
    • assets/static/: Contains fonts, images, and minified bootstrap js, as well as the compiled SCSS output
  • databags/: All the databags used by the lego templates
  • models/: Contains a model for redirect pages
  • packages/: A number of mirrored and patched python packages. See each package's README for details
  • templates/: Useful templates used by several of the sites

License

TBD

Lego (and all of TPO's web projects unless otherwise specified) do not yet have a license.