├── .gitignore ├── CHANGES.txt ├── LICENSE ├── Procfile ├── README.md ├── app.json ├── custom ├── logging.ini ├── moya ├── settings.ini └── templates │ └── willmcgugan.techblog │ └── base.html ├── heroku ├── heroku.ini ├── logging.ini ├── moya ├── postdeploy.sh ├── readme.txt └── wsgi.py ├── requirements.txt ├── runtime.txt ├── setup.py ├── site ├── basesettings.ini ├── data │ └── readme.txt ├── external │ ├── moya.fontawesome │ │ ├── __init__.py │ │ ├── docs │ │ │ └── index.txt │ │ ├── lib.ini │ │ ├── locale │ │ │ └── readme.txt │ │ ├── manifest.csv │ │ └── media │ │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ │ └── readme.txt │ ├── moya.imagelib │ │ ├── __init__.py │ │ ├── docs │ │ │ ├── index.txt │ │ │ └── introduction.txt │ │ ├── lib.ini │ │ ├── locale │ │ │ └── readme.txt │ │ ├── logic │ │ │ ├── admin.xml │ │ │ ├── content.xml │ │ │ ├── forms.xml │ │ │ ├── macros.xml │ │ │ ├── models.xml │ │ │ ├── mountpoints.xml │ │ │ ├── rpc.xml │ │ │ ├── signals.xml │ │ │ ├── tags.xml │ │ │ ├── thumbs.xml │ │ │ ├── views.xml │ │ │ └── widgets.xml │ │ ├── manifest.csv │ │ ├── media │ │ │ ├── css │ │ │ │ └── imglib.css │ │ │ ├── img │ │ │ │ ├── shade.png │ │ │ │ └── transparent.png │ │ │ ├── js │ │ │ │ └── imglib.js │ │ │ └── readme.txt │ │ └── templates │ │ │ └── moya.imagelib │ │ │ ├── base.html │ │ │ ├── emptyoption.html │ │ │ ├── imglist.html │ │ │ ├── managerbase.html │ │ │ ├── option.html │ │ │ └── widgets │ │ │ ├── manager │ │ │ ├── fragments │ │ │ │ └── progress.html │ │ │ ├── image_form.html │ │ │ ├── manager.html │ │ │ └── manager_image.html │ │ │ ├── picker │ │ │ └── picker.html │ │ │ ├── readme.txt │ │ │ └── uploader │ │ │ ├── uploader.html │ │ │ └── uploader_image.html │ ├── moya.logins │ │ ├── __init__.py │ │ ├── data │ │ │ └── moya.logins │ │ │ │ └── providers.json │ │ ├── docs │ │ │ ├── index.txt │ │ │ └── introduction.txt │ │ ├── lib.ini │ │ ├── locale │ │ │ └── readme.txt │ │ ├── logic │ │ │ ├── admin.xml │ │ │ ├── commands.xml │ │ │ ├── content.xml │ │ │ ├── customize.xml │ │ │ ├── forms.xml │ │ │ ├── macros.xml │ │ │ ├── models.xml │ │ │ ├── mountpoints.xml │ │ │ ├── preflight.xml │ │ │ ├── profile.xml │ │ │ ├── views.xml │ │ │ └── widgets.xml │ │ ├── manifest.csv │ │ ├── media │ │ │ ├── css │ │ │ │ ├── bootstrap-social.css │ │ │ │ └── logins.css │ │ │ └── readme.txt │ │ ├── py │ │ │ ├── __init__.py │ │ │ ├── oauth1.py │ │ │ └── oauth2.py │ │ ├── requirements.txt │ │ └── templates │ │ │ ├── moya.auth │ │ │ └── login_container.html │ │ │ └── moya.logins │ │ │ ├── admin │ │ │ └── provider.html │ │ │ ├── base.html │ │ │ └── widgets │ │ │ ├── login-button.html │ │ │ └── readme.txt │ ├── moya.thumbnail │ │ ├── __init__.py │ │ ├── docs │ │ │ ├── index.txt │ │ │ └── introduction.txt │ │ ├── lib.ini │ │ ├── locale │ │ │ └── readme.txt │ │ ├── logic │ │ │ ├── admin.xml │ │ │ ├── content.xml │ │ │ ├── forms.xml │ │ │ ├── macros.xml │ │ │ ├── models.xml │ │ │ ├── mountpoints.xml │ │ │ ├── rpc.xml │ │ │ ├── signals.xml │ │ │ ├── tags.xml │ │ │ ├── thumbs.xml │ │ │ ├── views.xml │ │ │ └── widgets.xml │ │ ├── manifest.csv │ │ ├── media │ │ │ ├── css │ │ │ │ └── imglib.css │ │ │ ├── img │ │ │ │ ├── shade.png │ │ │ │ └── transparent.png │ │ │ ├── js │ │ │ │ └── imglib.js │ │ │ └── readme.txt │ │ └── templates │ │ │ └── moya.imagelib │ │ │ ├── base.html │ │ │ ├── emptyoption.html │ │ │ ├── imglist.html │ │ │ ├── managerbase.html │ │ │ ├── option.html │ │ │ └── widgets │ │ │ ├── manager │ │ │ ├── fragments │ │ │ │ └── progress.html │ │ │ ├── image_form.html │ │ │ ├── manager.html │ │ │ └── manager_image.html │ │ │ ├── picker │ │ │ └── picker.html │ │ │ ├── readme.txt │ │ │ └── uploader │ │ │ ├── uploader.html │ │ │ └── uploader_image.html │ ├── moya.widgets.extra │ │ ├── __init__.py │ │ ├── docs │ │ │ ├── index.txt │ │ │ └── introduction.txt │ │ ├── lib.ini │ │ ├── locale │ │ │ └── readme.txt │ │ ├── logic │ │ │ ├── content.xml │ │ │ ├── forms.xml │ │ │ ├── models.xml │ │ │ ├── mountpoints.xml │ │ │ ├── readme.txt │ │ │ ├── signals.xml │ │ │ ├── tags.xml │ │ │ ├── views.xml │ │ │ └── widgets.xml │ │ ├── manifest.csv │ │ ├── media │ │ │ ├── css │ │ │ │ └── widgetsextra.css │ │ │ ├── js │ │ │ │ └── widgetsextra.js │ │ │ └── readme.txt │ │ └── templates │ │ │ └── moya.widgets.extra │ │ │ ├── base.html │ │ │ └── widgets │ │ │ ├── option.html │ │ │ ├── readme.txt │ │ │ ├── select-drop.html │ │ │ └── select.html │ ├── readme.txt │ └── update.sh ├── local │ └── readme.txt ├── logging.ini ├── logic │ ├── readme.txt │ └── server.xml ├── moya ├── prodlogging.ini ├── production.ini ├── readme.txt ├── settings.ini ├── site │ ├── lib.ini │ ├── locale │ │ └── readme.txt │ ├── logic │ │ ├── content.xml │ │ ├── data.xml │ │ ├── mountpoints.xml │ │ └── readme.txt │ └── readme.txt ├── static │ ├── auth-media │ │ └── css │ │ │ └── auth.css │ ├── bootstrap-media │ │ └── css │ │ │ └── bootstrap.min.css │ ├── comments-media │ │ └── css │ │ │ └── comments.css │ └── readme.txt ├── templates │ ├── base.html │ ├── email │ │ ├── base.html │ │ └── base.txt │ └── readme.txt ├── themes │ └── default.json └── wsgi.py ├── techblog.py ├── techblog ├── __init__.py └── app.py └── willmcgugan.techblog ├── __init__.py ├── data └── willmcgugan.techblog │ ├── feed_description_sanitize.json │ └── sanitize_rules.json ├── lib.ini ├── locale └── moya_blog.pot ├── logic ├── admin.xml ├── commands.xml ├── content.xml ├── forms.xml ├── inserts.xml ├── models.xml ├── preflight.xml ├── rpc.xml ├── signals.xml ├── tags.xml ├── thumbs.xml ├── views.xml └── widgets.xml ├── media ├── css │ └── blog.css ├── highlight │ ├── CHANGES.md │ ├── LICENSE │ ├── README.md │ ├── README.ru.md │ ├── highlight.pack.js │ └── styles │ │ ├── agate.css │ │ ├── androidstudio.css │ │ ├── arta.css │ │ ├── ascetic.css │ │ ├── atelier-cave.dark.css │ │ ├── atelier-cave.light.css │ │ ├── atelier-dune.dark.css │ │ ├── atelier-dune.light.css │ │ ├── atelier-estuary.dark.css │ │ ├── atelier-estuary.light.css │ │ ├── atelier-forest.dark.css │ │ ├── atelier-forest.light.css │ │ ├── atelier-heath.dark.css │ │ ├── atelier-heath.light.css │ │ ├── atelier-lakeside.dark.css │ │ ├── atelier-lakeside.light.css │ │ ├── atelier-plateau.dark.css │ │ ├── atelier-plateau.light.css │ │ ├── atelier-savanna.dark.css │ │ ├── atelier-savanna.light.css │ │ ├── atelier-seaside.dark.css │ │ ├── atelier-seaside.light.css │ │ ├── atelier-sulphurpool.dark.css │ │ ├── atelier-sulphurpool.light.css │ │ ├── brown_paper.css │ │ ├── brown_papersq.png │ │ ├── codepen-embed.css │ │ ├── color-brewer.css │ │ ├── dark.css │ │ ├── darkula.css │ │ ├── default.css │ │ ├── docco.css │ │ ├── far.css │ │ ├── foundation.css │ │ ├── github-gist.css │ │ ├── github.css │ │ ├── googlecode.css │ │ ├── grayscale.css │ │ ├── hopscotch.css │ │ ├── hybrid.css │ │ ├── idea.css │ │ ├── ir_black.css │ │ ├── kimbie.dark.css │ │ ├── kimbie.light.css │ │ ├── magula.css │ │ ├── mono-blue.css │ │ ├── monokai.css │ │ ├── monokai_sublime.css │ │ ├── obsidian.css │ │ ├── paraiso.dark.css │ │ ├── paraiso.light.css │ │ ├── pojoaque.css │ │ ├── pojoaque.jpg │ │ ├── railscasts.css │ │ ├── rainbow.css │ │ ├── school_book.css │ │ ├── school_book.png │ │ ├── solarized_dark.css │ │ ├── solarized_light.css │ │ ├── sunburst.css │ │ ├── tomorrow-night-blue.css │ │ ├── tomorrow-night-bright.css │ │ ├── tomorrow-night-eighties.css │ │ ├── tomorrow-night.css │ │ ├── tomorrow.css │ │ ├── vs.css │ │ ├── xcode.css │ │ └── zenburn.css ├── img │ ├── bearback.jpg │ └── birdback.jpg └── js │ ├── editpost.js │ └── techblog.js └── templates ├── 404.html ├── 500.html ├── base.html ├── footer.html ├── ga.html ├── moya.comments └── widgets │ ├── comment_editor.html │ ├── comment_form_new.html │ ├── comment_form_reply.html │ ├── comment_markup.html │ └── comments.html ├── navbar.html └── willmcgugan.techblog ├── base.html ├── blog_list.html ├── channel_list.html ├── editor └── draft.html ├── editor_base.html ├── feed_description.html ├── inserts └── post_image.html ├── list.html ├── photo_fan.html ├── post_info.html ├── posts ├── page.html └── text.html ├── read_more.html ├── rpc ├── images.html ├── preview_comment.html └── preview_content.html ├── search.html ├── search_header.html ├── settings ├── base.html ├── drafts.html └── links.html ├── social.html ├── summary ├── photo.html └── text.html ├── summary_img.html ├── tag_header.html └── widgets ├── narrow_posts_list.html ├── popular_tags.html ├── post.html ├── post_content.html ├── posts_by_month.html ├── recent_posts.html └── related_posts.html /.gitignore: -------------------------------------------------------------------------------- 1 | *.orig 2 | *.project 3 | *.pyc 4 | *.egg 5 | *.egg-info 6 | *.db 7 | *.sqlite 8 | *.sublime-* 9 | /**/__*__ 10 | .eggs 11 | .tox 12 | build/ 13 | .DS_Store 14 | *.sqllite 15 | local.ini 16 | pg.ini 17 | -------------------------------------------------------------------------------- /CHANGES.txt: -------------------------------------------------------------------------------- 1 | 1.0.0 2 | ----- 3 | 4 | First feature complete release 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 moyaproject 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn --chdir ./heroku wsgi:application --log-file - 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Moya Tech Blog 2 | 3 | Blog software for code and Photography. See [this blog post](https://www.willmcgugan.com/blog/tech/post/moya-tech-blog/) for more details. 4 | 5 | ## Installing Moya 6 | 7 | If you don't have moya installed, install it from the command line with: 8 | 9 | pip install moya 10 | 11 | You may need 'sudo' on some platforms. If you have an older version of Moya, add the -U switch to upgrade. 12 | 13 | You will also need the following for the 'Sign In' buttons. 14 | 15 | pip install requests_oauthlib 16 | 17 | ## Getting Started 18 | 19 | To set up a Techblog site, run the following: 20 | 21 | git clone git@github.com:moyaproject/moya-techblog.git 22 | cd moya-techblog/site 23 | moya init 24 | 25 | You can now run a development server with this command: 26 | 27 | moya runserver 28 | 29 | Navigate to http://127.0.0.1:8000 to see your blog. 30 | 31 | ## Deploy with Heroku 32 | 33 | Deploy directly to Heroku by clicking the following button (see [this blog post](https://www.willmcgugan.com/blog/tech/post/deploy-moya-tech-blog-with-heroku/) for more information). 34 | 35 | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/moyaproject/moya-techblog) 36 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Moya Tech Blog", 3 | "description": "A blogging engine for coders and photographers", 4 | "repository": "https://github.com/moyaproject/moya-techblog", 5 | "success_url": "/", 6 | "keywords": [ 7 | "moya", 8 | "blog", 9 | "blogging", 10 | "photography" 11 | ], 12 | "scripts": { 13 | "postdeploy": "moya db sync && moya auth#cmd.init --username $SUPER_USER --password $SUPER_PASSWORD --email $SUPER_EMAIL && moya techblog#cmd.init --force" 14 | }, 15 | "env": { 16 | "BLOG_TITLE": { 17 | "value": "Techblog", 18 | "description": "Title of your blog" 19 | }, 20 | "SUPER_USER": { 21 | "value": "admin", 22 | "description": "Super user's username, enter your username here" 23 | }, 24 | "SUPER_EMAIL": { 25 | "value": "", 26 | "description": "Enter your email address here" 27 | }, 28 | "SUPER_PASSWORD": { 29 | "value": "admin", 30 | "description": "Super user's password (change it when you first log in)" 31 | }, 32 | "MOYA_SECRET": { 33 | "description": "Some random characters for cookies and CSRF detection", 34 | "generator": "secret" 35 | }, 36 | "MOYA_DEBUG": { 37 | "description": "Set to 'yes' to enable debug mode (you can enable it later if you need to)", 38 | "value": "no" 39 | }, 40 | "MOYA_PROJECT": { 41 | "value": "/app/heroku", 42 | "description": "The /heroku directory contains custom setting for the Herokou platform" 43 | }, 44 | "MOYA_PROJECT_INI": { 45 | "value": "heroku.ini", 46 | "description": "INI file to load settings from ('heroku.ini' for Heroki platform)" 47 | }, 48 | "TECHBLOG_UPLOADS_LOCATION": { 49 | "value": "./__uploads__", 50 | "description": "filesystem for uploads, may be be directory or s3://S3_KEY:S3_SECRET@BUCKET" 51 | }, 52 | "TECHBLOG_THUMBS_URL": { 53 | "value": "/uploads/", 54 | "description": "URL that serves uploaded media, should be '/uploads/' or S3 static URL" 55 | } 56 | }, 57 | "addons": [ 58 | "heroku-postgresql:hobby-dev" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /custom/logging.ini: -------------------------------------------------------------------------------- 1 | [logger:root] 2 | handlers=moyaconsole 3 | 4 | [logger:moya] 5 | level=DEBUG 6 | 7 | [logger:moya.startup] 8 | 9 | [logger:moya.signal] 10 | 11 | [logger:sqlalchemy.engine] 12 | handlers=moyaconsole 13 | level=WARN 14 | propagate=no 15 | 16 | [handler:moyaconsole] 17 | class=moya.logtools.MoyaConsoleHandler 18 | formatter=simple 19 | args=(sys.stdout,) 20 | 21 | [handler:stdout] 22 | class=StreamHandler 23 | formatter=simple 24 | args=(sys.stdout,) 25 | 26 | [formatter:simple] 27 | format=%(asctime)s:%(name)s:%(levelname)s: %(message)s 28 | datefmt=[%d/%b/%Y %H:%M:%S] 29 | 30 | -------------------------------------------------------------------------------- /custom/moya: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/custom/moya -------------------------------------------------------------------------------- /custom/settings.ini: -------------------------------------------------------------------------------- 1 | 2 | [customize] 3 | # Tell Moya to load and customize another project 4 | location = ../site/ 5 | settings = settings.ini 6 | 7 | 8 | #[db:main] 9 | #engine = sqlite:///../site/basic.sqlite 10 | #echo = no 11 | #default = yes 12 | 13 | 14 | -------------------------------------------------------------------------------- /heroku/heroku.ini: -------------------------------------------------------------------------------- 1 | 2 | [customize] 3 | # Tell Moya to load and customize another project 4 | location = ../site/ 5 | settings = settings.ini 6 | 7 | [settings] 8 | title = $BLOG_TITLE 9 | 10 | [project] 11 | debug = $MOYA_DEBUG 12 | preflight = no 13 | secret = $MOYA_SECRET 14 | 15 | [console] 16 | color = no 17 | logger = moya.console 18 | 19 | [db:main] 20 | # Heroku sets a DATABASE_URL environment variable, which happens to be in the format we need 21 | # Moya expands this automatically 22 | engine = $DATABASE_URL 23 | echo = no 24 | default = yes 25 | 26 | [fs:uploads] 27 | # Uploads location 28 | location = $TECHBLOG_UPLOADS_LOCATION 29 | create = yes 30 | 31 | [settings:thumbs] 32 | serve_url = $TECHBLOG_THUMBS_URL 33 | app_serve = 34 | 35 | # Store caches in Heroku's ephemeral filesystem 36 | 37 | [cache:parser] 38 | # Cache used to store parsed expressions 39 | type = file 40 | namespace = parser 41 | location = ./__moyacache__ 42 | compress = no 43 | 44 | [cache:templates] 45 | # Cache used to store compiled templates 46 | type = file 47 | debug = no 48 | namespace = templates 49 | location = ./__moyacache__ 50 | 51 | [cache:fragment] 52 | # Cache used to store html fragments 53 | type = file 54 | namespace = fragment 55 | debug = no 56 | location = ./__moyacache__ 57 | 58 | [cache:runtime] 59 | # Cache to store runtime data 60 | type = file 61 | location = ./__moyacache__ 62 | namespace = runtime 63 | debug = no 64 | -------------------------------------------------------------------------------- /heroku/logging.ini: -------------------------------------------------------------------------------- 1 | [logger:root] 2 | handers=stdout 3 | 4 | [logger:moya] 5 | level=DEBUG 6 | 7 | [logger:moya.request] 8 | handlers=stdout 9 | level=INFO 10 | propage=no 11 | 12 | [handler:stdout] 13 | class=StreamHandler 14 | formatter=simple 15 | args=(sys.stdout,) 16 | 17 | [formatter:simple] 18 | format=%(asctime)s:%(name)s:%(levelname)s: %(message)s 19 | datefmt=[%d/%b/%Y %H:%M:%S] 20 | -------------------------------------------------------------------------------- /heroku/moya: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/heroku/moya -------------------------------------------------------------------------------- /heroku/postdeploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | moya db sync 3 | moya auth#cmd.init --username $SUPER_USER --password $SUPER_PASSWORD --email $SUPER_EMAIL 4 | moya techblog#cmd.init --force 5 | -------------------------------------------------------------------------------- /heroku/readme.txt: -------------------------------------------------------------------------------- 1 | This directory sets up the project for running on Heroku (http://www.heroku.com) 2 | 3 | The heroku.ini files tells Moya to load the project from site/ with custom settings for heroku -------------------------------------------------------------------------------- /heroku/wsgi.py: -------------------------------------------------------------------------------- 1 | # encoding=UTF-8 2 | from __future__ import unicode_literals 3 | from moya.wsgi import Application 4 | 5 | application = Application('./', ['heroku.ini'], server='main', logging='logging.ini') 6 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | gunicorn 2 | moya==0.5.30 3 | requests_oauthlib 4 | psycopg2 5 | boto 6 | -------------------------------------------------------------------------------- /runtime.txt: -------------------------------------------------------------------------------- 1 | python-2.7.10 2 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setuptools 2 | 3 | VERSION = "0.1.0" 4 | 5 | setup( 6 | name='techblog', 7 | version=VERSION, 8 | description="Blog for Coders and Photographers", 9 | zip_safe=False, 10 | license="MIT", 11 | author="Will McGugan", 12 | author_email="willmcgugan@gmail.com", 13 | url="https://github.com/moyaproject/moya-techblog", 14 | 15 | entry_points={ 16 | "console_scripts": [ 17 | 'techblog = techblog:main' 18 | ] 19 | 20 | } 21 | 22 | ) -------------------------------------------------------------------------------- /site/data/readme.txt: -------------------------------------------------------------------------------- 1 | Static data (typically json files) may be placed here. 2 | -------------------------------------------------------------------------------- /site/external/moya.fontawesome/__init__.py: -------------------------------------------------------------------------------- 1 | # Required if you want to distribute your library as a Python module 2 | -------------------------------------------------------------------------------- /site/external/moya.fontawesome/docs/index.txt: -------------------------------------------------------------------------------- 1 | [title Font Awesome] 2 | 3 | This library bundles the [url http://fortawesome.github.io/Font-Awesome/]Font Awesome[/url] assets, which contain a large number of icons packed in to a font. 4 | 5 | You can include Font Awesome CSS by adding the following to your content: 6 | 7 | [code xml] 8 | 9 | [/code] 10 | 11 | Or, by adding the following directly to your base template: 12 | 13 | [code moyatemplate] 14 | 15 | [/code] 16 | -------------------------------------------------------------------------------- /site/external/moya.fontawesome/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = admin@moyaproject.com 4 | organization = Moya Project 5 | url = https://www.moyaproject.com 6 | 7 | [lib] 8 | title = Moya Font Awesome 9 | url = https://github.com/moyaproject/moya-fontawesome 10 | namespace = http://moyaproject.com/fontawesome 11 | name = moya.fontawesome 12 | # Set to 0.1.0 for your first release 13 | version = 0.1.2 14 | 15 | [settings] 16 | 17 | [media:media] 18 | location = ./media 19 | 20 | [locale] 21 | location = ./locale 22 | default_language = en 23 | languages = en 24 | 25 | [documentation] 26 | location = ./docs 27 | 28 | [package] 29 | exclude = __*__/* 30 | .* 31 | *.pyc 32 | .svn 33 | .hg 34 | .git 35 | 36 | -------------------------------------------------------------------------------- /site/external/moya.fontawesome/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Translations go here. Use the 'moya extract' command to create message 2 | catalogs. 3 | 4 | 5 | -------------------------------------------------------------------------------- /site/external/moya.fontawesome/manifest.csv: -------------------------------------------------------------------------------- 1 | "path","md5","auth md5" 2 | "/lib.ini",dc2a0ca6a699089ce326dcb04bc07e19,ca007459d338d01aeeffe1f7b5227308 3 | "/__init__.py",e54925e1ed3818adfd6c00bffa62f89d,07f2dead3bac69c65db162b2f4aba71c 4 | "/locale/readme.txt",06c4fce01453459edb43d2857ebcc873,c44a09c4f28517782589988dd758c62e 5 | "/media/readme.txt",ca958e537f29bc260e179537ce151dba,77e93fe2d9cd8aa606d603a8dbe35e93 6 | "/media/fonts/fontawesome-webfont.woff",d9ee23d59d0e0e727b51368b458a0bff,63de4353dbb8e0cb0df73b9479141268 7 | "/media/fonts/fontawesome-webfont.woff2",97493d3f11c0a3bd5cbd959f5d19b699,ddc6d5d8e415a2e60cd93a8f6a41d644 8 | "/media/fonts/fontawesome-webfont.ttf",706450d7bba6374ca02fe167d86685cb,e7ca06fd720de96806d2280b494953b3 9 | "/media/fonts/fontawesome-webfont.svg",2980083682e94d33a66eef2e7d612519,206967a3e42b04c3978580f0c9e4c35f 10 | "/media/fonts/fontawesome-webfont.eot",f7c2b4b747b1a225eb8dee034134a1b0,72550ed3cf1555e8742fdd4c88e4e226 11 | "/media/fonts/FontAwesome.otf",0b462f5cc07779cab3bef252c0271f2b,a2d56f3bc1a318ad50082d9f9f88bc7d 12 | "/media/css/font-awesome.min.css",04425bbdc6243fc6e54bf8984fe50330,2f481a2e9ccda9ffdc43e9d255678efd 13 | "/media/css/font-awesome.css",3f05a51a1e5260f4179db8ca65307a6a,8b40b5b945fcf73792b94a0b5f6905b2 14 | "/docs/index.txt",b21709851b16e61fc0f02bed2d6f7642,3d4dc6f761ea5ef4c1de3b67520a334b -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.fontawesome/media/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.fontawesome/media/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.fontawesome/media/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.fontawesome/media/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.fontawesome/media/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /site/external/moya.fontawesome/media/readme.txt: -------------------------------------------------------------------------------- 1 | Put any shared media (css, JS etc) here 2 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/__init__.py: -------------------------------------------------------------------------------- 1 | # Required if you want to distribute your library as a Python module 2 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/docs/index.txt: -------------------------------------------------------------------------------- 1 | [title Moya Image Lib] 2 | 3 | Welcome to Moya Image Lib Documentation. 4 | 5 | [index] 6 | introduction 7 | [/index] 8 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/docs/introduction.txt: -------------------------------------------------------------------------------- 1 | [title Introduction] 2 | 3 | Test 4 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = will@willmcgugan.com 4 | organization = Moya Project 5 | url = http://willmcgugan.com 6 | 7 | [lib] 8 | location = ./logic 9 | title = Moya Imagelib 10 | url = 11 | namespace = http://moyaproject.com/imagelib 12 | name = moya.imagelib 13 | version = 1.0.24 14 | 15 | [settings] 16 | imagefs = uploads 17 | app_serve = serve_uploads 18 | thumbnails = #thumbnails.manager 19 | 20 | manage_permission = admin 21 | uploader_permission = 22 | 23 | manage_check = 24 | uploader_check = moya.imagelib#macro.uploader.check 25 | 26 | [templates] 27 | location = ./templates 28 | 29 | [media:media] 30 | location = ./media 31 | 32 | [locale] 33 | location = ./locale 34 | default_language = en 35 | languages = en 36 | 37 | [documentation] 38 | location = ./docs 39 | 40 | [package] 41 | exclude = __*__/* 42 | .* 43 | *.pyc 44 | .svn 45 | .hg 46 | .git 47 | 48 | [requires] 49 | install = moya.widgets.extra==0.1.0 50 | moya.thumbnail 51 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Translations go here. Use the 'moya extract' command to create message 2 | catalogs. 3 | 4 | 5 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/admin.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 18 | ${object.uuid} 19 | ${object.slug or ''} 20 | 21 | Manage 22 | 23 |
24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ${object.uuid} 35 | ${object.title} 36 | ${object.created_time.local % "short"} 37 | ${object.uploaded_time.local % "short"} 38 |
39 | 40 |
41 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/content.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 |
13 | Hello, ${name}! 14 | 15 |
16 |
17 | 18 | 19 |
20 | 21 |
22 |
23 | 24 | 25 |
26 | 27 |
28 |
29 | 30 | 31 |
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 45 |
46 |
47 |
48 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/macros.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | default uploader check used, override with 'uploader_check' setting 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/mountpoints.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/signals.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | deleted '${file}' from fs ${imagefs} 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/tags.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Clone an existing collection with new image objects referencing the original files 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/logic/thumbs.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/media/img/shade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.imagelib/media/img/shade.png -------------------------------------------------------------------------------- /site/external/moya.imagelib/media/img/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.imagelib/media/img/transparent.png -------------------------------------------------------------------------------- /site/external/moya.imagelib/media/readme.txt: -------------------------------------------------------------------------------- 1 | Put any shared media (css, JS etc) here 2 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/base.html: -------------------------------------------------------------------------------- 1 | {% extends "/base.html" %} 2 | 3 | {% block "body" %} 4 |

Moya Imagelib

5 |
6 | Created by moya start library 7 |
8 | {% render sections.body %} 9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/emptyoption.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | ${text} 5 |
6 |
-------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/imglist.html: -------------------------------------------------------------------------------- 1 | {% for img in collection.images %} 2 | 3 | {% endfor %} -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/managerbase.html: -------------------------------------------------------------------------------- 1 | {% extends "wide.html" from "moya.twitter.bootstrap" %} -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/option.html: -------------------------------------------------------------------------------- 1 |
2 | {% if img.file %} 3 | 4 | {% endif %} 5 |
6 | ${img.title}
7 | ${img.width} x ${img.height} pixels 8 |
9 |
-------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/manager/fragments/progress.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 |
7 |
8 |
-------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/manager/image_form.html: -------------------------------------------------------------------------------- 1 | {# rendered in an rpc call #} 2 | {% if image %} 3 |
4 |

5 | 6 | 7 | 8 |

9 |
${image.title}
10 | 11 |
12 |
Dimensions
13 |
${image.width} x ${image.height} pixels
14 | 15 | {%- if image.filesize %} 16 |
Filesize
17 |
${filesize:image.filesize} (${image.filesize::','} bytes)
18 | {%- endif %} 19 | 20 | {%- if image.owner %} 21 |
Uploaded by
22 |
${image.owner.username}
23 | {% endif %} 24 | 25 | {%- if image.uploaded_time %} 26 |
Uploaded time
27 |
${localize:image.uploaded_time}
28 | {%- end-if %} 29 | 30 |
Original filename
31 |
${image.original_filename}
32 |
33 |
34 |
35 |
36 |
{% render form %}
37 |
38 | {% else %} 39 |
40 |
41 | The image was not found. 42 |

43 | It may have been deleted. Try reloading the page. 44 |
45 | 46 |

47 | 50 |

51 | 52 |
53 | {% endif %} 54 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/manager/manager_image.html: -------------------------------------------------------------------------------- 1 | {% if image.file %} 2 | {% spaceless %} 3 |
4 | {%- if edit %} 5 |
6 | {%- endif %} 7 | 8 |
9 | {% end %} 10 | {% endif %} -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/picker/picker.html: -------------------------------------------------------------------------------- 1 |

Picker

2 |
3 | 4 |
5 | 6 | {% with img=current %} 7 | 8 |
9 | ${img.title} 10 |
11 | {% end-with %} 12 |
13 | 14 |
15 | {% for img in images %} 16 |
17 | 18 |
19 | ${img.title} 20 |
21 |
22 | {% end-for %} 23 |
24 | 25 |
26 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain templates for widgets defined in the library. 2 | -------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/uploader/uploader.html: -------------------------------------------------------------------------------- 1 | 2 |
4 | 7 |
9 |
10 |
11 | 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 21 | Image upload failed 22 |
23 |
24 |
-------------------------------------------------------------------------------- /site/external/moya.imagelib/templates/moya.imagelib/widgets/uploader/uploader_image.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /site/external/moya.logins/__init__.py: -------------------------------------------------------------------------------- 1 | # Required if you want to distribute your library as a Python module 2 | -------------------------------------------------------------------------------- /site/external/moya.logins/docs/index.txt: -------------------------------------------------------------------------------- 1 | [title Moya Logins] 2 | 3 | Moya Logins adds the ability to log in to your Moya web application with external providers such as Google, Facebook and Twitter. 4 | 5 | [index] 6 | introduction 7 | configuration 8 | development 9 | [/index] 10 | -------------------------------------------------------------------------------- /site/external/moya.logins/docs/introduction.txt: -------------------------------------------------------------------------------- 1 | [title Introduction] 2 | 3 | Moya Logins enables external Sign In buttons, which allow a user to log in with credentials from one of a number of popular services, such as Google and Facebook. 4 | 5 | This means that a user can create a new account and login without having to fill in a sign up form, which can increase the number of Sign Ups you get. 6 | 7 | The technology behind this feature is known as OAuth and comes in two versions; OAuth 1 and OAuth 2. Moya Logins supports both. -------------------------------------------------------------------------------- /site/external/moya.logins/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = willmcgugan@gmail.com 4 | organization = Moya Project 5 | url = http://moyaproject.com 6 | 7 | [lib] 8 | location = ./logic 9 | title = Moya Logins 10 | url = 11 | namespace = http://moyaproject.com/logins 12 | name = moya.logins 13 | # Set to 0.1.0 for your first release 14 | version = 0.1.6-dev.8 15 | 16 | [settings] 17 | pick_username = yes 18 | 19 | [templates] 20 | location = ./templates 21 | 22 | [media:media] 23 | location = ./media 24 | 25 | [data] 26 | location = ./data 27 | 28 | [py:oauth1] 29 | location = ./py 30 | 31 | [py:oauth2] 32 | location = ./py 33 | 34 | [locale] 35 | location = ./locale 36 | default_language = en 37 | languages = en 38 | 39 | [documentation] 40 | location = ./docs 41 | 42 | [package] 43 | exclude = __*__/* 44 | .* 45 | *.pyc 46 | .svn 47 | .hg 48 | .git 49 | 50 | [requires] 51 | install = moya.fontawesome 52 | -------------------------------------------------------------------------------- /site/external/moya.logins/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Translations go here. Use the 'moya extract' command to create message 2 | catalogs. 3 | 4 | 5 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/admin.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | 27 | ${object.provider} 28 | 29 |
30 | 31 | 34 | ${object.user.username}/${object.provider} 35 | ${object.user.username} 36 | ${object.provider} 37 |
38 | 39 | 40 |
-------------------------------------------------------------------------------- /site/external/moya.logins/logic/commands.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | [provider=${name}] 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/customize.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | New Comment 11 | 12 |
13 | 14 | 15 | **Your comment has been saved** 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 | 30 | 31 |
-------------------------------------------------------------------------------- /site/external/moya.logins/logic/macros.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Provider name 13 | 14 | 15 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Provider name 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Unable to read provider information: ${error.msg} 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/models.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/mountpoints.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/preflight.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | moya.logins is not mounted. 9 | Add a <mount> tag to your sever.xml, or set the 'mount' attribute on the <install> tag. 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /site/external/moya.logins/logic/widgets.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | A login button 8 | 9 | 10 | Name of a registered provider 11 | 12 | 13 | URL to redirect to if login is successful 14 | 15 | 16 | Extra class(es) for button 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /site/external/moya.logins/media/css/logins.css: -------------------------------------------------------------------------------- 1 | .moya-logins-pick-username .form-group:last-child 2 | { 3 | margin-bottom:0px; 4 | } -------------------------------------------------------------------------------- /site/external/moya.logins/media/readme.txt: -------------------------------------------------------------------------------- 1 | Put any shared media (css, JS etc) here 2 | -------------------------------------------------------------------------------- /site/external/moya.logins/py/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.logins/py/__init__.py -------------------------------------------------------------------------------- /site/external/moya.logins/requirements.txt: -------------------------------------------------------------------------------- 1 | requests_oauthlib 2 | -------------------------------------------------------------------------------- /site/external/moya.logins/templates/moya.auth/login_container.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% children %} 4 |
5 |
6 | -------------------------------------------------------------------------------- /site/external/moya.logins/templates/moya.logins/admin/provider.html: -------------------------------------------------------------------------------- 1 |
2 |
${name}
3 |
4 | {% children %} 5 |
6 |
7 | -------------------------------------------------------------------------------- /site/external/moya.logins/templates/moya.logins/base.html: -------------------------------------------------------------------------------- 1 | {% extends "/base.html" %} 2 | 3 | {% block "body" %} 4 |

Moya OpenID

5 |
6 | Created by moya start library 7 |
8 | {% render sections.body %} 9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /site/external/moya.logins/templates/moya.logins/widgets/login-button.html: -------------------------------------------------------------------------------- 1 | 2 | Sign in with ${provider.title} 3 | -------------------------------------------------------------------------------- /site/external/moya.logins/templates/moya.logins/widgets/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain templates for widgets defined in the library. 2 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/__init__.py: -------------------------------------------------------------------------------- 1 | # Required if you want to distribute your library as a Python module 2 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/docs/index.txt: -------------------------------------------------------------------------------- 1 | [title Moya Image Lib] 2 | 3 | Welcome to Moya Image Lib Documentation. 4 | 5 | [index] 6 | introduction 7 | [/index] 8 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/docs/introduction.txt: -------------------------------------------------------------------------------- 1 | [title Introduction] 2 | 3 | Test 4 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = will@willmcgugan.com 4 | organization = Moya Project 5 | url = http://willmcgugan.com 6 | 7 | [lib] 8 | location = ./logic 9 | title = Moya Imagelib 10 | url = 11 | namespace = http://moyaproject.com/imagelib 12 | name = moya.imagelib 13 | version = 1.0.24 14 | 15 | [settings] 16 | imagefs = uploads 17 | app_serve = serve_uploads 18 | thumbnails = #thumbnails.manager 19 | 20 | manage_permission = admin 21 | uploader_permission = 22 | 23 | manage_check = 24 | uploader_check = moya.imagelib#macro.uploader.check 25 | 26 | [templates] 27 | location = ./templates 28 | 29 | [media:media] 30 | location = ./media 31 | 32 | [locale] 33 | location = ./locale 34 | default_language = en 35 | languages = en 36 | 37 | [documentation] 38 | location = ./docs 39 | 40 | [package] 41 | exclude = __*__/* 42 | .* 43 | *.pyc 44 | .svn 45 | .hg 46 | .git 47 | 48 | [requires] 49 | install = moya.widgets.extra==0.1.0 50 | moya.thumbnail 51 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Translations go here. Use the 'moya extract' command to create message 2 | catalogs. 3 | 4 | 5 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/admin.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 18 | ${object.uuid} 19 | ${object.slug or ''} 20 | 21 | Manage 22 | 23 |
24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ${object.uuid} 35 | ${object.title} 36 | ${object.created_time.local % "short"} 37 | ${object.uploaded_time.local % "short"} 38 |
39 | 40 |
41 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/content.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 |
13 | Hello, ${name}! 14 | 15 |
16 |
17 | 18 | 19 |
20 | 21 |
22 |
23 | 24 | 25 |
26 | 27 |
28 |
29 | 30 | 31 |
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 45 |
46 |
47 |
48 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/macros.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | default uploader check used, override with 'uploader_check' setting 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/mountpoints.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/signals.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | deleted '${file}' from fs ${imagefs} 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/tags.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Clone an existing collection with new image objects referencing the original files 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/logic/thumbs.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/media/img/shade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.thumbnail/media/img/shade.png -------------------------------------------------------------------------------- /site/external/moya.thumbnail/media/img/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/site/external/moya.thumbnail/media/img/transparent.png -------------------------------------------------------------------------------- /site/external/moya.thumbnail/media/readme.txt: -------------------------------------------------------------------------------- 1 | Put any shared media (css, JS etc) here 2 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/base.html: -------------------------------------------------------------------------------- 1 | {% extends "/base.html" %} 2 | 3 | {% block "body" %} 4 |

Moya Imagelib

5 |
6 | Created by moya start library 7 |
8 | {% render sections.body %} 9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/emptyoption.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | ${text} 5 |
6 |
-------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/imglist.html: -------------------------------------------------------------------------------- 1 | {% for img in collection.images %} 2 | 3 | {% endfor %} -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/managerbase.html: -------------------------------------------------------------------------------- 1 | {% extends "wide.html" from "moya.twitter.bootstrap" %} -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/option.html: -------------------------------------------------------------------------------- 1 |
2 | {% if img.file %} 3 | 4 | {% endif %} 5 |
6 | ${img.title}
7 | ${img.width} x ${img.height} pixels 8 |
9 |
-------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/manager/fragments/progress.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 |
7 |
8 |
-------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/manager/image_form.html: -------------------------------------------------------------------------------- 1 | {# rendered in an rpc call #} 2 | {% if image %} 3 |
4 |

5 | 6 | 7 | 8 |

9 |
${image.title}
10 | 11 |
12 |
Dimensions
13 |
${image.width} x ${image.height} pixels
14 | 15 | {%- if image.filesize %} 16 |
Filesize
17 |
${filesize:image.filesize} (${image.filesize::','} bytes)
18 | {%- endif %} 19 | 20 | {%- if image.owner %} 21 |
Uploaded by
22 |
${image.owner.username}
23 | {% endif %} 24 | 25 | {%- if image.uploaded_time %} 26 |
Uploaded time
27 |
${localize:image.uploaded_time}
28 | {%- end-if %} 29 | 30 |
Original filename
31 |
${image.original_filename}
32 |
33 |
34 |
35 |
36 |
{% render form %}
37 |
38 | {% else %} 39 |
40 |
41 | The image was not found. 42 |

43 | It may have been deleted. Try reloading the page. 44 |
45 | 46 |

47 | 50 |

51 | 52 |
53 | {% endif %} 54 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/manager/manager_image.html: -------------------------------------------------------------------------------- 1 | {% if image.file %} 2 | {% spaceless %} 3 |
4 | {%- if edit %} 5 |
6 | {%- endif %} 7 | 8 |
9 | {% end %} 10 | {% endif %} -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/picker/picker.html: -------------------------------------------------------------------------------- 1 |

Picker

2 |
3 | 4 |
5 | 6 | {% with img=current %} 7 | 8 |
9 | ${img.title} 10 |
11 | {% end-with %} 12 |
13 | 14 |
15 | {% for img in images %} 16 |
17 | 18 |
19 | ${img.title} 20 |
21 |
22 | {% end-for %} 23 |
24 | 25 |
26 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain templates for widgets defined in the library. 2 | -------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/uploader/uploader.html: -------------------------------------------------------------------------------- 1 | 2 |
4 | 7 |
9 |
10 |
11 | 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 21 | Image upload failed 22 |
23 |
24 |
-------------------------------------------------------------------------------- /site/external/moya.thumbnail/templates/moya.imagelib/widgets/uploader/uploader_image.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /site/external/moya.widgets.extra/__init__.py: -------------------------------------------------------------------------------- 1 | # Required if you want to distribute your library as a Python module 2 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/docs/index.txt: -------------------------------------------------------------------------------- 1 | [title Documentation Index] 2 | Welcome to Moya Extra Widgets documentation 3 | 4 | This library adds additional widgets to Moya's built-in widgets library 5 | 6 | [index] 7 | introduction 8 | [/index] 9 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/docs/introduction.txt: -------------------------------------------------------------------------------- 1 | [title Introduction] 2 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = willmcgugan@gmail.com 4 | organization = Moya Project 5 | url = http://moyaproject.com 6 | 7 | [lib] 8 | location = ./logic 9 | title = Moya Widgets Extra 10 | url = http://moyaproject.com 11 | namespace = http://moyaproject.com/widgets 12 | name = moya.widgets.extra 13 | # Set to 0.1.0 for your first release 14 | version = 0.1.0 15 | 16 | [settings] 17 | 18 | [templates] 19 | location = ./templates 20 | 21 | [media:media] 22 | location = ./media 23 | 24 | [locale] 25 | location = ./locale 26 | default_language = en 27 | languages = en 28 | 29 | [documentation] 30 | location = ./docs 31 | 32 | [package] 33 | exclude = __*__/* 34 | .* 35 | *.pyc 36 | .svn 37 | .hg 38 | .git 39 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Translations go here. Use the 'moya extract' command to create message 2 | catalogs. 3 | 4 | 5 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 |
11 | Hello, ${name}! 12 | 13 |
14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/models.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/mountpoints.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/readme.txt: -------------------------------------------------------------------------------- 1 | Moya code goes here 2 | 3 | The filenames used here are just a suggestion of how to organize your Moya code 4 | -- all files with the extension .xml will be read. 5 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/signals.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/tags.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/views.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/logic/widgets.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | .moya-widgets-select,.moya-widgets-select-current 20 | { 21 | border-color: ${.theme.colors.border.normal}; 22 | } 23 | .moya-widgets-option:hover 24 | { 25 | background-color:${.theme.colors.highlight.bg}; 26 | color:${.theme.colors.highlight.fg}; 27 | } 28 | .moya-widgets-select .moya-widgets-option.active 29 | { 30 | background-color:${.theme.colors.selected.bg}; 31 | color:${.theme.colors.selected.fg}; 32 | } 33 | .moya-widgets-select-container.focused .moya-widgets-select 34 | { 35 | border-color:${.theme.colors.border.focused}; 36 | } 37 | 38 | 39 | $("#${id}").moyaSelect(${json:options}); 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/manifest.csv: -------------------------------------------------------------------------------- 1 | "path","md5","auth md5" 2 | "/__init__.py",e54925e1ed3818adfd6c00bffa62f89d,07f2dead3bac69c65db162b2f4aba71c 3 | "/docs/index.txt",d095cc258282eaf936b3553d7cc76323,c964693a0969994b1a6120af46df6235 4 | "/docs/introduction.txt",6e757242abcd892c46a7cd0e5a664b31,c9fd815572b2543c78022bbe4fc917b4 5 | "/lib.ini",4a6a11d8fd0cc6aa76a21a5e286d98d4,7eb9c8ccde60c7f32c90ec16a8d320b9 6 | "/locale/readme.txt",06c4fce01453459edb43d2857ebcc873,c44a09c4f28517782589988dd758c62e 7 | "/logic/content.xml",bd37bd718ddc4f838205b547cbf9bc99,d1bd5ea77d462248f73a1ed8dbf9123f 8 | "/logic/forms.xml",291092bfcc128aae063f1ea974c21cc5,45707742181ca26591caec1b3b2b3ad5 9 | "/logic/models.xml",790e476f895f35ac44578bc4d726ab46,72f47ec38da5ef07af86805c412c9723 10 | "/logic/mountpoints.xml",3691a4def0b78c0676a390e30c6443ad,32d62ff8c338f32b0b13eecc979d4fb4 11 | "/logic/readme.txt",c9b6ae3a72d38bce525f828d88a29f78,6c8d877e335ec732a80091f9f7990aa9 12 | "/logic/signals.xml",b4bd529963cd7022f1c19af0060f1632,cb5ef45fdca0ef9471b8e950f07d298c 13 | "/logic/tags.xml",0e11b0ce2f7190bb982d19ab3e16f2f1,3debb8c9dc093d7013cce880abb812d6 14 | "/logic/views.xml",0c83e921235f59881913a520dce80714,52632a4329d0f54e4151acbd83fcfc7f 15 | "/logic/widgets.xml",7137963b1b9d0ffc818cbf2c7bfae7fd,8f96096111a84890621f0f8ea8309147 16 | "/media/css/widgetsextra.css",03776b613a1176d6aee4aea6b73858f9,d0a35542434dd2501156b3a1d85130e3 17 | "/media/js/widgetsextra.js",ca3e2b7996f52bf96aeed00b02996161,e4c6b4fc898bd81634ba5e2c99849bc5 18 | "/media/readme.txt",ca958e537f29bc260e179537ce151dba,77e93fe2d9cd8aa606d603a8dbe35e93 19 | "/templates/moya.widgets.extra/base.html",c1b899c16cba897d3c784615565ada5d,5233bf13d4a3e007fc7d6d8336d45cb0 20 | "/templates/moya.widgets.extra/widgets/option.html",7f4370b412c47ed7038546989488e56d,1357589cd16d6f967a4d391c99b5d937 21 | "/templates/moya.widgets.extra/widgets/readme.txt",3dbbc17a918596cb8b229d7d55bb33b9,e155f352f63950a54b4ac0bfa6bd35a8 22 | "/templates/moya.widgets.extra/widgets/select-drop.html",245dc143bd8bb9155849634e43b2fe6f,322444c0964dcf15d9d97ee030e91870 23 | "/templates/moya.widgets.extra/widgets/select.html",a25fb00c223060ca45f03f07ecd3fc71,9abdd05e4dddd61f63f96730e239f978 -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/media/css/widgetsextra.css: -------------------------------------------------------------------------------- 1 | .moya-widgets-select,.moya-widgets-select-current 2 | { 3 | border:1px solid #ccc; 4 | z-index:10; 5 | background-color:#fff; 6 | /*margin-top:4px;*/ 7 | border-radius:3px; 8 | padding:0px 0px; 9 | overflow:auto; 10 | max-height:300px; 11 | /*display:inline-block;*/ 12 | } 13 | 14 | .moya-widgets-option 15 | { 16 | padding:5px 10px; 17 | } 18 | 19 | .moya-widgets-select-container[disabled=disabled] 20 | { 21 | opacity: 0.5; 22 | cursor:auto; 23 | } 24 | 25 | .moya-widgets-option:hover 26 | { 27 | background-color:#f4f4f4; 28 | cursor:pointer; 29 | } 30 | 31 | .moya-widgets-select-container[disabled=disabled] .moya-widgets-option:hover 32 | { 33 | cursor:auto; 34 | background-color:inherit; 35 | } 36 | 37 | .moya-widgets-select .moya-widgets-option.active 38 | { 39 | background-color:#428bca; 40 | opacity:.7; 41 | } 42 | 43 | .moya-widgets-select .moya-widgets-option.active * 44 | { 45 | color:#fff !important; 46 | } 47 | 48 | .moya-widgets-select-container.focused .moya-widgets-option.active 49 | { 50 | opacity:1; 51 | } 52 | 53 | .moya-widgets-select-current 54 | { 55 | position:relative; 56 | -webkit-transform-style: preserve-3d; 57 | -moz-transform-style: preserve-3d; 58 | transform-style: preserve-3d; 59 | } 60 | 61 | .moya-widgets-select-current:before 62 | { 63 | content:'\25bc'; 64 | position:absolute; 65 | right:0.6em; 66 | top: 50%; 67 | transform: translateY(-50%); 68 | } 69 | 70 | .moya-widgets-select-container 71 | { 72 | position:relative; 73 | margin:0px; 74 | padding:0px; 75 | padding-top:5px; 76 | } 77 | 78 | .moya-widgets-select-container .moya-widgets-select-current 79 | { 80 | } 81 | 82 | .moya-widgets-select-container .moya-widgets-select 83 | { 84 | display:none; 85 | } 86 | 87 | .moya-widgets-select-container.focused .moya-widgets-select-current 88 | { 89 | /*display:none;*/ 90 | visibility: hidden; 91 | } 92 | 93 | .moya-widgets-select-container.focused .moya-widgets-select 94 | { 95 | display:block; 96 | position:absolute; 97 | z-index:5; 98 | top:5px; 99 | } 100 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/media/readme.txt: -------------------------------------------------------------------------------- 1 | Put any shared media (css, JS etc) here 2 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/templates/moya.widgets.extra/base.html: -------------------------------------------------------------------------------- 1 | {% extends "/base.html" %} 2 | 3 | {% block "body" %} 4 |

Moya Widgets Extra

5 |
6 | Created by moya start library 7 |
8 | {% render sections.body %} 9 | 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/templates/moya.widgets.extra/widgets/option.html: -------------------------------------------------------------------------------- 1 |
2 | {%- children -%} 3 |
4 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/templates/moya.widgets.extra/widgets/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain templates for widgets defined in the library. 2 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/templates/moya.widgets.extra/widgets/select-drop.html: -------------------------------------------------------------------------------- 1 | {%- let active_index=0, disabled=disabled or not bool:self.children -%} 2 | {%- for index, child in enumerate:self.children %} 3 | {%- if field.value == str:child.value %}{% let active_index=index %}{% end-if %} 4 | {%- end-for %} 5 | 6 |
7 |
8 | {%- for index, child in enumerate:self.children -%} 9 | {%- render child with index=index, field=field, active=index==active_index -%} 10 | {%- empty %} 11 |

empty

12 | {%- endfor %} 13 |
14 | 15 | {% with child=self.children[active_index], index=active_index %} 16 |
17 | {%- if not missing:child %} 18 | {% render child with index=index, field=field %} 19 | {%- else %} 20 |
21 | … 22 |
23 | {%- end-if -%} 24 |
25 | {% end-with %} 26 | 27 | 28 |
29 | -------------------------------------------------------------------------------- /site/external/moya.widgets.extra/templates/moya.widgets.extra/widgets/select.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | {% for index, child in enumerate:self.children %} 6 | {% render child with index=index, field=field %} 7 | {% endfor %} 8 |
9 |
10 | -------------------------------------------------------------------------------- /site/external/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain libraries that are external (i.e. authored 2 | elsewhere). 3 | The moya command line app installs libraries to this location. 4 | 5 | NB. If you make local edits to these files, the moya command line app may end 6 | up overwriting them! 7 | -------------------------------------------------------------------------------- /site/external/update.sh: -------------------------------------------------------------------------------- 1 | cp -rf /home/will/projects/moyaimagelib/moya.imagelib . 2 | cp -rf /home/will/projects/widgetsx/moya.widgets.extra . 3 | moya runserver -t --host 0.0.0.0 4 | -------------------------------------------------------------------------------- /site/local/readme.txt: -------------------------------------------------------------------------------- 1 | This folder should contain libraries that are local to the project, i.e. 2 | authored by yourself or organization. 3 | -------------------------------------------------------------------------------- /site/logging.ini: -------------------------------------------------------------------------------- 1 | [logger:root] 2 | handlers=moyaconsole 3 | 4 | [logger:moya] 5 | level=DEBUG 6 | 7 | [logger:moya.startup] 8 | 9 | [logger:moya.signal] 10 | 11 | [logger:sqlalchemy.engine] 12 | handlers=moyaconsole 13 | #level=DEBUG 14 | level=WARNING 15 | propagate=no 16 | 17 | [handler:moyaconsole] 18 | class=moya.logtools.MoyaConsoleHandler 19 | formatter=simple 20 | args=(sys.stdout,) 21 | 22 | [handler:stdout] 23 | class=StreamHandler 24 | formatter=simple 25 | args=(sys.stdout,) 26 | 27 | [formatter:simple] 28 | format=%(asctime)s:%(name)s:%(levelname)s: %(message)s 29 | datefmt=[%d/%b/%Y %H:%M:%S] 30 | 31 | -------------------------------------------------------------------------------- /site/logic/readme.txt: -------------------------------------------------------------------------------- 1 | This folder contains the first XML files read by Moya, which will typically 2 | contain one or more declarations. 3 | -------------------------------------------------------------------------------- /site/moya: -------------------------------------------------------------------------------- 1 | # The presence of this file indicates that this directory is a top-level moya project. 2 | # 3 | # The command line tool will look for this in the current directory and ancestors. 4 | # 5 | # Although the contents of this file are not currently read by Moya, in the future this file may be an INI file 6 | -------------------------------------------------------------------------------- /site/prodlogging.ini: -------------------------------------------------------------------------------- 1 | # Logging conf for production 2 | # Only errors and request information is written to stdout 3 | 4 | extends = logging.ini 5 | 6 | [logger:root] 7 | handlers=null 8 | 9 | [logger:moya] 10 | handlers=syslog 11 | level=ERROR 12 | propagate=no 13 | 14 | [logger:moya.request] 15 | level=INFO 16 | handlers=syslog 17 | propagate=no 18 | 19 | [formatter:syslog] 20 | format=:%(name)s:%(levelname)s: %(message)s 21 | datefmt=[%d/%b/%Y %H:%M:%S] 22 | 23 | [handler:syslog] 24 | formatter = syslog 25 | class = logging.handlers.SysLogHandler 26 | 27 | # Most Linuxes 28 | args = ('/dev/log',) 29 | 30 | # OSX 31 | # args = ('/var/run/syslog',) 32 | 33 | # Windows 34 | # args = () 35 | 36 | -------------------------------------------------------------------------------- /site/production.ini: -------------------------------------------------------------------------------- 1 | extends=basesettings.ini 2 | 3 | [project] 4 | debug = no 5 | preflight = no 6 | 7 | 8 | # Change this to your production database 9 | [db:main] 10 | engine = sqlite:///basic.sqlite 11 | echo = no 12 | default = yes 13 | 14 | -------------------------------------------------------------------------------- /site/readme.txt: -------------------------------------------------------------------------------- 1 | Getting Started 2 | =============== 3 | 4 | This file was created by running the command 'moya start project'. The other 5 | files in this directory contain a Moya project tailored to your requirements, 6 | based on your responses to the start project command. 7 | 8 | There are a few quick steps you need to run before you can begin developing 9 | your website. If you haven't already done so, open up a terminal and navigate 10 | to the same directory that contains this file. 11 | 12 | If you opted for a database, review the database settings in 'settings.ini'. 13 | The default settings will automatically create an sqlite database in this 14 | directory. 15 | 16 | After you have reviewed the database settings run the following command to 17 | 'synchronize' the database (i.e. create required tables): 18 | 19 | moya db sync 20 | 21 | If you enabled Moya auth support, run the following command to create initial 22 | permissions / groups and an admin user: 23 | 24 | moya auth#cmd.init 25 | 26 | Use the following command to run a development server: 27 | 28 | moya runserver 29 | 30 | If all goes well, Moya will let you know it is serving your web site. Point 31 | your browser at http://127.0.0.1:8000 to see it. 32 | 33 | See http://moyaproject.com/gettingstarted/ for more information. 34 | -------------------------------------------------------------------------------- /site/settings.ini: -------------------------------------------------------------------------------- 1 | extends=basesettings.ini 2 | 3 | [project] 4 | debug = yes 5 | preflight = yes 6 | log_signals = no 7 | develop = no 8 | 9 | [autoreload] 10 | enabled = yes 11 | extensions = .xml 12 | .ini 13 | .py 14 | .html 15 | .txt 16 | location = ../ 17 | 18 | 19 | # an SQLite database is useful for development 20 | [db:main] 21 | engine = sqlite:///basic.sqlite 22 | echo = no 23 | default = yes 24 | 25 | -------------------------------------------------------------------------------- /site/site/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = willmcgugan@gmail.com 4 | url = http://www.willmcgugan.com 5 | organization = Will McGugan 6 | 7 | [lib] 8 | title = Moya Techblog 9 | url = / 10 | namespace = 11 | name = site.moya-techblog 12 | location = ./logic 13 | version = 0.1 14 | 15 | [locale] 16 | location = ./locale 17 | default_language = en 18 | languages = en 19 | 20 | -------------------------------------------------------------------------------- /site/site/locale/readme.txt: -------------------------------------------------------------------------------- 1 | Internationalization files go here. 2 | 3 | -------------------------------------------------------------------------------- /site/site/logic/content.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /site/site/logic/data.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /site/site/logic/mountpoints.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /site/site/logic/readme.txt: -------------------------------------------------------------------------------- 1 | XML files go in here. 2 | 3 | The filenames used here are just a suggestion of how to organize your Moya code 4 | -- all files with the extension .xml will be read. 5 | -------------------------------------------------------------------------------- /site/site/readme.txt: -------------------------------------------------------------------------------- 1 | This folder contains the 'site' library. The site library is for functionality 2 | that is highly specific to the site, and is generally used to customize 3 | functionality of other libraries. 4 | -------------------------------------------------------------------------------- /site/static/auth-media/css/auth.css: -------------------------------------------------------------------------------- 1 | .moya-auth-signin .form-group:last-child 2 | { 3 | margin-bottom:0px; 4 | } 5 | 6 | .btn-social>:first-child 7 | { 8 | margin-top:4px; 9 | } 10 | -------------------------------------------------------------------------------- /site/static/readme.txt: -------------------------------------------------------------------------------- 1 | The contents of this directory will be served as static files by the 2 | moya.static library (including this file)! 3 | If you have directory listing enabled, you can see what files are served by 4 | visiting the /static/ url in your browser. 5 | -------------------------------------------------------------------------------- /site/templates/base.html: -------------------------------------------------------------------------------- 1 | {% extends "starter.html" from "moya.twitter.bootstrap" %} -------------------------------------------------------------------------------- /site/templates/email/base.html: -------------------------------------------------------------------------------- 1 | {%- block "content" %}{% endblock -%} 2 |

--

3 |

${.settings.project_title}

-------------------------------------------------------------------------------- /site/templates/email/base.txt: -------------------------------------------------------------------------------- 1 | {%- block "content" %}{% endblock -%} 2 | -- 3 | ${.settings.project_title} 4 | -------------------------------------------------------------------------------- /site/templates/readme.txt: -------------------------------------------------------------------------------- 1 | This folder contains site-wide templates, typically used to customize the look 2 | and feel of the site. 3 | -------------------------------------------------------------------------------- /site/themes/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors": 3 | { 4 | "text": 5 | { 6 | "fg": "#333", 7 | "bg": "white" 8 | }, 9 | "highlight": 10 | { 11 | "fg": "#333", 12 | "bg": "#eee" 13 | }, 14 | "selected": 15 | { 16 | "fg": "#fff", 17 | "bg": "#2780e3" 18 | }, 19 | "border": 20 | { 21 | "normal": "#ccc", 22 | "focused": "#ddd" 23 | } 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /site/wsgi.py: -------------------------------------------------------------------------------- 1 | # encoding=UTF-8 2 | from __future__ import unicode_literals 3 | from moya.wsgi import Application 4 | 5 | application = Application('./', ['local.ini', 'production.ini'], server='main', logging='prodlogging.ini') 6 | -------------------------------------------------------------------------------- /techblog.py: -------------------------------------------------------------------------------- 1 | # encoding=UTF-8 2 | from __future__ import unicode_literals 3 | 4 | import sys 5 | 6 | import moya 7 | from moya.wsgi import Application 8 | from moya.command.app import main 9 | 10 | application = Application('./', ['local.ini', 'production.ini'], server='main', logging='prodlogging.ini') 11 | -------------------------------------------------------------------------------- /techblog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/techblog/__init__.py -------------------------------------------------------------------------------- /techblog/app.py: -------------------------------------------------------------------------------- 1 | # encoding=UTF-8 2 | from __future__ import unicode_literals 3 | 4 | import sys 5 | 6 | from moya.command.app import main 7 | 8 | -------------------------------------------------------------------------------- /willmcgugan.techblog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/__init__.py -------------------------------------------------------------------------------- /willmcgugan.techblog/data/willmcgugan.techblog/feed_description_sanitize.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": 3 | [ 4 | "a", 5 | "abbr", 6 | "acronym", 7 | "b", 8 | "blockquote", 9 | "pre", 10 | "code", 11 | "em", 12 | "i", 13 | "li", 14 | "ol", 15 | "strong", 16 | "ul", 17 | "p", 18 | "br", 19 | "h1", 20 | "h2", 21 | "h3", 22 | "h4", 23 | "h5", 24 | "img", 25 | "caption", 26 | "figcaption", 27 | "div", 28 | "iframe" 29 | ], 30 | "attributes": 31 | { 32 | "a": ["href", "title"], 33 | "abbr": ["title"], 34 | "acronym": ["title"], 35 | "code": ["class"], 36 | "img": ["title", "src"], 37 | "iframe": ["width", "height", "src", "frameborder", "allowfullscreen"] 38 | }, 39 | "styles": 40 | [ 41 | ], 42 | "values": 43 | { 44 | "class": 45 | [ 46 | "language-python", 47 | "language-xml", 48 | "language-html", 49 | "language-css", 50 | "language-c", 51 | "language-cpp", 52 | "language-javascript", 53 | "language-ruby" 54 | ] 55 | }, 56 | "strip": true, 57 | "strip_comments": true 58 | } 59 | -------------------------------------------------------------------------------- /willmcgugan.techblog/data/willmcgugan.techblog/sanitize_rules.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": 3 | [ 4 | "a", 5 | "abbr", 6 | "acronym", 7 | "b", 8 | "blockquote", 9 | "pre", 10 | "code", 11 | "em", 12 | "i", 13 | "li", 14 | "ol", 15 | "strong", 16 | "ul", 17 | "p", 18 | "br", 19 | "h1", 20 | "h2", 21 | "h3", 22 | "h4", 23 | "h5" 24 | ], 25 | "attributes": 26 | { 27 | "a": ["href", "title"], 28 | "abbr": ["title"], 29 | "acronym": ["title"], 30 | "code": ["class"] 31 | }, 32 | "styles": 33 | [ 34 | ], 35 | "values": 36 | { 37 | "class": 38 | [ 39 | "language-python", 40 | "language-xml", 41 | "language-html", 42 | "language-css", 43 | "language-c", 44 | "language-cpp", 45 | "language-javascript", 46 | "language-ruby" 47 | ] 48 | }, 49 | "strip": false, 50 | "strip_comments": true 51 | } 52 | -------------------------------------------------------------------------------- /willmcgugan.techblog/lib.ini: -------------------------------------------------------------------------------- 1 | [author] 2 | name = Will McGugan 3 | email = will@moyaproject.com 4 | organization = Will McGugan 5 | url = http://moyaproject.com 6 | 7 | [lib] 8 | title = Moya Techblog 9 | url = http://moyaproject.com 10 | namespace = http://willmcgugan.com/techblog 11 | name = willmcgugan.techblog 12 | location = ./logic 13 | version = 0.1.5 14 | 15 | [templates] 16 | location = ./templates 17 | 18 | [media:media] 19 | location = ./media 20 | 21 | [data] 22 | location = ./data 23 | 24 | [i18n] 25 | location = ./locale 26 | default_language = en 27 | languages = en 28 | 29 | [settings] 30 | title = Moya Techblog 31 | copyright = 2015 Will McGugan 32 | page_size = 10 33 | -------------------------------------------------------------------------------- /willmcgugan.techblog/locale/moya_blog.pot: -------------------------------------------------------------------------------- 1 | # 2 | msgid "" 3 | msgstr "" 4 | "POT-Creation-Date: 2014-01-18T20:40:33.037038+00:00\n" 5 | "MIME-Version: 1.0\n" 6 | "Content-Type: text/plain; charset=utf-8\n" 7 | "Content-Transfer-Encoding: 8Bit\n" 8 | 9 | #: logic/forms.xml:68 logic/forms.xml:68 10 | msgid "Are you sure you wish to hide post '${post.title}'?" 11 | msgstr "" 12 | 13 | #: logic/content.xml:45 14 | msgid "Edit Post" 15 | msgstr "" 16 | 17 | #: logic/content.xml:55 logic/content.xml:55 18 | msgid "Post '${deleted}' has been deleted" 19 | msgstr "" 20 | 21 | #: logic/content.xml:65 22 | msgid "${post.title}" 23 | msgstr "" 24 | 25 | #: logic/content.xml:22 logic/content.xml:22 26 | msgid "No posts yet!" 27 | msgstr "" 28 | 29 | #: logic/forms.xml:47 logic/forms.xml:47 30 | msgid "Are you sure you wish to delete post '${post.title}'?" 31 | msgstr "" 32 | 33 | #: logic/content.xml:93 34 | msgid "Hide post" 35 | msgstr "" 36 | 37 | #: logic/forms.xml:32 38 | msgid "Slug should only contain letters, numbers and hyphens" 39 | msgstr "" 40 | 41 | #: logic/forms.xml:57 logic/forms.xml:57 42 | msgid "The URL will be" 43 | msgstr "" 44 | 45 | #: logic/views.xml:58 46 | msgid "Slug exists, please edit" 47 | msgstr "" 48 | 49 | #: logic/forms.xml:69 logic/forms.xml:69 50 | msgid "Hidden posts will be visible to admin only" 51 | msgstr "" 52 | 53 | #: logic/content.xml:56 logic/content.xml:56 54 | msgid "Return to Posts" 55 | msgstr "" 56 | 57 | #: logic/content.xml:52 58 | msgid "Delete Post" 59 | msgstr "" 60 | 61 | #: logic/forms.xml:58 logic/forms.xml:58 62 | msgid "${posturl}" 63 | msgstr "" 64 | 65 | #: logic/content.xml:34 66 | msgid "Recent Posts" 67 | msgstr "" 68 | 69 | #: logic/forms.xml:29 70 | msgid "Slug exists, please edit" 71 | msgstr "" 72 | 73 | #: logic/content.xml:86 74 | msgid "Publish post" 75 | msgstr "" 76 | 77 | #: logic/forms.xml:41 logic/forms.xml:41 78 | msgid "Cancel" 79 | msgstr "" 80 | 81 | #: logic/content.xml:38 82 | msgid "Posts by Month" 83 | msgstr "" 84 | 85 | #: logic/content.xml:11 86 | msgid "${app.settings.name}" 87 | msgstr "" 88 | 89 | #: logic/content.xml:40 logic/content.xml:40 90 | msgid "Posts in ${start % \"MMMM, YYYY\"}" 91 | msgstr "" 92 | 93 | #: logic/forms.xml:56 logic/forms.xml:56 94 | msgid "Are you sure you wish to publish post '${post.title}'?" 95 | msgstr "" 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/logic/inserts.xml: -------------------------------------------------------------------------------- 1 | 12 | 15 | 16 | 17 | 18 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | just now 31 | 32 | 33 | ${localize:age} ago 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /willmcgugan.techblog/logic/preflight.xml: -------------------------------------------------------------------------------- 1 | 4 | 7 | 8 | 9 | 10 | No blogs created -- add a blog in admin, or run 'moya init' 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /willmcgugan.techblog/logic/signals.xml: -------------------------------------------------------------------------------- 1 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006, Ivan Sagalaev 2 | All rights reserved. 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of highlight.js nor the names of its contributors 12 | may be used to endorse or promote products derived from this software 13 | without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY 16 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/androidstudio.css: -------------------------------------------------------------------------------- 1 | /* 2 | Date: 24 Fev 2015 3 | Author: Pedro Oliveira 4 | */ 5 | 6 | .hljs { 7 | color: #a9b7c6; 8 | background: #282b2e; 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-number { 16 | color: #6897BB; 17 | } 18 | 19 | .hljs-keyword, 20 | .hljs-deletion { 21 | color: #cc7832; 22 | } 23 | 24 | .hljs-comment { 25 | color: #808080; 26 | } 27 | 28 | .hljs-annotation { 29 | color: #bbb529; 30 | } 31 | 32 | .hljs-string, 33 | .hljs-addition { 34 | color: #6A8759; 35 | } 36 | 37 | .hljs-function .hljs-title, 38 | .hljs-change { 39 | color: #ffc66d; 40 | } 41 | 42 | .hljs-tag .hljs-title, 43 | .hljs-doctype { 44 | color: #e8bf6a; 45 | } 46 | 47 | .hljs-tag .hljs-attribute { 48 | color: #bababa; 49 | } 50 | 51 | .hljs-tag .hljs-value { 52 | color: #a5c261; 53 | } 54 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/ascetic.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: white; 12 | color: black; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-string, 17 | .hljs-tag .hljs-value, 18 | .hljs-filter .hljs-argument, 19 | .hljs-addition, 20 | .hljs-change, 21 | .apache .hljs-tag, 22 | .apache .hljs-cbracket, 23 | .nginx .hljs-built_in, 24 | .tex .hljs-formula { 25 | color: #888; 26 | } 27 | 28 | .hljs-comment, 29 | .hljs-shebang, 30 | .hljs-doctype, 31 | .hljs-pi, 32 | .hljs-javadoc, 33 | .hljs-deletion, 34 | .apache .hljs-sqbracket { 35 | color: #ccc; 36 | } 37 | 38 | .hljs-keyword, 39 | .hljs-tag .hljs-title, 40 | .ini .hljs-title, 41 | .lisp .hljs-title, 42 | .http .hljs-title, 43 | .nginx .hljs-title, 44 | .css .hljs-tag, 45 | .hljs-winutils, 46 | .hljs-flow, 47 | .apache .hljs-tag, 48 | .tex .hljs-command, 49 | .hljs-request, 50 | .hljs-status { 51 | font-weight: bold; 52 | } 53 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-dune.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Dune Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #999580; 10 | } 11 | 12 | /* Atelier Dune Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d73737; 26 | } 27 | 28 | /* Atelier Dune Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #b65611; 37 | } 38 | 39 | /* Atelier Dune Dark Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #cfb017; 43 | } 44 | 45 | /* Atelier Dune Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #60ac39; 53 | } 54 | 55 | /* Atelier Dune Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1fad83; 58 | } 59 | 60 | /* Atelier Dune Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #6684e1; 70 | } 71 | 72 | /* Atelier Dune Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b854d4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #292824; 82 | color: #a6a28c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-dune.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Dune Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #7d7a68; 10 | } 11 | 12 | /* Atelier Dune Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d73737; 26 | } 27 | 28 | /* Atelier Dune Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #b65611; 37 | } 38 | 39 | /* Atelier Dune Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #cfb017; 43 | } 44 | 45 | /* Atelier Dune Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #60ac39; 53 | } 54 | 55 | /* Atelier Dune Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1fad83; 58 | } 59 | 60 | /* Atelier Dune Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #6684e1; 70 | } 71 | 72 | /* Atelier Dune Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b854d4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #fefbec; 82 | color: #6e6b5e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-forest.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Forest Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #9c9491; 10 | } 11 | 12 | /* Atelier Forest Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #f22c40; 26 | } 27 | 28 | /* Atelier Forest Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #df5320; 37 | } 38 | 39 | /* Atelier Forest Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #d5911a; 43 | } 44 | 45 | /* Atelier Forest Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #5ab738; 53 | } 54 | 55 | /* Atelier Forest Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #00ad9c; 58 | } 59 | 60 | /* Atelier Forest Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #407ee7; 70 | } 71 | 72 | /* Atelier Forest Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #6666ea; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #2c2421; 82 | color: #a8a19f; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-forest.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Forest Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #766e6b; 10 | } 11 | 12 | /* Atelier Forest Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #f22c40; 26 | } 27 | 28 | /* Atelier Forest Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #df5320; 37 | } 38 | 39 | /* Atelier Forest Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #d5911a; 43 | } 44 | 45 | /* Atelier Forest Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #5ab738; 53 | } 54 | 55 | /* Atelier Forest Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #00ad9c; 58 | } 59 | 60 | /* Atelier Forest Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #407ee7; 70 | } 71 | 72 | /* Atelier Forest Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #6666ea; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f1efee; 82 | color: #68615e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-heath.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Heath Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #9e8f9e; 10 | } 11 | 12 | /* Atelier Heath Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #ca402b; 26 | } 27 | 28 | /* Atelier Heath Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #a65926; 37 | } 38 | 39 | /* Atelier Heath Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #bb8a35; 43 | } 44 | 45 | /* Atelier Heath Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #379a37; 53 | } 54 | 55 | /* Atelier Heath Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #159393; 58 | } 59 | 60 | /* Atelier Heath Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #516aec; 70 | } 71 | 72 | /* Atelier Heath Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #7b59c0; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #292329; 82 | color: #ab9bab; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-heath.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Heath Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #776977; 10 | } 11 | 12 | /* Atelier Heath Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #ca402b; 26 | } 27 | 28 | /* Atelier Heath Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #a65926; 37 | } 38 | 39 | /* Atelier Heath Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #bb8a35; 43 | } 44 | 45 | /* Atelier Heath Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #379a37; 53 | } 54 | 55 | /* Atelier Heath Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #159393; 58 | } 59 | 60 | /* Atelier Heath Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #516aec; 70 | } 71 | 72 | /* Atelier Heath Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #7b59c0; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f7f3f7; 82 | color: #695d69; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-lakeside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Lakeside Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #7195a8; 10 | } 11 | 12 | /* Atelier Lakeside Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d22d72; 26 | } 27 | 28 | /* Atelier Lakeside Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #935c25; 37 | } 38 | 39 | /* Atelier Lakeside Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #8a8a0f; 43 | } 44 | 45 | /* Atelier Lakeside Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #568c3b; 53 | } 54 | 55 | /* Atelier Lakeside Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #2d8f6f; 58 | } 59 | 60 | /* Atelier Lakeside Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #257fad; 70 | } 71 | 72 | /* Atelier Lakeside Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #5d5db1; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #1f292e; 82 | color: #7ea2b4; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-lakeside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Lakeside Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #5a7b8c; 10 | } 11 | 12 | /* Atelier Lakeside Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #d22d72; 26 | } 27 | 28 | /* Atelier Lakeside Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #935c25; 37 | } 38 | 39 | /* Atelier Lakeside Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #8a8a0f; 43 | } 44 | 45 | /* Atelier Lakeside Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #568c3b; 53 | } 54 | 55 | /* Atelier Lakeside Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #2d8f6f; 58 | } 59 | 60 | /* Atelier Lakeside Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #257fad; 70 | } 71 | 72 | /* Atelier Lakeside Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #5d5db1; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #ebf8ff; 82 | color: #516d7b; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-seaside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Seaside Dark Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #809980; 10 | } 11 | 12 | /* Atelier Seaside Dark Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #e6193c; 26 | } 27 | 28 | /* Atelier Seaside Dark Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #87711d; 37 | } 38 | 39 | /* Atelier Seaside Dark Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #c3c322; 43 | } 44 | 45 | /* Atelier Seaside Dark Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #29a329; 53 | } 54 | 55 | /* Atelier Seaside Dark Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1999b3; 58 | } 59 | 60 | /* Atelier Seaside Dark Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #3d62f5; 70 | } 71 | 72 | /* Atelier Seaside Dark Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ad2bee; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #242924; 82 | color: #8ca68c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-seaside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | /* https://github.com/jmblog/color-themes-for-highlightjs */ 5 | 6 | /* Atelier Seaside Light Comment */ 7 | .hljs-comment, 8 | .hljs-title { 9 | color: #687d68; 10 | } 11 | 12 | /* Atelier Seaside Light Red */ 13 | .hljs-variable, 14 | .hljs-attribute, 15 | .hljs-tag, 16 | .hljs-regexp, 17 | .ruby .hljs-constant, 18 | .xml .hljs-tag .hljs-title, 19 | .xml .hljs-pi, 20 | .xml .hljs-doctype, 21 | .html .hljs-doctype, 22 | .css .hljs-id, 23 | .css .hljs-class, 24 | .css .hljs-pseudo { 25 | color: #e6193c; 26 | } 27 | 28 | /* Atelier Seaside Light Orange */ 29 | .hljs-number, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #87711d; 37 | } 38 | 39 | /* Atelier Seaside Light Yellow */ 40 | .hljs-ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #c3c322; 43 | } 44 | 45 | /* Atelier Seaside Light Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #29a329; 53 | } 54 | 55 | /* Atelier Seaside Light Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #1999b3; 58 | } 59 | 60 | /* Atelier Seaside Light Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #3d62f5; 70 | } 71 | 72 | /* Atelier Seaside Light Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ad2bee; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #f0fff0; 82 | color: #5e6e5e; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-sulphurpool.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Sulphurpool Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Sulphurpool Comment */ 6 | .hljs-comment { 7 | color: #898ea4; 8 | } 9 | 10 | /* Atelier-Sulphurpool Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #c94922; 25 | } 26 | 27 | /* Atelier-Sulphurpool Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #c76b29; 35 | } 36 | 37 | /* Atelier-Sulphurpool Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c08b30; 41 | } 42 | 43 | /* Atelier-Sulphurpool Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #ac9739; 51 | } 52 | 53 | /* Atelier-Sulphurpool Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #22a2c9; 57 | } 58 | 59 | /* Atelier-Sulphurpool Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d8fd1; 69 | } 70 | 71 | /* Atelier-Sulphurpool Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6679cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #202746; 81 | color: #979db4; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/atelier-sulphurpool.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Sulphurpool Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Sulphurpool Comment */ 6 | .hljs-comment { 7 | color: #6b7394; 8 | } 9 | 10 | /* Atelier-Sulphurpool Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #c94922; 25 | } 26 | 27 | /* Atelier-Sulphurpool Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #c76b29; 35 | } 36 | 37 | /* Atelier-Sulphurpool Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c08b30; 41 | } 42 | 43 | /* Atelier-Sulphurpool Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #ac9739; 51 | } 52 | 53 | /* Atelier-Sulphurpool Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #22a2c9; 57 | } 58 | 59 | /* Atelier-Sulphurpool Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d8fd1; 69 | } 70 | 71 | /* Atelier-Sulphurpool Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6679cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #f5f7ff; 81 | color: #5e6687; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/brown_paper.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background:#b7a68e url(./brown_papersq.png); 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special, 22 | .hljs-request, 23 | .hljs-status { 24 | color:#005599; 25 | font-weight:bold; 26 | } 27 | 28 | .hljs, 29 | .hljs-subst, 30 | .hljs-tag .hljs-keyword { 31 | color: #363c69; 32 | } 33 | 34 | .hljs-string, 35 | .hljs-title, 36 | .hljs-type, 37 | .hljs-tag .hljs-value, 38 | .css .hljs-rules .hljs-value, 39 | .hljs-preprocessor, 40 | .hljs-pragma, 41 | .ruby .hljs-symbol, 42 | .ruby .hljs-symbol .hljs-string, 43 | .ruby .hljs-class .hljs-parent, 44 | .hljs-built_in, 45 | .django .hljs-template_tag, 46 | .django .hljs-variable, 47 | .smalltalk .hljs-class, 48 | .hljs-javadoc, 49 | .ruby .hljs-string, 50 | .django .hljs-filter .hljs-argument, 51 | .smalltalk .hljs-localvars, 52 | .smalltalk .hljs-array, 53 | .hljs-attr_selector, 54 | .hljs-pseudo, 55 | .hljs-addition, 56 | .hljs-stream, 57 | .hljs-envvar, 58 | .apache .hljs-tag, 59 | .apache .hljs-cbracket, 60 | .tex .hljs-number { 61 | color: #2c009f; 62 | } 63 | 64 | .hljs-comment, 65 | .hljs-annotation, 66 | .hljs-decorator, 67 | .hljs-pi, 68 | .hljs-doctype, 69 | .hljs-deletion, 70 | .hljs-shebang, 71 | .apache .hljs-sqbracket, 72 | .nginx .hljs-built_in, 73 | .tex .hljs-formula { 74 | color: #802022; 75 | } 76 | 77 | .hljs-keyword, 78 | .hljs-literal, 79 | .css .hljs-id, 80 | .hljs-phpdoc, 81 | .hljs-dartdoc, 82 | .hljs-title, 83 | .hljs-type, 84 | .vbscript .hljs-built_in, 85 | .rsl .hljs-built_in, 86 | .smalltalk .hljs-class, 87 | .diff .hljs-header, 88 | .hljs-chunk, 89 | .hljs-winutils, 90 | .bash .hljs-variable, 91 | .apache .hljs-tag, 92 | .tex .hljs-command { 93 | font-weight: bold; 94 | } 95 | 96 | .coffeescript .javascript, 97 | .javascript .xml, 98 | .tex .hljs-formula, 99 | .xml .javascript, 100 | .xml .vbscript, 101 | .xml .css, 102 | .xml .hljs-cdata { 103 | opacity: 0.8; 104 | } 105 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/brown_papersq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/media/highlight/styles/brown_papersq.png -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/codepen-embed.css: -------------------------------------------------------------------------------- 1 | /* 2 | codepen.io Embed Theme 3 | Author: Justin Perry 4 | Original theme - https://github.com/chriskempson/tomorrow-theme 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #222; 12 | color: #fff; 13 | font-family: Menlo, Monaco, 'Andale Mono', 'Lucida Console', 'Courier New', monospace; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-comment, 18 | .hljs-title { 19 | color: #777; 20 | } 21 | 22 | .hljs-variable, 23 | .hljs-attribute, 24 | .hljs-tag, 25 | .hljs-regexp, 26 | .ruby .constant, 27 | .xml .tag .title, 28 | .xml .pi, 29 | .xml .doctype, 30 | .html .doctype { 31 | color: #ab875d; 32 | } 33 | 34 | .css .value { 35 | color: #cd6a51; 36 | } 37 | 38 | .css .value .function, 39 | .css .value .string { 40 | color: #a67f59; 41 | } 42 | 43 | .css .value .number { 44 | color: #9b869c; 45 | } 46 | 47 | .css .id, 48 | .css .class, 49 | .css-pseudo, 50 | .css .selector, 51 | .css .tag { 52 | color: #dfc48c; 53 | } 54 | 55 | .hljs-number, 56 | .hljs-preprocessor, 57 | .hljs-built_in, 58 | .hljs-literal, 59 | .hljs-params, 60 | .hljs-constant { 61 | color: #ab875d; 62 | } 63 | 64 | .ruby .class .title, 65 | .css .rules .attribute { 66 | color: #9b869b; 67 | } 68 | 69 | .hljs-string, 70 | .hljs-value, 71 | .hljs-inheritance, 72 | .hljs-header, 73 | .ruby .symbol, 74 | .xml .cdata { 75 | color: #8f9c6c; 76 | } 77 | 78 | .css .hexcolor { 79 | color: #cd6a51; 80 | } 81 | 82 | .function, 83 | .python .decorator, 84 | .python .title, 85 | .ruby .function .title, 86 | .ruby .title .keyword, 87 | .perl .sub, 88 | .javascript .title, 89 | .coffeescript .title { 90 | color: #fff; 91 | } 92 | 93 | .hljs-keyword, 94 | .javascript .function { 95 | color: #8f9c6c; 96 | } 97 | 98 | .coffeescript .javascript, 99 | .javascript, 100 | .javascript .xml, 101 | .tex .formula, 102 | .xml .javascript, 103 | .xml .vbscript, 104 | .xml .css, 105 | .xml .cdata { 106 | background: transparent; 107 | opacity: 1; 108 | } 109 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #444; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special { 22 | color: white; 23 | } 24 | 25 | .hljs, 26 | .hljs-subst { 27 | color: #ddd; 28 | } 29 | 30 | .hljs-string, 31 | .hljs-title, 32 | .hljs-type, 33 | .ini .hljs-title, 34 | .hljs-tag .hljs-value, 35 | .css .hljs-rules .hljs-value, 36 | .hljs-preprocessor, 37 | .hljs-pragma, 38 | .ruby .hljs-symbol, 39 | .ruby .hljs-symbol .hljs-string, 40 | .ruby .hljs-class .hljs-parent, 41 | .hljs-built_in, 42 | .django .hljs-template_tag, 43 | .django .hljs-variable, 44 | .smalltalk .hljs-class, 45 | .hljs-javadoc, 46 | .ruby .hljs-string, 47 | .django .hljs-filter .hljs-argument, 48 | .smalltalk .hljs-localvars, 49 | .smalltalk .hljs-array, 50 | .hljs-attr_selector, 51 | .hljs-pseudo, 52 | .hljs-addition, 53 | .hljs-stream, 54 | .hljs-envvar, 55 | .apache .hljs-tag, 56 | .apache .hljs-cbracket, 57 | .tex .hljs-command, 58 | .hljs-prompt, 59 | .coffeescript .hljs-attribute { 60 | color: #d88; 61 | } 62 | 63 | .hljs-comment, 64 | .hljs-annotation, 65 | .hljs-decorator, 66 | .hljs-pi, 67 | .hljs-doctype, 68 | .hljs-deletion, 69 | .hljs-shebang, 70 | .apache .hljs-sqbracket, 71 | .tex .hljs-formula { 72 | color: #777; 73 | } 74 | 75 | .hljs-keyword, 76 | .hljs-literal, 77 | .hljs-title, 78 | .css .hljs-id, 79 | .hljs-phpdoc, 80 | .hljs-dartdoc, 81 | .hljs-type, 82 | .vbscript .hljs-built_in, 83 | .rsl .hljs-built_in, 84 | .smalltalk .hljs-class, 85 | .diff .hljs-header, 86 | .hljs-chunk, 87 | .hljs-winutils, 88 | .bash .hljs-variable, 89 | .apache .hljs-tag, 90 | .tex .hljs-special, 91 | .hljs-request, 92 | .hljs-status { 93 | font-weight: bold; 94 | } 95 | 96 | .coffeescript .javascript, 97 | .javascript .xml, 98 | .tex .hljs-formula, 99 | .xml .javascript, 100 | .xml .vbscript, 101 | .xml .css, 102 | .xml .hljs-cdata { 103 | opacity: 0.5; 104 | } 105 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/far.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | FAR Style (c) MajestiC 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #000080; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs, 16 | .hljs-subst { 17 | color: #0ff; 18 | } 19 | 20 | .hljs-string, 21 | .ruby .hljs-string, 22 | .haskell .hljs-type, 23 | .hljs-tag .hljs-value, 24 | .hljs-rules .hljs-value, 25 | .hljs-rules .hljs-value .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .ruby .hljs-symbol, 29 | .ruby .hljs-symbol .hljs-string, 30 | .hljs-built_in, 31 | .django .hljs-template_tag, 32 | .django .hljs-variable, 33 | .smalltalk .hljs-class, 34 | .hljs-addition, 35 | .apache .hljs-tag, 36 | .apache .hljs-cbracket, 37 | .tex .hljs-command, 38 | .coffeescript .hljs-attribute { 39 | color: #ff0; 40 | } 41 | 42 | .hljs-keyword, 43 | .css .hljs-id, 44 | .hljs-title, 45 | .hljs-type, 46 | .vbscript .hljs-built_in, 47 | .rsl .hljs-built_in, 48 | .smalltalk .hljs-class, 49 | .xml .hljs-tag .hljs-title, 50 | .hljs-winutils, 51 | .hljs-flow, 52 | .hljs-change, 53 | .hljs-envvar, 54 | .bash .hljs-variable, 55 | .tex .hljs-special { 56 | color: #fff; 57 | } 58 | 59 | .hljs-comment, 60 | .hljs-phpdoc, 61 | .hljs-dartdoc, 62 | .hljs-javadoc, 63 | .hljs-annotation, 64 | .hljs-deletion, 65 | .apache .hljs-sqbracket, 66 | .tex .hljs-formula { 67 | color: #888; 68 | } 69 | 70 | .hljs-number, 71 | .hljs-date, 72 | .hljs-regexp, 73 | .hljs-literal, 74 | .smalltalk .hljs-symbol, 75 | .smalltalk .hljs-char, 76 | .clojure .hljs-attribute { 77 | color: #0f0; 78 | } 79 | 80 | .hljs-decorator, 81 | .django .hljs-filter .hljs-argument, 82 | .smalltalk .hljs-localvars, 83 | .smalltalk .hljs-array, 84 | .hljs-attr_selector, 85 | .hljs-pseudo, 86 | .xml .hljs-pi, 87 | .diff .hljs-header, 88 | .hljs-chunk, 89 | .hljs-shebang, 90 | .nginx .hljs-built_in, 91 | .hljs-prompt { 92 | color: #008080; 93 | } 94 | 95 | .hljs-keyword, 96 | .css .hljs-id, 97 | .hljs-title, 98 | .hljs-type, 99 | .vbscript .hljs-built_in, 100 | .rsl .hljs-built_in, 101 | .smalltalk .hljs-class, 102 | .hljs-winutils, 103 | .hljs-flow, 104 | .apache .hljs-tag, 105 | .nginx .hljs-built_in, 106 | .tex .hljs-command, 107 | .tex .hljs-special, 108 | .hljs-request, 109 | .hljs-status { 110 | font-weight: bold; 111 | } 112 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/foundation.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Foundation 4 docs style for highlight.js 3 | Author: Dan Allen 4 | Website: http://foundation.zurb.com/docs/ 5 | Version: 1.0 6 | Date: 2013-04-02 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | background: #eee; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-header, 18 | .hljs-decorator, 19 | .hljs-annotation { 20 | color: #000077; 21 | } 22 | 23 | .hljs-horizontal_rule, 24 | .hljs-link_url, 25 | .hljs-emphasis, 26 | .hljs-attribute { 27 | color: #070; 28 | } 29 | 30 | .hljs-emphasis { 31 | font-style: italic; 32 | } 33 | 34 | .hljs-link_label, 35 | .hljs-strong, 36 | .hljs-value, 37 | .hljs-string, 38 | .scss .hljs-value .hljs-string { 39 | color: #d14; 40 | } 41 | 42 | .hljs-strong { 43 | font-weight: bold; 44 | } 45 | 46 | .hljs-blockquote, 47 | .hljs-comment { 48 | color: #998; 49 | font-style: italic; 50 | } 51 | 52 | .asciidoc .hljs-title, 53 | .hljs-function .hljs-title { 54 | color: #900; 55 | } 56 | 57 | .hljs-class { 58 | color: #458; 59 | } 60 | 61 | .hljs-id, 62 | .hljs-pseudo, 63 | .hljs-constant, 64 | .hljs-hexcolor { 65 | color: teal; 66 | } 67 | 68 | .hljs-variable { 69 | color: #336699; 70 | } 71 | 72 | .hljs-bullet, 73 | .hljs-javadoc { 74 | color: #997700; 75 | } 76 | 77 | .hljs-pi, 78 | .hljs-doctype { 79 | color: #3344bb; 80 | } 81 | 82 | .hljs-code, 83 | .hljs-number { 84 | color: #099; 85 | } 86 | 87 | .hljs-important { 88 | color: #f00; 89 | } 90 | 91 | .smartquote, 92 | .hljs-label { 93 | color: #970; 94 | } 95 | 96 | .hljs-preprocessor, 97 | .hljs-pragma { 98 | color: #579; 99 | } 100 | 101 | .hljs-reserved, 102 | .hljs-keyword, 103 | .scss .hljs-value { 104 | color: #000; 105 | } 106 | 107 | .hljs-regexp { 108 | background-color: #fff0ff; 109 | color: #880088; 110 | } 111 | 112 | .hljs-symbol { 113 | color: #990073; 114 | } 115 | 116 | .hljs-symbol .hljs-string { 117 | color: #a60; 118 | } 119 | 120 | .hljs-tag { 121 | color: #007700; 122 | } 123 | 124 | .hljs-at_rule, 125 | .hljs-at_rule .hljs-keyword { 126 | color: #088; 127 | } 128 | 129 | .hljs-at_rule .hljs-preprocessor { 130 | color: #808; 131 | } 132 | 133 | .scss .hljs-tag, 134 | .scss .hljs-attribute { 135 | color: #339; 136 | } 137 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/github.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #f8f8f8; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-javadoc { 19 | color: #998; 20 | font-style: italic; 21 | } 22 | 23 | .hljs-keyword, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .nginx .hljs-title, 27 | .hljs-subst, 28 | .hljs-request, 29 | .hljs-status { 30 | color: #333; 31 | font-weight: bold; 32 | } 33 | 34 | .hljs-number, 35 | .hljs-hexcolor, 36 | .ruby .hljs-constant { 37 | color: #008080; 38 | } 39 | 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-phpdoc, 43 | .hljs-dartdoc, 44 | .tex .hljs-formula { 45 | color: #d14; 46 | } 47 | 48 | .hljs-title, 49 | .hljs-id, 50 | .scss .hljs-preprocessor { 51 | color: #900; 52 | font-weight: bold; 53 | } 54 | 55 | .hljs-list .hljs-keyword, 56 | .hljs-subst { 57 | font-weight: normal; 58 | } 59 | 60 | .hljs-class .hljs-title, 61 | .hljs-type, 62 | .vhdl .hljs-literal, 63 | .tex .hljs-command { 64 | color: #458; 65 | font-weight: bold; 66 | } 67 | 68 | .hljs-tag, 69 | .hljs-tag .hljs-title, 70 | .hljs-rules .hljs-property, 71 | .django .hljs-tag .hljs-keyword { 72 | color: #000080; 73 | font-weight: normal; 74 | } 75 | 76 | .hljs-attribute, 77 | .hljs-variable, 78 | .lisp .hljs-body { 79 | color: #008080; 80 | } 81 | 82 | .hljs-regexp { 83 | color: #009926; 84 | } 85 | 86 | .hljs-symbol, 87 | .ruby .hljs-symbol .hljs-string, 88 | .lisp .hljs-keyword, 89 | .clojure .hljs-keyword, 90 | .scheme .hljs-keyword, 91 | .tex .hljs-special, 92 | .hljs-prompt { 93 | color: #990073; 94 | } 95 | 96 | .hljs-built_in { 97 | color: #0086b3; 98 | } 99 | 100 | .hljs-preprocessor, 101 | .hljs-pragma, 102 | .hljs-pi, 103 | .hljs-doctype, 104 | .hljs-shebang, 105 | .hljs-cdata { 106 | color: #999; 107 | font-weight: bold; 108 | } 109 | 110 | .hljs-deletion { 111 | background: #fdd; 112 | } 113 | 114 | .hljs-addition { 115 | background: #dfd; 116 | } 117 | 118 | .diff .hljs-change { 119 | background: #0086b3; 120 | } 121 | 122 | .hljs-chunk { 123 | color: #aaa; 124 | } 125 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/hopscotch.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Hopscotch 3 | * by Jan T. Sott 4 | * https://github.com/idleberg/Hopscotch 5 | * 6 | * This work is licensed under the Creative Commons CC0 1.0 Universal License 7 | */ 8 | 9 | /* Comment */ 10 | .hljs-comment, 11 | .hljs-title { 12 | color: #989498; 13 | } 14 | 15 | /* Red */ 16 | .hljs-variable, 17 | .hljs-attribute, 18 | .hljs-tag, 19 | .hljs-regexp, 20 | .ruby .hljs-constant, 21 | .xml .hljs-tag .hljs-title, 22 | .xml .hljs-pi, 23 | .xml .hljs-doctype, 24 | .html .hljs-doctype, 25 | .css .hljs-id, 26 | .css .hljs-class, 27 | .css .hljs-pseudo { 28 | color: #dd464c; 29 | } 30 | 31 | /* Orange */ 32 | .hljs-number, 33 | .hljs-preprocessor, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-params, 37 | .hljs-constant { 38 | color: #fd8b19; 39 | } 40 | 41 | /* Yellow */ 42 | .ruby .hljs-class .hljs-title, 43 | .css .hljs-rules .hljs-attribute { 44 | color: #fdcc59; 45 | } 46 | 47 | /* Green */ 48 | .hljs-string, 49 | .hljs-value, 50 | .hljs-inheritance, 51 | .hljs-header, 52 | .ruby .hljs-symbol, 53 | .xml .hljs-cdata { 54 | color: #8fc13e; 55 | } 56 | 57 | /* Aqua */ 58 | .css .hljs-hexcolor { 59 | color: #149b93; 60 | } 61 | 62 | /* Blue */ 63 | .hljs-function, 64 | .python .hljs-decorator, 65 | .python .hljs-title, 66 | .ruby .hljs-function .hljs-title, 67 | .ruby .hljs-title .hljs-keyword, 68 | .perl .hljs-sub, 69 | .javascript .hljs-title, 70 | .coffeescript .hljs-title { 71 | color: #1290bf; 72 | } 73 | 74 | /* Purple */ 75 | .hljs-keyword, 76 | .javascript .hljs-function { 77 | color: #c85e7c; 78 | } 79 | 80 | .hljs { 81 | display: block; 82 | background: #322931; 83 | color: #b9b5b8; 84 | padding: 0.5em; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/idea.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Intellij Idea-like styling (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #000; 12 | background: #fff; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-subst, 17 | .hljs-title, 18 | .json .hljs-value { 19 | font-weight: normal; 20 | color: #000; 21 | } 22 | 23 | .hljs-comment, 24 | .hljs-javadoc, 25 | .diff .hljs-header { 26 | color: #808080; 27 | font-style: italic; 28 | } 29 | 30 | .hljs-annotation, 31 | .hljs-decorator, 32 | .hljs-preprocessor, 33 | .hljs-pragma, 34 | .hljs-doctype, 35 | .hljs-pi, 36 | .hljs-chunk, 37 | .hljs-shebang, 38 | .apache .hljs-cbracket, 39 | .hljs-prompt, 40 | .http .hljs-title { 41 | color: #808000; 42 | } 43 | 44 | .hljs-tag, 45 | .hljs-pi { 46 | background: #efefef; 47 | } 48 | 49 | .hljs-tag .hljs-title, 50 | .hljs-id, 51 | .hljs-attr_selector, 52 | .hljs-pseudo, 53 | .hljs-literal, 54 | .hljs-keyword, 55 | .hljs-hexcolor, 56 | .css .hljs-function, 57 | .ini .hljs-title, 58 | .css .hljs-class, 59 | .hljs-list .hljs-keyword, 60 | .nginx .hljs-title, 61 | .tex .hljs-command, 62 | .hljs-request, 63 | .hljs-status { 64 | font-weight: bold; 65 | color: #000080; 66 | } 67 | 68 | .hljs-attribute, 69 | .hljs-rules .hljs-keyword, 70 | .hljs-number, 71 | .hljs-date, 72 | .hljs-regexp, 73 | .tex .hljs-special { 74 | font-weight: bold; 75 | color: #0000ff; 76 | } 77 | 78 | .hljs-number, 79 | .hljs-regexp { 80 | font-weight: normal; 81 | } 82 | 83 | .hljs-string, 84 | .hljs-value, 85 | .hljs-filter .hljs-argument, 86 | .css .hljs-function .hljs-params, 87 | .apache .hljs-tag { 88 | color: #008000; 89 | font-weight: bold; 90 | } 91 | 92 | .hljs-symbol, 93 | .ruby .hljs-symbol .hljs-string, 94 | .hljs-char, 95 | .tex .hljs-formula { 96 | color: #000; 97 | background: #d0eded; 98 | font-style: italic; 99 | } 100 | 101 | .hljs-phpdoc, 102 | .hljs-dartdoc, 103 | .hljs-yardoctag, 104 | .hljs-javadoctag { 105 | text-decoration: underline; 106 | } 107 | 108 | .hljs-variable, 109 | .hljs-envvar, 110 | .apache .hljs-sqbracket, 111 | .nginx .hljs-built_in { 112 | color: #660e7a; 113 | } 114 | 115 | .hljs-addition { 116 | background: #baeeba; 117 | } 118 | 119 | .hljs-deletion { 120 | background: #ffc8bd; 121 | } 122 | 123 | .diff .hljs-change { 124 | background: #bccff9; 125 | } 126 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/ir_black.css: -------------------------------------------------------------------------------- 1 | /* 2 | IR_Black style (c) Vasily Mikhailitchenko 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #000; 10 | color: #f8f8f8; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-shebang, 15 | .hljs-comment, 16 | .hljs-javadoc { 17 | color: #7c7c7c; 18 | } 19 | 20 | .hljs-keyword, 21 | .hljs-tag, 22 | .tex .hljs-command, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #96cbfe; 27 | } 28 | 29 | .hljs-sub .hljs-keyword, 30 | .method, 31 | .hljs-list .hljs-title, 32 | .nginx .hljs-title { 33 | color: #ffffb6; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-tag .hljs-value, 38 | .hljs-cdata, 39 | .hljs-filter .hljs-argument, 40 | .hljs-attr_selector, 41 | .apache .hljs-cbracket, 42 | .hljs-date, 43 | .coffeescript .hljs-attribute { 44 | color: #a8ff60; 45 | } 46 | 47 | .hljs-subst { 48 | color: #daefa3; 49 | } 50 | 51 | .hljs-regexp { 52 | color: #e9c062; 53 | } 54 | 55 | .hljs-title, 56 | .hljs-sub .hljs-identifier, 57 | .hljs-pi, 58 | .hljs-decorator, 59 | .tex .hljs-special, 60 | .hljs-type, 61 | .hljs-constant, 62 | .smalltalk .hljs-class, 63 | .hljs-javadoctag, 64 | .hljs-yardoctag, 65 | .hljs-phpdoc, 66 | .hljs-dartdoc, 67 | .nginx .hljs-built_in { 68 | color: #ffffb6; 69 | } 70 | 71 | .hljs-symbol, 72 | .ruby .hljs-symbol .hljs-string, 73 | .hljs-number, 74 | .hljs-variable, 75 | .vbscript, 76 | .hljs-literal { 77 | color: #c6c5fe; 78 | } 79 | 80 | .css .hljs-tag { 81 | color: #96cbfe; 82 | } 83 | 84 | .css .hljs-rules .hljs-property, 85 | .css .hljs-id { 86 | color: #ffffb6; 87 | } 88 | 89 | .css .hljs-class { 90 | color: #fff; 91 | } 92 | 93 | .hljs-hexcolor { 94 | color: #c6c5fe; 95 | } 96 | 97 | .hljs-number { 98 | color:#ff73fd; 99 | } 100 | 101 | .coffeescript .javascript, 102 | .javascript .xml, 103 | .tex .hljs-formula, 104 | .xml .javascript, 105 | .xml .vbscript, 106 | .xml .css, 107 | .xml .hljs-cdata { 108 | opacity: 0.7; 109 | } 110 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/kimbie.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (dark) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #d6baad; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #dc3958; 28 | } 29 | 30 | /* Kimbie Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f79a32; 38 | } 39 | 40 | /* Kimbie Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rules .hljs-attribute { 43 | color: #f06431; 44 | } 45 | 46 | /* Kimbie Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #889b4a; 54 | } 55 | 56 | /* Kimbie Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #088649; 59 | } 60 | 61 | /* Kimbie Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #8ab1b0; 71 | } 72 | 73 | /* Kimbie Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #98676a; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #221a0f; 83 | color: #d3af86; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/kimbie.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (light) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #a57a4c; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #dc3958; 28 | } 29 | 30 | /* Kimbie Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f79a32; 38 | } 39 | 40 | /* Kimbie Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rules .hljs-attribute { 43 | color: #f06431; 44 | } 45 | 46 | /* Kimbie Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #889b4a; 54 | } 55 | 56 | /* Kimbie Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #088649; 59 | } 60 | 61 | /* Kimbie Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #8ab1b0; 71 | } 72 | 73 | /* Kimbie Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #98676a; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #fbebd4; 83 | color: #84613d; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/mono-blue.css: -------------------------------------------------------------------------------- 1 | /* 2 | Five-color theme from a single blue hue. 3 | */ 4 | .hljs { 5 | display: block; 6 | overflow-x: auto; 7 | padding: 0.5em; 8 | background: #eaeef3; 9 | -webkit-text-size-adjust: none; 10 | } 11 | 12 | .hljs, 13 | .hljs-list .hljs-built_in { 14 | color: #00193a; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-title, 19 | .hljs-important, 20 | .hljs-request, 21 | .hljs-header, 22 | .hljs-javadoctag { 23 | font-weight: bold; 24 | } 25 | 26 | .hljs-comment, 27 | .hljs-chunk { 28 | color: #738191; 29 | } 30 | 31 | .hljs-string, 32 | .hljs-title, 33 | .hljs-parent, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-filename, 37 | .hljs-value, 38 | .hljs-addition, 39 | .hljs-tag, 40 | .hljs-argument, 41 | .hljs-link_label, 42 | .hljs-blockquote, 43 | .hljs-header { 44 | color: #0048ab; 45 | } 46 | 47 | .hljs-decorator, 48 | .hljs-prompt, 49 | .hljs-yardoctag, 50 | .hljs-subst, 51 | .hljs-symbol, 52 | .hljs-doctype, 53 | .hljs-regexp, 54 | .hljs-preprocessor, 55 | .hljs-pragma, 56 | .hljs-pi, 57 | .hljs-attribute, 58 | .hljs-attr_selector, 59 | .hljs-javadoc, 60 | .hljs-xmlDocTag, 61 | .hljs-deletion, 62 | .hljs-shebang, 63 | .hljs-string .hljs-variable, 64 | .hljs-link_url, 65 | .hljs-bullet, 66 | .hljs-sqbracket, 67 | .hljs-phony { 68 | color: #4c81c9; 69 | } 70 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/paraiso.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (dark) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #8d8687; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .ruby .hljs-constant, 19 | .xml .hljs-tag .hljs-title, 20 | .xml .hljs-pi, 21 | .xml .hljs-doctype, 22 | .html .hljs-doctype, 23 | .css .hljs-id, 24 | .css .hljs-class, 25 | .css .hljs-pseudo { 26 | color: #ef6155; 27 | } 28 | 29 | /* Paraíso Orange */ 30 | .hljs-number, 31 | .hljs-preprocessor, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #f99b15; 37 | } 38 | 39 | /* Paraíso Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #fec418; 43 | } 44 | 45 | /* Paraíso Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #48b685; 53 | } 54 | 55 | /* Paraíso Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #5bc4bf; 58 | } 59 | 60 | /* Paraíso Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #06b6ef; 70 | } 71 | 72 | /* Paraíso Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #815ba4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #2f1e2e; 82 | color: #a39e9b; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/paraiso.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (light) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #776e71; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .ruby .hljs-constant, 19 | .xml .hljs-tag .hljs-title, 20 | .xml .hljs-pi, 21 | .xml .hljs-doctype, 22 | .html .hljs-doctype, 23 | .css .hljs-id, 24 | .css .hljs-class, 25 | .css .hljs-pseudo { 26 | color: #ef6155; 27 | } 28 | 29 | /* Paraíso Orange */ 30 | .hljs-number, 31 | .hljs-preprocessor, 32 | .hljs-built_in, 33 | .hljs-literal, 34 | .hljs-params, 35 | .hljs-constant { 36 | color: #f99b15; 37 | } 38 | 39 | /* Paraíso Yellow */ 40 | .ruby .hljs-class .hljs-title, 41 | .css .hljs-rules .hljs-attribute { 42 | color: #fec418; 43 | } 44 | 45 | /* Paraíso Green */ 46 | .hljs-string, 47 | .hljs-value, 48 | .hljs-inheritance, 49 | .hljs-header, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #48b685; 53 | } 54 | 55 | /* Paraíso Aqua */ 56 | .css .hljs-hexcolor { 57 | color: #5bc4bf; 58 | } 59 | 60 | /* Paraíso Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #06b6ef; 70 | } 71 | 72 | /* Paraíso Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #815ba4; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #e7e9db; 82 | color: #4f424c; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/pojoaque.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Pojoaque Style by Jason Tate 4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html 5 | Based on Solarized Style from http://ethanschoonover.com/solarized 6 | 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | color: #dccf8f; 14 | background: url(./pojoaque.jpg) repeat scroll left top #181914; 15 | -webkit-text-size-adjust: none; 16 | } 17 | 18 | .hljs-comment, 19 | .diff .hljs-header, 20 | .hljs-doctype, 21 | .lisp .hljs-string, 22 | .hljs-javadoc { 23 | color: #586e75; 24 | font-style: italic; 25 | } 26 | 27 | .hljs-keyword, 28 | .css .rule .hljs-keyword, 29 | .hljs-winutils, 30 | .javascript .hljs-title, 31 | .method, 32 | .hljs-addition, 33 | .css .hljs-tag, 34 | .hljs-list .hljs-keyword, 35 | .nginx .hljs-title { 36 | color: #b64926; 37 | } 38 | 39 | .hljs-number, 40 | .hljs-command, 41 | .hljs-string, 42 | .hljs-tag .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor { 48 | color: #468966; 49 | } 50 | 51 | .hljs-title, 52 | .hljs-localvars, 53 | .hljs-function .hljs-title, 54 | .hljs-chunk, 55 | .hljs-decorator, 56 | .hljs-built_in, 57 | .hljs-identifier, 58 | .hljs-id { 59 | color: #ffb03b; 60 | } 61 | 62 | .hljs-attribute, 63 | .hljs-variable, 64 | .lisp .hljs-body, 65 | .smalltalk .hljs-number, 66 | .hljs-constant, 67 | .hljs-class .hljs-title, 68 | .hljs-parent, 69 | .hljs-type { 70 | color: #b58900; 71 | } 72 | 73 | .css .hljs-attribute { 74 | color: #b89859; 75 | } 76 | 77 | .css .hljs-number, 78 | .css .hljs-hexcolor { 79 | color: #dccf8f; 80 | } 81 | 82 | .css .hljs-class { 83 | color: #d3a60c; 84 | } 85 | 86 | .hljs-preprocessor, 87 | .hljs-pragma, 88 | .hljs-pi, 89 | .hljs-shebang, 90 | .hljs-symbol, 91 | .hljs-symbol .hljs-string, 92 | .diff .hljs-change, 93 | .hljs-special, 94 | .hljs-attr_selector, 95 | .hljs-important, 96 | .hljs-subst, 97 | .hljs-cdata { 98 | color: #cb4b16; 99 | } 100 | 101 | .hljs-deletion { 102 | color: #dc322f; 103 | } 104 | 105 | .tex .hljs-formula { 106 | background: #073642; 107 | } 108 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/pojoaque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/media/highlight/styles/pojoaque.jpg -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/rainbow.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Style with support for rainbow parens 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #474949; 12 | color: #d1d9e1; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | 17 | .hljs-body, 18 | .hljs-collection { 19 | color: #d1d9e1; 20 | } 21 | 22 | .hljs-comment, 23 | .diff .hljs-header, 24 | .hljs-doctype, 25 | .lisp .hljs-string, 26 | .hljs-javadoc { 27 | color: #969896; 28 | font-style: italic; 29 | } 30 | 31 | .hljs-keyword, 32 | .clojure .hljs-attribute, 33 | .hljs-winutils, 34 | .javascript .hljs-title, 35 | .hljs-addition, 36 | .css .hljs-tag { 37 | color: #cc99cc; 38 | } 39 | 40 | .hljs-number { color: #f99157; } 41 | 42 | .hljs-command, 43 | .hljs-string, 44 | .hljs-tag .hljs-value, 45 | .hljs-phpdoc, 46 | .hljs-dartdoc, 47 | .tex .hljs-formula, 48 | .hljs-regexp, 49 | .hljs-hexcolor { 50 | color: #8abeb7; 51 | } 52 | 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-function .hljs-title, 56 | .hljs-chunk, 57 | .hljs-decorator, 58 | .hljs-built_in, 59 | .hljs-identifier { 60 | color: #b5bd68; 61 | } 62 | 63 | .hljs-class .hljs-keyword { 64 | color: #f2777a; 65 | } 66 | 67 | .hljs-variable, 68 | .smalltalk .hljs-number, 69 | .hljs-constant, 70 | .hljs-class .hljs-title, 71 | .hljs-parent, 72 | .haskell .hljs-label, 73 | .hljs-id { 74 | color: #ffcc66; 75 | } 76 | 77 | .hljs-tag .hljs-title, 78 | .hljs-rules .hljs-property, 79 | .django .hljs-tag .hljs-keyword { 80 | font-weight: bold; 81 | } 82 | 83 | .hljs-attribute { 84 | color: #81a2be; 85 | } 86 | 87 | .hljs-preprocessor, 88 | .hljs-pragma, 89 | .hljs-pi, 90 | .hljs-shebang, 91 | .hljs-symbol, 92 | .hljs-symbol .hljs-string, 93 | .diff .hljs-change, 94 | .hljs-special, 95 | .hljs-attr_selector, 96 | .hljs-important, 97 | .hljs-subst, 98 | .hljs-cdata { 99 | color: #f99157; 100 | } 101 | 102 | .hljs-deletion { 103 | color: #dc322f; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #eee8d5; 108 | } 109 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/school_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/media/highlight/styles/school_book.png -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/solarized_dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #002b36; 12 | color: #839496; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #586e75; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function { 62 | color: #268bd2; 63 | } 64 | 65 | /* Solarized Yellow */ 66 | .hljs-attribute, 67 | .hljs-variable, 68 | .lisp .hljs-body, 69 | .smalltalk .hljs-number, 70 | .hljs-constant, 71 | .hljs-class .hljs-title, 72 | .hljs-parent, 73 | .hljs-type, 74 | .hljs-link_reference { 75 | color: #b58900; 76 | } 77 | 78 | /* Solarized Orange */ 79 | .hljs-preprocessor, 80 | .hljs-preprocessor .hljs-keyword, 81 | .hljs-pragma, 82 | .hljs-shebang, 83 | .hljs-symbol, 84 | .hljs-symbol .hljs-string, 85 | .diff .hljs-change, 86 | .hljs-special, 87 | .hljs-attr_selector, 88 | .hljs-subst, 89 | .hljs-cdata, 90 | .css .hljs-pseudo, 91 | .hljs-header { 92 | color: #cb4b16; 93 | } 94 | 95 | /* Solarized Red */ 96 | .hljs-deletion, 97 | .hljs-important { 98 | color: #dc322f; 99 | } 100 | 101 | /* Solarized Violet */ 102 | .hljs-link_label { 103 | color: #6c71c4; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #073642; 108 | } 109 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/solarized_light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #fdf6e3; 12 | color: #657b83; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #93a1a1; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function { 62 | color: #268bd2; 63 | } 64 | 65 | /* Solarized Yellow */ 66 | .hljs-attribute, 67 | .hljs-variable, 68 | .lisp .hljs-body, 69 | .smalltalk .hljs-number, 70 | .hljs-constant, 71 | .hljs-class .hljs-title, 72 | .hljs-parent, 73 | .hljs-type, 74 | .hljs-link_reference { 75 | color: #b58900; 76 | } 77 | 78 | /* Solarized Orange */ 79 | .hljs-preprocessor, 80 | .hljs-preprocessor .hljs-keyword, 81 | .hljs-pragma, 82 | .hljs-shebang, 83 | .hljs-symbol, 84 | .hljs-symbol .hljs-string, 85 | .diff .hljs-change, 86 | .hljs-special, 87 | .hljs-attr_selector, 88 | .hljs-subst, 89 | .hljs-cdata, 90 | .css .hljs-pseudo, 91 | .hljs-header { 92 | color: #cb4b16; 93 | } 94 | 95 | /* Solarized Red */ 96 | .hljs-deletion, 97 | .hljs-important { 98 | color: #dc322f; 99 | } 100 | 101 | /* Solarized Violet */ 102 | .hljs-link_label { 103 | color: #6c71c4; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #eee8d5; 108 | } 109 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/tomorrow-night-blue.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Blue Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #7285b7; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #ff9da4; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #ffc58f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rules .hljs-attribute { 41 | color: #ffeead; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #d1f1a9; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #99ffff; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #bbdaff; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #ebbbff; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #002451; 82 | color: white; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/tomorrow-night-bright.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Bright Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #969896; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #d54e53; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #e78c45; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rules .hljs-attribute { 40 | color: #e7c547; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #b9ca4a; 51 | } 52 | 53 | /* Tomorrow Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #70c0b1; 57 | } 58 | 59 | /* Tomorrow Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #7aa6da; 69 | } 70 | 71 | /* Tomorrow Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #c397d8; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: black; 81 | color: #eaeaea; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/tomorrow-night-eighties.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Eighties Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #999999; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #f2777a; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #f99157; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rules .hljs-attribute { 40 | color: #ffcc66; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #99cc99; 51 | } 52 | 53 | /* Tomorrow Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #66cccc; 57 | } 58 | 59 | /* Tomorrow Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #6699cc; 69 | } 70 | 71 | /* Tomorrow Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #cc99cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #2d2d2d; 81 | color: #cccccc; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/tomorrow-night.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #969896; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #cc6666; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #de935f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rules .hljs-attribute { 41 | color: #f0c674; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #b5bd68; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #8abeb7; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #81a2be; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #b294bb; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #1d1f21; 82 | color: #c5c8c6; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/tomorrow.css: -------------------------------------------------------------------------------- 1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 2 | 3 | /* Tomorrow Comment */ 4 | .hljs-comment { 5 | color: #8e908c; 6 | } 7 | 8 | /* Tomorrow Red */ 9 | .hljs-variable, 10 | .hljs-attribute, 11 | .hljs-tag, 12 | .hljs-regexp, 13 | .ruby .hljs-constant, 14 | .xml .hljs-tag .hljs-title, 15 | .xml .hljs-pi, 16 | .xml .hljs-doctype, 17 | .html .hljs-doctype, 18 | .css .hljs-id, 19 | .css .hljs-class, 20 | .css .hljs-pseudo { 21 | color: #c82829; 22 | } 23 | 24 | /* Tomorrow Orange */ 25 | .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .hljs-built_in, 29 | .hljs-literal, 30 | .hljs-params, 31 | .hljs-constant { 32 | color: #f5871f; 33 | } 34 | 35 | /* Tomorrow Yellow */ 36 | .ruby .hljs-class .hljs-title, 37 | .css .hljs-rules .hljs-attribute { 38 | color: #eab700; 39 | } 40 | 41 | /* Tomorrow Green */ 42 | .hljs-string, 43 | .hljs-value, 44 | .hljs-inheritance, 45 | .hljs-header, 46 | .ruby .hljs-symbol, 47 | .xml .hljs-cdata { 48 | color: #718c00; 49 | } 50 | 51 | /* Tomorrow Aqua */ 52 | .hljs-title, 53 | .css .hljs-hexcolor { 54 | color: #3e999f; 55 | } 56 | 57 | /* Tomorrow Blue */ 58 | .hljs-function, 59 | .python .hljs-decorator, 60 | .python .hljs-title, 61 | .ruby .hljs-function .hljs-title, 62 | .ruby .hljs-title .hljs-keyword, 63 | .perl .hljs-sub, 64 | .javascript .hljs-title, 65 | .coffeescript .hljs-title { 66 | color: #4271ae; 67 | } 68 | 69 | /* Tomorrow Purple */ 70 | .hljs-keyword, 71 | .javascript .hljs-function { 72 | color: #8959a8; 73 | } 74 | 75 | .hljs { 76 | display: block; 77 | overflow-x: auto; 78 | background: white; 79 | color: #4d4d4c; 80 | padding: 0.5em; 81 | -webkit-text-size-adjust: none; 82 | } 83 | 84 | .coffeescript .javascript, 85 | .javascript .xml, 86 | .tex .hljs-formula, 87 | .xml .javascript, 88 | .xml .vbscript, 89 | .xml .css, 90 | .xml .hljs-cdata { 91 | opacity: 0.5; 92 | } 93 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/vs.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Visual Studio-like style based on original C# coloring by Jason Diamond 4 | 5 | */ 6 | .hljs { 7 | display: block; 8 | overflow-x: auto; 9 | padding: 0.5em; 10 | background: white; 11 | color: black; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-annotation, 17 | .diff .hljs-header, 18 | .hljs-chunk, 19 | .apache .hljs-cbracket { 20 | color: #008000; 21 | } 22 | 23 | .hljs-keyword, 24 | .hljs-id, 25 | .hljs-built_in,.css 26 | .smalltalk .hljs-class, 27 | .hljs-winutils, 28 | .bash .hljs-variable, 29 | .tex .hljs-command, 30 | .hljs-request, 31 | .hljs-status, 32 | .nginx .hljs-title, 33 | .xml .hljs-tag, 34 | .xml .hljs-tag .hljs-value { 35 | color: #00f; 36 | } 37 | 38 | .hljs-string, 39 | .hljs-title, 40 | .hljs-parent, 41 | .hljs-tag .hljs-value, 42 | .hljs-rules .hljs-value, 43 | .ruby .hljs-symbol, 44 | .ruby .hljs-symbol .hljs-string, 45 | .hljs-template_tag, 46 | .django .hljs-variable, 47 | .hljs-addition, 48 | .hljs-flow, 49 | .hljs-stream, 50 | .apache .hljs-tag, 51 | .hljs-date, 52 | .tex .hljs-formula, 53 | .coffeescript .hljs-attribute { 54 | color: #a31515; 55 | } 56 | 57 | .ruby .hljs-string, 58 | .hljs-decorator, 59 | .hljs-filter .hljs-argument, 60 | .hljs-localvars, 61 | .hljs-array, 62 | .hljs-attr_selector, 63 | .hljs-pseudo, 64 | .hljs-pi, 65 | .hljs-doctype, 66 | .hljs-deletion, 67 | .hljs-envvar, 68 | .hljs-shebang, 69 | .hljs-preprocessor, 70 | .hljs-pragma, 71 | .userType, 72 | .apache .hljs-sqbracket, 73 | .nginx .hljs-built_in, 74 | .tex .hljs-special, 75 | .hljs-prompt { 76 | color: #2b91af; 77 | } 78 | 79 | .hljs-phpdoc, 80 | .hljs-dartdoc, 81 | .hljs-javadoc, 82 | .hljs-xmlDocTag { 83 | color: #808080; 84 | } 85 | 86 | .hljs-type, 87 | .hljs-typename { font-weight: bold; } 88 | 89 | .vhdl .hljs-string { color: #666666; } 90 | .vhdl .hljs-literal { color: #a31515; } 91 | .vhdl .hljs-attribute { color: #00b0e8; } 92 | 93 | .xml .hljs-attribute { color: #f00; } 94 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/highlight/styles/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-tag, 19 | .css .hljs-class, 20 | .css .hljs-id, 21 | .lisp .hljs-title, 22 | .nginx .hljs-title, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #e3ceab; 27 | } 28 | 29 | .django .hljs-template_tag, 30 | .django .hljs-variable, 31 | .django .hljs-filter .hljs-argument { 32 | color: #dcdcdc; 33 | } 34 | 35 | .hljs-number, 36 | .hljs-date { 37 | color: #8cd0d3; 38 | } 39 | 40 | .dos .hljs-envvar, 41 | .dos .hljs-stream, 42 | .hljs-variable, 43 | .apache .hljs-sqbracket { 44 | color: #efdcbc; 45 | } 46 | 47 | .dos .hljs-flow, 48 | .diff .hljs-change, 49 | .python .exception, 50 | .python .hljs-built_in, 51 | .hljs-literal, 52 | .tex .hljs-special { 53 | color: #efefaf; 54 | } 55 | 56 | .diff .hljs-chunk, 57 | .hljs-subst { 58 | color: #8f8f8f; 59 | } 60 | 61 | .dos .hljs-keyword, 62 | .hljs-decorator, 63 | .hljs-title, 64 | .hljs-type, 65 | .diff .hljs-header, 66 | .ruby .hljs-class .hljs-parent, 67 | .apache .hljs-tag, 68 | .nginx .hljs-built_in, 69 | .tex .hljs-command, 70 | .hljs-prompt { 71 | color: #efef8f; 72 | } 73 | 74 | .dos .hljs-winutils, 75 | .ruby .hljs-symbol, 76 | .ruby .hljs-symbol .hljs-string, 77 | .ruby .hljs-string { 78 | color: #dca3a3; 79 | } 80 | 81 | .diff .hljs-deletion, 82 | .hljs-string, 83 | .hljs-tag .hljs-value, 84 | .hljs-preprocessor, 85 | .hljs-pragma, 86 | .hljs-built_in, 87 | .hljs-javadoc, 88 | .smalltalk .hljs-class, 89 | .smalltalk .hljs-localvars, 90 | .smalltalk .hljs-array, 91 | .css .hljs-rules .hljs-value, 92 | .hljs-attr_selector, 93 | .hljs-pseudo, 94 | .apache .hljs-cbracket, 95 | .tex .hljs-formula, 96 | .coffeescript .hljs-attribute { 97 | color: #cc9393; 98 | } 99 | 100 | .hljs-shebang, 101 | .diff .hljs-addition, 102 | .hljs-comment, 103 | .hljs-annotation, 104 | .hljs-pi, 105 | .hljs-doctype { 106 | color: #7f9f7f; 107 | } 108 | 109 | .coffeescript .javascript, 110 | .javascript .xml, 111 | .tex .hljs-formula, 112 | .xml .javascript, 113 | .xml .vbscript, 114 | .xml .css, 115 | .xml .hljs-cdata { 116 | opacity: 0.5; 117 | } 118 | 119 | -------------------------------------------------------------------------------- /willmcgugan.techblog/media/img/bearback.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/media/img/bearback.jpg -------------------------------------------------------------------------------- /willmcgugan.techblog/media/img/birdback.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moyaproject/moya-techblog/4f7d606b22773db40850b742945e83e328c63bb7/willmcgugan.techblog/media/img/birdback.jpg -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block "title" %}Not Found{% end %} 4 | 5 | {% block "body" %} 6 |

404 - Not Found

7 |

8 | The server couldn't find any content for this page. It may have been deleted, or never existed. 9 |

10 |

11 | If you think there should be a page here, why not use our Feedback form and let us know? 12 |

13 | {% end-block %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/500.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block "title" %}Internal Error{% end %} 4 | 5 | {% block "body" %} 6 |

500 - Internal Error

7 |

8 | The server encountered an error when it attempted to generate this page. 9 |

10 |

11 | Admin have been notified. Consider using the Feedback form to let us know what you were doing when you got this error page! 12 |

13 | {% end-block %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 21 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/ga.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/moya.comments/widgets/comment_editor.html: -------------------------------------------------------------------------------- 1 | {% with token=token:8 %} 2 |
3 | 4 | 8 | 9 |
10 |
11 | 12 | 13 | 14 | 15 | Use Markdown for formatting 16 | 17 | 18 |
*Italic* **Bold** `inline code` 19 | 20 | Links to [Google](http://www.google.com) 21 | 22 | > This is a quote 23 | > 24 | 25 | ```python 26 | import this 27 | ``` 28 |
29 | 30 | 31 |
32 |
33 | your comment will be previewed here 34 |
35 |
36 | 37 |
38 | {% endwith %} 39 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/moya.comments/widgets/comment_form_new.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 |
8 | {% include "widgets/comment_editor.html" %} 9 |
10 |
11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/moya.comments/widgets/comment_form_reply.html: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/moya.comments/widgets/comment_markup.html: -------------------------------------------------------------------------------- 1 | {% sanitize rules data:'/willmcgugan.techblog/sanitize_rules.json' if comment.format != 'bbcode' %}{% markup comment.text as (comment.format or commentobject.markup or 'text') %}{% end-sanitize %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/channel_list.html: -------------------------------------------------------------------------------- 1 | {% extends "blog_list.html" %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/editor/draft.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | Saved draft… 7 | 8 | 9 | 10 | 11 |
-------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/editor_base.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block "css" %} 4 | 10 | {% endblock %} 11 | 12 | {% block "footer" %} 13 | {% endblock %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/feed_description.html: -------------------------------------------------------------------------------- 1 | {%- cache for 24h key [post.id, post.updated_date, post.published_date] %} 2 | {% sanitize rules data:"feed_description_sanitize.json" %} 3 | {% markup-block as 'moya' set post=post %}{% markup post.content as post.markup %}{% end-markup-block %} 4 | {% end-sanitize %} 5 | {%- endcache %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/list.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/photo_fan.html: -------------------------------------------------------------------------------- 1 | {%- with count=len:post.images.images %} 2 |
3 | {%- for image in post.images.images[:5] %} 4 | 5 | {%- endfor %} 6 |
7 | {%- endwith %} 8 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/post_info.html: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/posts/page.html: -------------------------------------------------------------------------------- 1 | {% extends "../base.html" %} 2 | 3 | 4 | {% block "head" append %} 5 | 6 | {% end-block %} 7 | 8 | {% block "body" %} 9 |
10 |
11 | {% render sections.content %} 12 |
13 |
14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/read_more.html: -------------------------------------------------------------------------------- 1 | continue reading… 2 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/rpc/images.html: -------------------------------------------------------------------------------- 1 | {% for image in images -%} 2 | 3 | {% endfor %} -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/rpc/preview_comment.html: -------------------------------------------------------------------------------- 1 | {% sanitize rules data:'sanitize_rules.json' %}{% markup comment as markup %}{% end-sanitize %} 2 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/rpc/preview_content.html: -------------------------------------------------------------------------------- 1 |
2 | {% markup-block as 'moya' set post=post %}{% markup content as markup %}{% end-markup-block %} 3 |
4 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/search.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block "body" %} 4 |
5 |
6 | {% render sections.results %} 7 |
8 |
9 | {% render sections.side %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/search_header.html: -------------------------------------------------------------------------------- 1 |

Search Results

2 |

3 | Posts containing ${search} 4 |

5 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/settings/base.html: -------------------------------------------------------------------------------- 1 | {% extends "../base.html" %} 2 | 3 | {% block "body" %} 4 | 5 |
6 |
7 | {% render sections.side %} 8 |
9 |
10 | 11 | 17 | 18 | {% render sections.content %} 19 |
20 |
21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/settings/drafts.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/settings/links.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {%- if .url.blog %} 4 | Settings 5 | Images 6 | Drafts 7 | Actions 8 | {%- end %} 9 | {%- if .url.channel %} 10 | Settings 11 | Images 12 | {%- end %} 13 |
14 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/social.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/summary/photo.html: -------------------------------------------------------------------------------- 1 | {%- cache for 1d key [post.id, post.updated_date, .permissions.admin, numcomments] %} 2 | 3 | {%- extract as "summary_html" replace '' %} 4 | {% markup-block as 'moya' set post=post %}{% markup post.content as post.markup %}{% end-markup-block %} 5 | {%- end-extract %} 6 | 7 | {%- let post_img_src=(summary_html|'imgdata').square or summary_html|'imgsrc' %} 8 |
9 | 10 |
11 | 18 |
19 |
20 |
21 | 31 |
32 |
33 | 34 | {% include "photo_fan.html" %} 35 | 36 | {% render summary_html|'summary'(post=post) to 'html' %} 37 |
38 |
39 |
40 |
41 | {%- end-cache %} 42 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/summary/text.html: -------------------------------------------------------------------------------- 1 | {%- cache for 1d key [post.id, post.updated_date, .permissions.admin, numcomments] %} 2 | 3 | {%- extract as "summary_html" replace '' %} 4 | {% markup-block as 'moya' set post=post %}{% markup post.content as post.markup %}{% end-markup-block %} 5 | {%- end-extract %} 6 | 7 | {%- let post_img_src=(summary_html|'imgdata').square or summary_html|'imgsrc' %} 8 |
9 | 10 |
11 | 18 | {%- if post_img_src %} 19 | {%- with src=post_img_src %}{% include "summary_img.html" if src %}{%- end-with %} 20 | {%- endif %} 21 |
22 | 23 |
24 |
25 | 35 |
36 |
37 | {% render summary_html|'summary'(post=post) to 'html' %} 38 |
39 |
40 |
41 |
42 | {%- end-cache %} 43 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/summary_img.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/tag_header.html: -------------------------------------------------------------------------------- 1 |

${title:tag.name} Posts

2 |

3 | {% markup-block as 'bbcode' -%} 4 | {%- trans number count -%} 5 | ${count} post tagged with [i]${tag.name}[/i] 6 | {%- plural -%} 7 | ${count} posts tagged with [i]${tag.name}[/i] 8 | {%- end-trans -%} 9 | {%- end-markup-block %} 10 |

11 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/narrow_posts_list.html: -------------------------------------------------------------------------------- 1 | 2 | {%- if posts %} 3 | 17 | {%- endif %} 18 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/popular_tags.html: -------------------------------------------------------------------------------- 1 |

Popular Tags

2 | 11 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/post.html: -------------------------------------------------------------------------------- 1 |
2 | 10 | 11 | {%- if .user and not post.published %} 12 |
13 |

14 | This post is currently only visible to admin — Publish this post? 15 |

16 |
17 | {%- endif %} 18 | 19 | {% include "widgets/post_content.html" %} 20 |
21 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/post_content.html: -------------------------------------------------------------------------------- 1 | {%- cache for 1d key [post.id, post.updated_date, post.published_date] %} 2 | {% extract replace contents|'leadp' %} 3 | {% markup-block as 'moya' set post=post %}{% markup post.content as post.markup %}{% end-markup-block %} 4 | {% end-extract %} 5 | {%- endcache %} 6 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/posts_by_month.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {%- for year, months in years %} 4 |

${year}

5 | 6 |
7 | 17 |
18 | {%- endfor %} 19 |
20 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/recent_posts.html: -------------------------------------------------------------------------------- 1 | {% include "widgets/narrow_posts_list.html" %} 2 | -------------------------------------------------------------------------------- /willmcgugan.techblog/templates/willmcgugan.techblog/widgets/related_posts.html: -------------------------------------------------------------------------------- 1 | {%- if posts %} 2 | 17 | {%- endif %} 18 | --------------------------------------------------------------------------------