1 README version for LibrePlanet 2019
3 Heads up: to edit the Web site, you'll need a basic-to-intermediate understanding of HTML, git, and command line.
5 # SECTION 1: DEVELOPMENT WORKFLOW
7 The actual LIVE site, visible at libreplanet.org/YEAR, is served from the "stable" branch of the git repository using a git hook. There is also a development branch called "master" which we use to preview edits on the Web. The master branch **used to** be served to the Web at http://wiki-dev0.libreplanet.org/YEAR and publicly visible, but not linked to.
9 Full workflow to make, test and deploy an edit.
12 * Check out the master branch and make sure it is up to date with origin/master by doing:
15 * Is this a large edit or a small edit? If it is small, edit, work in master. If this is a large edit that will take longer than a day, make a new branch based on the master branch and work there.
16 * Make your edits. (See site structure and instructions for editing content below.)
17 * Optionally, test them on your computer with a local development environment. (See instructions below for setting up your development environment).
18 * If you are working on your own branch created for your edit, merge, your branch into master by doing:
20 * git merge BRANCHNAME
21 * Push master by doing:
23 * Review the edited version of the site at http://wiki-dev0.libreplanet.org/YEAR. You can share this with others.
24 * When you are satisfied, merge master into stable and then push stable by doing:
28 * Your edits are now live and visible at libreplanet.org/YEAR
30 # SECTION 2: SITE STRUCTURE
32 The site is made up of HTML files, each representing part of a page (sidebar, content, footer, etc.). When a browser visits the site, the server finds the core HTML file for the page (for example, the core file for https://www.libreplanet.org/YEAR/getting-around is /YEAR/getting-around/index.html in the repo), then reads special comments in that file to which instruct it to pull various other HTML files in to produce a complete page, using an Apache feature called SSI. To edit part of a page, you will need to find out which HTML file contains the element in question. Do this by navigating to core HTML file and exploring the comments that start with "#include".
34 The bios page and the sessions page are maintained through a special workflow to make it easy to have only one canonical copy edited by humans. That canonical copy is saved in brains (the FSF's internal wiki) in a special format. To update the sites' sessions page or bios page, you will need the lps_gen program installed on your computer (<https://ricketyspace.net/lpschedule-generator/>), as well as a local checkout of the SVN repository that contains brains.
36 This site is built with [Bootstrap 3.3.5](https://github.com/twbs/bootstrap/releases/download/v3.3.5/bootstrap-3.3.5-dist.zip) and [jQuery 1.11.1](http://code.jquery.com/jquery-1.11.3.js) but you do not need to understand either of these technologies to make minor content edits to the site.
38 # SECTION 3: EDITING INSTRUCTIONS
40 To change content on existing pages, use your favorite text editor.
42 Here are specific instructions for more complex editing tasks:
44 ## Editing the schedule or bios pages
46 The workflow for this is Edit the Brains page with the schedule, then run a script to convert it into HTML and dump it into your checkout of the repo, then push that change up to the Web like any other edit.
48 See instructions at <https://ricketyspace.net/lpschedule-generator> for installing and running the script. The source files are stored in Brains in markdown but with special tags, so that you can edit them without needing to know this whole process. The jinja2 templates are stored in the the Web site's git repo at assets/templates.
50 Please crop all photos of speakers too 100x100 px (200x200 px for keynotes) and then upload them to <http://static.fsf.org/nosvn/libreplanet/speaker-pics/>. Then include their URL in the bios page to embed them.
52 ## Creating a New Page
56 Add the following to your new page (it should remain commented out, as that is the syntax for SSI):
59 <!--#include virtual="/2019/includes/header.html"-->
60 <!--#include virtual="/2019/includes/banner.html"-->
61 <!--#include virtual="/2019/includes/sidebar.html"-->
62 <!--#include virtual="/2019/includes/footer.html"-->
63 <!--#include virtual="/2019/includes/close.html"-->
66 This will include the header, banner, sidebar, footer and closing tags
67 saving you from duplicating HTML.
69 If JS is needed for a page, then create a file, containing the JS
70 includes, in `/2019/includes/` & use SSI to include it in the page.
72 Use `/2019/includes/boilerplate.html` to start a new page.
76 Add HTML markup in-between the sidebar and footer includes.
80 Files that contain include directives must be marked as executable
81 otherwise Apache will not parse them. (The directive `XBitHack on` in the .conf file pasted above enables this behavior).
83 To mark a file as executable, run:
89 Replace `foo.html` with the desired file name.
93 Static pages can be edited using markdown by creating a index.mdwn file in the appropriate subdirectory (e.g. ./fun/index.mdwn) and running 'make wikipages'. Note that the .mdwn files should have the ```<!--#include...``` lines in place, everything else being regular markdown. It is a requirement to have the python-markdown package installed to run 'make wikipages'. To add this functionality to new pages, edit the Makefile. Also note that the index.html in those directories would be generated from the mdwn file and should not be edited directly.
95 ## Modifying top-right corner
97 In the `/2019/includes/banner.html` find the `...#top-right-desktop
102 Include `register-now.html`
104 <!-- #top-right-desktop start -->
105 <!--#include virtual="/2019/includes/register-now.html"-->
106 <!-- #top-right-desktop end -->
108 *For join LP list form*
110 Include `join-list.html`
112 <!-- #top-right-desktop start -->
113 <!--#include virtual="/2019/includes/join-list.html"-->
114 <!-- #top-right-desktop end -->
117 # SECTION 4: SETTING UP A LOCAL DEVELOPMENT ENVIRONMENT
119 Apache is required in order to replicate the appearance of the website
120 on the live and staging servers on your machine. If you don't want to
121 install Apache, you can still work on the site, you just won't be able
122 to see what it looks like until you push to the remote.
124 Modifying Apache's configuration files and running its executables
125 typically requires root access. So, you will most likely need to run
126 the commands below as the root user using `sudo`.
128 *Enable server-side include module*
135 If this doesn't work, you may not have Apache installed. Install the
136 package apache2 from your package manager.
138 *Create virtual host*
140 Create a new file called libreplanet (libreplanet.conf for Apache 2.4) in `/etc/apache2/sites-available` with the following contents:
145 ServerName local-dev.libreplanet.org
146 ServerAdmin webmaster@localhost
147 DocumentRoot /local-path/path-to-site
148 <Directory /local-path/path-to-site/>
149 Options Indexes FollowSymLinks MultiViews
155 SSILegacyExprParser on
159 ErrorLog /home/owner/libreplanet-static/logs/error.log
160 CustomLog /home/owner/libreplanet-static/access.log combined
164 Replace all instances of `/path/to/libreplanet-static` with the full path to the root directory of your local
167 *Enable virtual host*
170 a2ensite your-virtual-host
173 Replace `your-virtual-host` with the name of virtual host file you made (in this case, libreplanet).
178 service apache2 restart
181 *Edit your hosts file*
183 Edit your system's `/etc/hosts` file and add the following to the bottom:
186 127.0.0.1 lp2019.libreplanet.org
191 Visit <http://lp2019.libreplanet.org/2019> in your web browser. If
192 everything is configured properly, you will see the LibrePlanet 2019
193 site, complete with header, sidebar, and footer.
195 # SECTION 5: TROUBLESHOOTING
196 * I'm doing everything right, but the Web site isn't updating.
198 Ask the tech team to look at the git hook that publishes to the live site. When you push to the git repository, this hook is supposed to update what is actually served on the Internet to match the repo.
200 * The website isn't loading! What?
202 It might be a permissions issue. Try cd / ls -lad to check permissions. If they are not right, chmod 711 . should fix it