made misc changes.
[libreplanet-static.git] / 2017 / README.md
CommitLineData
179bf9bc
ZR
1README version for LibrePlanet 2017
2
7c9e387d 3Heads up: to edit the Web site, you'll need a basic-to-intermediate understanding of HTML, git, and command line.
fcf95e6d 4
6ba4ea6c 5# SECTION 1: DEVELOPMENT WORKFLOW
fcf95e6d 6
60bc0202 7The 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 is served to the Web at http://wiki-dev0.libreplanet.org/YEAR and publicly visible, but not linked to.
fcf95e6d 8
79263a67 9Full workflow to make, test and deploy an edit.
60bc0202 10-----------------
fcf95e6d 11
12268ed4 12* Check out the master branch and make sure it is up to date with origin/master by doing:
60bc0202 13 * git checkout master
179bf9bc 14 * git pull
12268ed4 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.
79263a67 16* Make your edits. (See site structure and instructions for editing content below.)
60bc0202 17* Optionally, test them on your computer with a local development environment. (See instructions below for setting up your development environment).
12268ed4 18* If you are working on your own branch created for your edit, merge, your branch into master by doing:
60bc0202
ZR
19 * git checkout master
20 * git merge BRANCHNAME
12268ed4 21* Push master by doing:
60bc0202
ZR
22 * git push
23* Review the edited version of the site at http://wiki-dev0.libreplanet.org/YEAR. You can share this with others.
12268ed4 24* When you are satisfied, merge master into stable and then push stable by doing:
60bc0202
ZR
25 * git checkout stable
26 * git merge master
27 * git push
179bf9bc 28* Your edits are now live and visible at libreplanet.org/YEAR
60bc0202 29
6ba4ea6c 30# SECTION 2: SITE STRUCTURE
79263a67
ZR
31
32The 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".
33
7c9e387d 34The 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.
6ba4ea6c
ZR
35
36This 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.
37
38# SECTION 3: EDITING INSTRUCTIONS
60bc0202 39
b52f8dce 40To change content on existing pages, use your favorite text editor.
12268ed4 41
6ba4ea6c
ZR
42Here are specific instructions for more complex editing tasks:
43
7c9e387d 44## Editing the schedule or bios pages
6ba4ea6c 45
7c9e387d 46The 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.
fcf95e6d 47
dac9aa94 48<<<<<<< HEAD
03da46d3
ZR
49See instructions at <http://pythonhosted.org/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
51NOTE: **Before each time you use the script, make sure to update it with this command:**
52
53pip install --upgrade lpschedule-generator
dac9aa94 54=======
2d875537 55See 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.
dac9aa94 56>>>>>>> master
b52f8dce
ZR
57
58Please 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.
59
6ba4ea6c 60## Creating a New Page
fcf95e6d 61
60bc0202 62*Boilerplate*
fcf95e6d 63
64Add the following to your new page (it should remain commented out, as that is the syntax for SSI):
65
66```
67<!--#include virtual="/2017/includes/header.html"-->
68<!--#include virtual="/2017/includes/banner.html"-->
69<!--#include virtual="/2017/includes/sidebar.html"-->
70<!--#include virtual="/2017/includes/footer.html"-->
71<!--#include virtual="/2017/includes/close.html"-->
72```
73
74This will include the header, banner, sidebar, footer and closing tags
75saving you from duplicating HTML.
76
77If JS is needed for a page, then create a file, containing the JS
78includes, in `/2017/includes/` & use SSI to include it in the page.
79
80Use `/2017/includes/boilerplate.html` to start a new page.
81
60bc0202 82*Add Your Markup*
fcf95e6d 83
84Add HTML markup in-between the sidebar and footer includes.
85
60bc0202 86*Enable SSI*
fcf95e6d 87
88Files that contain include directives must be marked as executable
89otherwise Apache will not parse them. (The directive `XBitHack on` in the .conf file pasted above enables this behavior).
90
91To mark a file as executable, run:
92
93```
94chmod +x foo.html
95```
96
97Replace `foo.html` with the desired file name.
98
6ba4ea6c 99## Modifying top-right corner
7ba5343a 100
101In the `/2017/includes/banner.html` find the `...#top-right-desktop
102start...` section.
103
60bc0202 104*For register now*
7ba5343a 105
106Include `register-now.html`
107
108 <!-- #top-right-desktop start -->
109 <!--#include virtual="/2017/includes/register-now.html"-->
110 <!-- #top-right-desktop end -->
111
60bc0202 112*For join LP list form*
7ba5343a 113
114Include `join-list.html`
115
116 <!-- #top-right-desktop start -->
117 <!--#include virtual="/2017/includes/join-list.html"-->
118 <!-- #top-right-desktop end -->
119
fcf95e6d 120
6ba4ea6c 121# SECTION 4: SETTING UP A LOCAL DEVELOPMENT ENVIRONMENT
60bc0202
ZR
122
123Apache is required in order to replicate the appearance of the website
124on the live and staging servers on your machine. If you don't want to
125install Apache, you can still work on the site, you just won't be able
126to see what it looks like until you push to the remote.
127
128Modifying Apache's configuration files and running its executables
129typically requires root access. So, you will most likely need to run
130the commands below as the root user using `sudo`.
131
132*Enable server-side include module*
133
134```
135a2enmod include
136```
137
138If this doesn't work, you may not have Apache installed. Install the
139package apache2 from your package manager.
140
141*Create virtual host*
142
143Create a new file called libreplanet (libreplanet.conf for Apache 2.4) in `/etc/apache2/sites-available` with the following contents:
144
145```
146<VirtualHost *:80>
147RewriteEngine on
148 ServerName local-dev.libreplanet.org
149 ServerAdmin webmaster@localhost
150 DocumentRoot /local-path/path-to-site
151 <Directory /local-path/path-to-site/>
152 Options Indexes FollowSymLinks MultiViews
153 AllowOverride All
154 Require all granted
155 Order deny,allow
156 deny from none
157 allow from all
158 SSILegacyExprParser on
159 Options +Includes
160 XBitHack on
161 </Directory>
162 ErrorLog /home/owner/libreplanet-static/logs/error.log
163 CustomLog /home/owner/libreplanet-static/access.log combined
164</VirtualHost>
165```
166
167Replace all instances of `/path/to/libreplanet-static` with the full path to the root directory of your local
168git repository.
169
170*Enable virtual host*
171
172```
173a2ensite your-virtual-host
174```
175
176Replace `your-virtual-host` with the name of virtual host file you made (in this case, libreplanet).
fcf95e6d 177
60bc0202 178*Restart Apache*
fcf95e6d 179
180```
60bc0202 181service apache2 restart
fcf95e6d 182```
183
60bc0202 184*Edit your hosts file*
fcf95e6d 185
60bc0202
ZR
186Edit your system's `/etc/hosts` file and add the following to the bottom:
187
188```
189127.0.0.1 lp2017.libreplanet.org
190```
fcf95e6d 191
60bc0202 192*Test*
fcf95e6d 193
60bc0202
ZR
194Visit <http://lp2017.libreplanet.org/2017> in your web browser. If
195everything is configured properly, you will see the LibrePlanet 2017
196site, complete with header, sidebar, and footer.
7c9e387d
ZR
197
198# SECTION 5: TROUBLESHOOTING
199* I'm doing everything right, but the Web site isn't updating.
200
201Ask 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.