{"action":"created","comment":{"url":"https://api.github.com/repos/mysociety/alaveteli/pulls/comments/52292477","id":52292477,"diff_hunk":"@@ -0,0 +1,258 @@\n+---\n+layout: page\n+title: Make a new theme\n+---\n+\n+# How to make a new theme\n+\n+<p class=\"lead\">\n+    Every new Alaveteli site\n+    <a href=\"{{ page.baseurl}}/docs/customising/themes\">needs its own theme</a>\n+    before it can go into the world. This page describes the process for making\n+    a new one.\n+</p>\n+\n+There's a lot you can do with Alaveteli's themes, but to get started all you\n+need to know is: your site must have one. Later, you can\n+[read all about themes]({{ page.baseurl }}/docs/customising/themes) and the\n+things you can do with them. But for now we suggest you follow these steps.\n+You'll end up with your own theme, with your own colour and logo displayed on\n+your Alaveteli site. Once you've got that, you can — of course — make more\n+customisations, as fancy as you like.\n+\n+If you've already got a theme, well done! Also, remember that there are other\n+[ways to customise your site]({{ page.baseurl }}/docs/customising/) — such as\n+configuration settings and translations — in addition to the changes you can\n+make to the theme.\n+\n+But if you've just installed the software (for example, you've just completed a\n+[Vagrant installation]({{ page.baseurl }}/docs/installing/vagrant)), follow\n+these steps to make your Alaveteli site your own.\n+\n+<div class=\"attention-box helpful-hint\">\n+  If you're using Vagrant, remember that you log into the virtual machine's\n+  shell by <code>cd</code>ing into the root directory of your Alaveteli \n+  installation, and then issuing <code>vagrant&nbsp;ssh</code>.\n+</div>\n+\n+## 1. Fork the Alaveteli theme\n+\n+If you're familiar with git, you can do this your own way. But we think the\n+easiest way is to do it within GitHub.\n+\n+You'll need your own account on GitHub to do this.\n+\n+* Go to [github.com/mysociety/alavetelitheme](https://github.com/mysociety/alavetelitheme)\n+* Click on the **Fork** button (top right) — if you've got access to multiple\n+  accounts/organisations you can choose which one to use\n+\n+...and it's done!\n+\n+## 2. Give it a unique name\n+\n+You must give the repo you've just forked its own name. Ideally, it should\n+match the sitename you're planning on running (for example, if your site is\n+going to be `abcexample.org`, then a good name would be `abcexample-theme`).\n+Don't worry if you haven't really sorted out the domain or even the final name\n+yet; this is just so your theme cannot be mistaken for any others.\n+\n+To do this, go to [GitHub](https://github.com) and find the repo you've just\n+forked, and click on its **Settings** tab. You can edit the name of the repo\n+there: change it from `alavetelitheme` to your own theme name.\n+\n+Note: if you're using the Firefox browser, there's a bug with GitHub+Firefox\n+here, so you might need to use another browser for this operation.\n+\n+<div class=\"attention-box warning\">\n+  You <strong>must</strong> rename the repo, because you'll run into problems\n+  later on if <em>your</em> theme has the same name as the default one,\n+  <code>alavetelitheme</code>.\n+</div>\n+\n+## 3. Point your config at your new repo\n+\n+Now your own theme repo exists, point your Alaveteli install at it by editing\n+the\n+<code><a href=\"{{ page.baseurl }}/docs/customising/config/#theme_urls\">THEME_URLS</a></code>\n+setting in the config file.\n+\n+Set it to the URL of your uniquely named repo, for example:\n+\n+    THEME_URLS:\n+         - 'git://github.com/yourgithub/abcexample-theme.git'\n+\n+## 4. Tell Alaveteli to get its theme\n+\n+Next, tell Alaveteli to pull the repo down from the URL in `THEMES_URL`, and\n+install it as the theme your installation will use.\n+\n+Do this by issuing this command within your Vagrant virtual machine:\n+\n+    rake themes:install\n+\n+Alaveteli will connect to GitHub, pull down your theme repo and put it in the\n+right place within your Alaveteli installation.\n+\n+When it's finished, you can see that your theme (that is, all the files from\n+the repo) has been reproduced in `lib/themes/`.\n+\n+## 5. Change the primary colour\n+\n+You're ready to make a change and see that change appear in your browser.\n+\n+Alaveteli uses a set of basic <a href=\"{{ page.baseurl }}/docs/glossary/#sass\"\n+class=\"glossary__link\">Sass</a> modules to define the layout for the site on\n+different device sizes, and some basic styling.\n+\n+There's more than one way to do this, but the simplest way (which means you\n+can most easily see the consequences of any changes you make) is to edit your\n+theme's files inside Alaveteli installation, within `lib/themes/`. Within that\n+directory, find your theme and edit\n+`/assets/stylesheets/responsive/custom.scss`. Find the Sass variable `$primary`\n+and change the colour value. For example:\n+\n+    $primary = #ff0000\n+\n+This sets the primary colour to red (`#ff0000` in that example can be any CSS\n+colour value). Of course, this is just to show that you _can_ change it: really, you can change anything in this theme — that's the whole point.\n+\n+The development server automatically rebuilds any resources that have been\n+changed; in this case it means it will build new versions of the CSS file from\n+the Sass, containing the new colour you've picked.\n+\n+<div class=\"attention-box helpful-hint\">\n+  <p>\n+    If you're new to git and GitHub, skip this note!\n+  </p>\n+  <p>\n+    If you're already comfortable working with git, you might prefer to work in\n+    the theme repo quite separately from the Alaveteli installation you're\n+    deploying it into. That is, instead of editing the \"deployed\" theme files\n+    within your development installation's <code>lib/themes/</code>, you can\n+    work on a cloned copy of the theme anywhere (perhaps elsewhere on your\n+    local machine, or even on GitHub), and then pull them into the development\n+    installation using the <code>rake&nbsp;install:themes</code> command. The\n+    advantage of this is that you can more easily work in the theme repo (for\n+    example, remaining explicitly on the <code>master</code> branch). The\n+    disadvantage is you have to remember to push your changes up to the origin\n+    (which will probably be GitHub) whenever you have any changes to deploy.\n+ </p>\n+</div>\n+\n+## 6. See the new colour!\n+\n+Now if you look at the home page on your development server, you'll","path":"docs/customising/make_a_new_theme.md","position":144,"original_position":144,"commit_id":"5ad20738982cc58704ddee00d17a2cf93f60d9f5","original_commit_id":"5ad20738982cc58704ddee00d17a2cf93f60d9f5","user":{"login":"lizconlan","id":27760,"avatar_url":"https://avatars.githubusercontent.com/u/27760?v=3","gravatar_id":"","url":"https://api.github.com/users/lizconlan","html_url":"https://github.com/lizconlan","followers_url":"https://api.github.com/users/lizconlan/followers","following_url":"https://api.github.com/users/lizconlan/following{/other_user}","gists_url":"https://api.github.com/users/lizconlan/gists{/gist_id}","starred_url":"https://api.github.com/users/lizconlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lizconlan/subscriptions","organizations_url":"https://api.github.com/users/lizconlan/orgs","repos_url":"https://api.github.com/users/lizconlan/repos","events_url":"https://api.github.com/users/lizconlan/events{/privacy}","received_events_url":"https://api.github.com/users/lizconlan/received_events","type":"User","site_admin":false},"body":"is it worth having a \"you may need to start your development server with `bundle exec rails server`\" bit here as the server won't be running at this point if the reader is following top to bottom and has just run `rake themes:install` and made some edits","created_at":"2016-02-09T10:51:36Z","updated_at":"2016-02-09T10:51:36Z","html_url":"https://github.com/mysociety/alaveteli/pull/3040#discussion_r52292477","pull_request_url":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040","_links":{"self":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/comments/52292477"},"html":{"href":"https://github.com/mysociety/alaveteli/pull/3040#discussion_r52292477"},"pull_request":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040"}}},"pull_request":{"url":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040","id":58450104,"html_url":"https://github.com/mysociety/alaveteli/pull/3040","diff_url":"https://github.com/mysociety/alaveteli/pull/3040.diff","patch_url":"https://github.com/mysociety/alaveteli/pull/3040.patch","issue_url":"https://api.github.com/repos/mysociety/alaveteli/issues/3040","number":3040,"state":"open","locked":false,"title":"installing with makeing-a-theme-instructions","user":{"login":"davewhiteland","id":111320,"avatar_url":"https://avatars.githubusercontent.com/u/111320?v=3","gravatar_id":"","url":"https://api.github.com/users/davewhiteland","html_url":"https://github.com/davewhiteland","followers_url":"https://api.github.com/users/davewhiteland/followers","following_url":"https://api.github.com/users/davewhiteland/following{/other_user}","gists_url":"https://api.github.com/users/davewhiteland/gists{/gist_id}","starred_url":"https://api.github.com/users/davewhiteland/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davewhiteland/subscriptions","organizations_url":"https://api.github.com/users/davewhiteland/orgs","repos_url":"https://api.github.com/users/davewhiteland/repos","events_url":"https://api.github.com/users/davewhiteland/events{/privacy}","received_events_url":"https://api.github.com/users/davewhiteland/received_events","type":"User","site_admin":false},"body":"belated text for review by Alaveteli team eyes: @crowbot @garethrees @lizconlan ","created_at":"2016-02-05T16:22:01Z","updated_at":"2016-02-09T10:51:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"12d6bda51925bec66b0f630c0601024997a8216b","assignee":{"login":"lizconlan","id":27760,"avatar_url":"https://avatars.githubusercontent.com/u/27760?v=3","gravatar_id":"","url":"https://api.github.com/users/lizconlan","html_url":"https://github.com/lizconlan","followers_url":"https://api.github.com/users/lizconlan/followers","following_url":"https://api.github.com/users/lizconlan/following{/other_user}","gists_url":"https://api.github.com/users/lizconlan/gists{/gist_id}","starred_url":"https://api.github.com/users/lizconlan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lizconlan/subscriptions","organizations_url":"https://api.github.com/users/lizconlan/orgs","repos_url":"https://api.github.com/users/lizconlan/repos","events_url":"https://api.github.com/users/lizconlan/events{/privacy}","received_events_url":"https://api.github.com/users/lizconlan/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040/commits","review_comments_url":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040/comments","review_comment_url":"https://api.github.com/repos/mysociety/alaveteli/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mysociety/alaveteli/issues/3040/comments","statuses_url":"https://api.github.com/repos/mysociety/alaveteli/statuses/5ad20738982cc58704ddee00d17a2cf93f60d9f5","head":{"label":"mysociety:dave-docs-wip","ref":"dave-docs-wip","sha":"5ad20738982cc58704ddee00d17a2cf93f60d9f5","user":{"login":"mysociety","id":141338,"avatar_url":"https://avatars.githubusercontent.com/u/141338?v=3","gravatar_id":"","url":"https://api.github.com/users/mysociety","html_url":"https://github.com/mysociety","followers_url":"https://api.github.com/users/mysociety/followers","following_url":"https://api.github.com/users/mysociety/following{/other_user}","gists_url":"https://api.github.com/users/mysociety/gists{/gist_id}","starred_url":"https://api.github.com/users/mysociety/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysociety/subscriptions","organizations_url":"https://api.github.com/users/mysociety/orgs","repos_url":"https://api.github.com/users/mysociety/repos","events_url":"https://api.github.com/users/mysociety/events{/privacy}","received_events_url":"https://api.github.com/users/mysociety/received_events","type":"Organization","site_admin":false},"repo":{"id":1125389,"name":"alaveteli","full_name":"mysociety/alaveteli","owner":{"login":"mysociety","id":141338,"avatar_url":"https://avatars.githubusercontent.com/u/141338?v=3","gravatar_id":"","url":"https://api.github.com/users/mysociety","html_url":"https://github.com/mysociety","followers_url":"https://api.github.com/users/mysociety/followers","following_url":"https://api.github.com/users/mysociety/following{/other_user}","gists_url":"https://api.github.com/users/mysociety/gists{/gist_id}","starred_url":"https://api.github.com/users/mysociety/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysociety/subscriptions","organizations_url":"https://api.github.com/users/mysociety/orgs","repos_url":"https://api.github.com/users/mysociety/repos","events_url":"https://api.github.com/users/mysociety/events{/privacy}","received_events_url":"https://api.github.com/users/mysociety/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mysociety/alaveteli","description":"Provide a Freedom of Information request system for your jurisdiction","fork":false,"url":"https://api.github.com/repos/mysociety/alaveteli","forks_url":"https://api.github.com/repos/mysociety/alaveteli/forks","keys_url":"https://api.github.com/repos/mysociety/alaveteli/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mysociety/alaveteli/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mysociety/alaveteli/teams","hooks_url":"https://api.github.com/repos/mysociety/alaveteli/hooks","issue_events_url":"https://api.github.com/repos/mysociety/alaveteli/issues/events{/number}","events_url":"https://api.github.com/repos/mysociety/alaveteli/events","assignees_url":"https://api.github.com/repos/mysociety/alaveteli/assignees{/user}","branches_url":"https://api.github.com/repos/mysociety/alaveteli/branches{/branch}","tags_url":"https://api.github.com/repos/mysociety/alaveteli/tags","blobs_url":"https://api.github.com/repos/mysociety/alaveteli/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mysociety/alaveteli/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mysociety/alaveteli/git/refs{/sha}","trees_url":"https://api.github.com/repos/mysociety/alaveteli/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mysociety/alaveteli/statuses/{sha}","languages_url":"https://api.github.com/repos/mysociety/alaveteli/languages","stargazers_url":"https://api.github.com/repos/mysociety/alaveteli/stargazers","contributors_url":"https://api.github.com/repos/mysociety/alaveteli/contributors","subscribers_url":"https://api.github.com/repos/mysociety/alaveteli/subscribers","subscription_url":"https://api.github.com/repos/mysociety/alaveteli/subscription","commits_url":"https://api.github.com/repos/mysociety/alaveteli/commits{/sha}","git_commits_url":"https://api.github.com/repos/mysociety/alaveteli/git/commits{/sha}","comments_url":"https://api.github.com/repos/mysociety/alaveteli/comments{/number}","issue_comment_url":"https://api.github.com/repos/mysociety/alaveteli/issues/comments{/number}","contents_url":"https://api.github.com/repos/mysociety/alaveteli/contents/{+path}","compare_url":"https://api.github.com/repos/mysociety/alaveteli/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mysociety/alaveteli/merges","archive_url":"https://api.github.com/repos/mysociety/alaveteli/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mysociety/alaveteli/downloads","issues_url":"https://api.github.com/repos/mysociety/alaveteli/issues{/number}","pulls_url":"https://api.github.com/repos/mysociety/alaveteli/pulls{/number}","milestones_url":"https://api.github.com/repos/mysociety/alaveteli/milestones{/number}","notifications_url":"https://api.github.com/repos/mysociety/alaveteli/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mysociety/alaveteli/labels{/name}","releases_url":"https://api.github.com/repos/mysociety/alaveteli/releases{/id}","deployments_url":"https://api.github.com/repos/mysociety/alaveteli/deployments","created_at":"2010-11-30T13:11:39Z","updated_at":"2016-02-01T02:31:45Z","pushed_at":"2016-02-08T17:22:15Z","git_url":"git://github.com/mysociety/alaveteli.git","ssh_url":"git@github.com:mysociety/alaveteli.git","clone_url":"https://github.com/mysociety/alaveteli.git","svn_url":"https://github.com/mysociety/alaveteli","homepage":"http://alaveteli.org","size":107391,"stargazers_count":164,"watchers_count":164,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":104,"mirror_url":null,"open_issues_count":754,"forks":104,"open_issues":754,"watchers":164,"default_branch":"develop"}},"base":{"label":"mysociety:gh-pages","ref":"gh-pages","sha":"556a2ce3993ec96f46397434b42b8de3157c566a","user":{"login":"mysociety","id":141338,"avatar_url":"https://avatars.githubusercontent.com/u/141338?v=3","gravatar_id":"","url":"https://api.github.com/users/mysociety","html_url":"https://github.com/mysociety","followers_url":"https://api.github.com/users/mysociety/followers","following_url":"https://api.github.com/users/mysociety/following{/other_user}","gists_url":"https://api.github.com/users/mysociety/gists{/gist_id}","starred_url":"https://api.github.com/users/mysociety/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysociety/subscriptions","organizations_url":"https://api.github.com/users/mysociety/orgs","repos_url":"https://api.github.com/users/mysociety/repos","events_url":"https://api.github.com/users/mysociety/events{/privacy}","received_events_url":"https://api.github.com/users/mysociety/received_events","type":"Organization","site_admin":false},"repo":{"id":1125389,"name":"alaveteli","full_name":"mysociety/alaveteli","owner":{"login":"mysociety","id":141338,"avatar_url":"https://avatars.githubusercontent.com/u/141338?v=3","gravatar_id":"","url":"https://api.github.com/users/mysociety","html_url":"https://github.com/mysociety","followers_url":"https://api.github.com/users/mysociety/followers","following_url":"https://api.github.com/users/mysociety/following{/other_user}","gists_url":"https://api.github.com/users/mysociety/gists{/gist_id}","starred_url":"https://api.github.com/users/mysociety/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mysociety/subscriptions","organizations_url":"https://api.github.com/users/mysociety/orgs","repos_url":"https://api.github.com/users/mysociety/repos","events_url":"https://api.github.com/users/mysociety/events{/privacy}","received_events_url":"https://api.github.com/users/mysociety/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mysociety/alaveteli","description":"Provide a Freedom of Information request system for your jurisdiction","fork":false,"url":"https://api.github.com/repos/mysociety/alaveteli","forks_url":"https://api.github.com/repos/mysociety/alaveteli/forks","keys_url":"https://api.github.com/repos/mysociety/alaveteli/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mysociety/alaveteli/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mysociety/alaveteli/teams","hooks_url":"https://api.github.com/repos/mysociety/alaveteli/hooks","issue_events_url":"https://api.github.com/repos/mysociety/alaveteli/issues/events{/number}","events_url":"https://api.github.com/repos/mysociety/alaveteli/events","assignees_url":"https://api.github.com/repos/mysociety/alaveteli/assignees{/user}","branches_url":"https://api.github.com/repos/mysociety/alaveteli/branches{/branch}","tags_url":"https://api.github.com/repos/mysociety/alaveteli/tags","blobs_url":"https://api.github.com/repos/mysociety/alaveteli/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mysociety/alaveteli/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mysociety/alaveteli/git/refs{/sha}","trees_url":"https://api.github.com/repos/mysociety/alaveteli/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mysociety/alaveteli/statuses/{sha}","languages_url":"https://api.github.com/repos/mysociety/alaveteli/languages","stargazers_url":"https://api.github.com/repos/mysociety/alaveteli/stargazers","contributors_url":"https://api.github.com/repos/mysociety/alaveteli/contributors","subscribers_url":"https://api.github.com/repos/mysociety/alaveteli/subscribers","subscription_url":"https://api.github.com/repos/mysociety/alaveteli/subscription","commits_url":"https://api.github.com/repos/mysociety/alaveteli/commits{/sha}","git_commits_url":"https://api.github.com/repos/mysociety/alaveteli/git/commits{/sha}","comments_url":"https://api.github.com/repos/mysociety/alaveteli/comments{/number}","issue_comment_url":"https://api.github.com/repos/mysociety/alaveteli/issues/comments{/number}","contents_url":"https://api.github.com/repos/mysociety/alaveteli/contents/{+path}","compare_url":"https://api.github.com/repos/mysociety/alaveteli/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mysociety/alaveteli/merges","archive_url":"https://api.github.com/repos/mysociety/alaveteli/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mysociety/alaveteli/downloads","issues_url":"https://api.github.com/repos/mysociety/alaveteli/issues{/number}","pulls_url":"https://api.github.com/repos/mysociety/alaveteli/pulls{/number}","milestones_url":"https://api.github.com/repos/mysociety/alaveteli/milestones{/number}","notifications_url":"https://api.github.com/repos/mysociety/alaveteli/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mysociety/alaveteli/labels{/name}","releases_url":"https://api.github.com/repos/mysociety/alaveteli/releases{/id}","deployments_url":"https://api.github.com/repos/mysociety/alaveteli/deployments","created_at":"2010-11-30T13:11:39Z","updated_at":"2016-02-01T02:31:45Z","pushed_at":"2016-02-08T17:22:15Z","git_url":"git://github.com/mysociety/alaveteli.git","ssh_url":"git@github.com:mysociety/alaveteli.git","clone_url":"https://github.com/mysociety/alaveteli.git","svn_url":"https://github.com/mysociety/alaveteli","homepage":"http://alaveteli.org","size":107391,"stargazers_count":164,"watchers_count":164,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":104,"mirror_url":null,"open_issues_count":754,"forks":104,"open_issues":754,"watchers":164,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040"},"html":{"href":"https://github.com/mysociety/alaveteli/pull/3040"},"issue":{"href":"https://api.github.com/repos/mysociety/alaveteli/issues/3040"},"comments":{"href":"https://api.github.com/repos/mysociety/alaveteli/issues/3040/comments"},"review_comments":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040/comments"},"review_comment":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mysociety/alaveteli/pulls/3040/commits"},"statuses":{"href":"https://api.github.com/repos/mysociety/alaveteli/statuses/5ad20738982cc58704ddee00d17a2cf93f60d9f5"}}}}