diff --git a/.gitignore b/.gitignore index ca4c8f2f..025fa086 100755 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,30 @@ -*.pyc -.DS_Store -.project -.pydevproject -*~ +*.py[co] + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +#Sphnix +docs/_build \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index a58d9e4d..db0d9693 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,25 @@ +ChangeLog +=========== + + +2011.11.27, Version 1.5 +------------------------- + +* Rewrite frontend to use memcache and templating instead of client-side javascript + +* Add test coverage for REST API + +* Add a new admin section + +* All destructive API calls now must go through the "/admin/api/v1" endpoint + +* Add a "Report Incident" button + + + 2010.07.22, Version 1.1.4 +-------------------------- + * Changed the front page to use the proper date range for events * Fix the rfc1123() to handle -ve timezone offset (Barnaby Gray) @@ -8,3 +29,5 @@ * Fix small spelling error in common.js * Added a favicon + + diff --git a/README.md b/README.md index 19935751..1d88d727 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,53 @@ # Stashboard -## About - -Stashboard was written by Twilio to provide status information on our phone, SMS, and Communication APIs. We open sourced the code and to provide a generic status page designed to be customized by any hosted services company to provide customers up-to-date status information. The code can be downloaded, customized with your logo, and run on any Google App Engine account. +Stashboard was written by Twilio to provide status information on our phone, SMS, and Communication APIs. We open sourced the code to provide a generic status page designed to be customized by any hosted services company to provide customers up-to-date status information. The code can be downloaded, customized with your logo, and run on any Google App Engine account. ## Installation -First, install the App Engine SDK for Python. +1. Download and install the [App Engine SDK for Python][appengine] +2. `git clone git://github.com/twilio/stashboard.git` +3. Add your application id to `app.yaml` +4. Open the SDK, choose `File > Add Existing Application...` and select the `stashboard` folder inside the cloned repository +5. Update the settings in `settings.py` +6. Visit http://your-app-id.appspot.com/admin/setup to complete the installation -Next, download and extract Stashboard to your computer. +From here you can either run Stashboard locally in the [App Engine development environment][local] or [deploy to Appspot][deploy]. +See the [Getting Started](http://code.google.com/appengine/docs/python/gettingstarted) guide for a basic overview of the App Engine platform. -### Run Locally +[local]: http://code.google.com/appengine/docs/python/gettingstarted/devenvironment.html +[deploy]: http://code.google.com/appengine/docs/python/gettingstarted/uploading.html +[appengine]: http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Python -Open the SDK, choose File > Add Existing Application..., select the stashboard folder you downloaded above and choose a port. Press Run and navigate to http://localhost:{port} to see your Stashboard installation. +## Demo -### Deploy to AppSpot +The most recent version of Stashboard lives at http://stashboard.appspot.com -Before you can deploy Stashboard, you will need to create an application on App Engine. +## Documentation -Once your application is registered, open app.yaml in the Stashboard directory and change application-id to the name of your newly created application. +Full documentation can be found on [Read The Docs](http://readthedocs.org/docs/stashboard/en/latest) -Hit the 'Deploy' button, wait a couple of seconds, and then naviagate to http://{app-name}.appspot.com to enjoy your new status dashboard +## Community -## Basic View +All Stashboard development and discussion happens in the [Stashboard google group](https://groups.google.com/forum/#!forum/stashboard) -By default, Stashboard exposes a rich client, utilizing AJAX and jQuery. If instead you just want a basic read only view, change the `rich_client` attribute to `False` in `config.py`. +To keep up to date, you can follow [@stashboard](http://twitter.com/stashboard) on Twitter or join the [#stashboard](irc://irc.freenode.net/stashboard) channel on freenode -## REST API +## Development -Full documentation of the REST API can be found at +You'll need to install a couple more packages to hack on Stashboard + + pip install -r requirements.txt -## Community +To run the unit tests, -All Stashboard development and discussion happens in the [Stashboard google group](https://groups.google.com/forum/#!forum/stashboard) - -To keep up to date, you can follow [@stashboard](http://twitter.com/stashboard) on Twitter or join the [#stashboard](irc://irc.freenode.net/stashboard) channel on freenode + python tests/runner.py tests ## Future -Future plans include RSS feeds, Web Hook integration, and a richer support for different status page views. - +The [roadmap](https://github.com/twilio/stashboard/wiki/Roadmap) details future plans for Stashboard. +## Acknowledgements +* Buttons by [Necolas](https://github.com/necolas/css3-github-buttons) +* Fugue icons by [Yusuke Kamiyamane](http://p.yusukekamiyamane.com/) +* Iconic icons by [P.J. Onori](http://somerandomdude.com/projects/iconic/) +* OAuth support via [simplegeo/python-oauth2](https://github.com/simplegeo/python-oauth2) diff --git a/app.yaml b/app.yaml deleted file mode 100755 index 494c466f..00000000 --- a/app.yaml +++ /dev/null @@ -1,56 +0,0 @@ -application: stashboard -version: 1 -runtime: python -api_version: 1 - -derived_file_type: -- python_precompiled - -handlers: -# URLS for testing -#- url: /tests -# static_dir: testing -# login: required - -#- url: /runner -# script: runner.py -# login: required - -- url: /css - static_dir: static/css - -- url: /images - static_dir: static/images - -- url: /js - static_dir: static/js - -- url: /widget - static_dir: static/widget - -- url: /favicon\.ico - static_files: static/favicon.ico - upload: static/favicon.ico - -- url: /robots\.txt - static_files: static/robots.txt - upload: static/robots.txt - -- url: .* - script: main.py - secure: optional - -skip_files: | - ^(.*/)?( - (#.*#)| - (.*~)| - (.*\.py[co])| - (.*/RCS/.*)| - (\..*)| - (dev/.*)| - (tests/.*)| - (docs/.*)| - (.*\.markdown)| - (license\.txt)| - (setup.py) - )$ \ No newline at end of file diff --git a/config.py b/config.py deleted file mode 100755 index 345e32c8..00000000 --- a/config.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2010 Twilio Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -import os -import logging - -from google.appengine.dist import use_library -use_library('django', '1.2') - -APP_ROOT_DIR = os.path.abspath(os.path.dirname(__file__)) - -#Stashboard version -VERSION = "1.1.6" - -# If we're debugging, turn the cache off, etc. -# Set to true if we want to have our webapp print stack traces, etc -DEBUG = os.environ['SERVER_SOFTWARE'].startswith('Dev') -logging.info("Starting application in DEBUG mode: %s", DEBUG) - -SITE = { - "html_type": "text/html", - "charset": "utf-8", - "title": "Stashboard", - "author": "Kyle Conroy", - # This must be the email address of a registered administrator for the - # application due to mail api restrictions. - "email": "kyle.j.conroy@gmail.com", - "description": "A RESTful Status Tracker on top of App Engine.", - "root_url": "http://stashboard.appspot.com", - "template_path": os.path.join(APP_ROOT_DIR, "views/default"), - "rich_client": True, #If false, the website will go into a simplified read-only view -} diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..c361c548 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,130 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Stashboard.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Stashboard.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/Stashboard" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Stashboard" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + make -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." diff --git a/docs/_static/examples/example.php b/docs/_static/examples/example.php new file mode 100644 index 00000000..43a489b5 --- /dev/null +++ b/docs/_static/examples/example.php @@ -0,0 +1,79 @@ +sign_request($sign, $consumer, $token); + $ch = curl_init($request->get_normalized_http_url()); + + if ($method == "POST") { + curl_setopt($ch, CURLOPT_POST ,1); + curl_setopt($ch, CURLOPT_POSTFIELDS , $request->to_postdata()); + } + + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); + curl_setopt($ch, CURLOPT_HEADER ,0); // DO NOT RETURN HTTP HEADERS + + return curl_exec($ch); +} + +// Fill in your website +$base_url = "https://$app_id.appspot.com/api/v1"; + +$data = array( + "name" => "An Example Service", + "description" => "An example service, created " + . "using the StashBoard API", + ); + +$r = request($consumer, $token, $base_url . "/services", "POST", $data); +$service = json_decode($r); + +// GET the list of possible status images +$r = request($consumer, $token, $base_url . "/status-images", "GET"); +$data = json_decode($r); +$images = $data->images; + +// Pick a the first image +$image = $images[0]; + +// POST to the Statuses Resources to create a new Status +$data = array( + "name" => "Example Status", + "description" => "An example status, means nothing", + "severity" => 10000, + "image" => $image->name, + ); + +$r = request($consumer, $token, $base_url . "/statuses", "POST", $data); +$status = json_decode($r); + +// Create a new event with the given status and given service +$data = array( + "message" => "Our first event! So exciting", + "status" => $status->id, + ); + +$r = request($consumer, $token, $service->url . "/events", "POST", $data); +$event = json_decode($r); + +print_r($event); + diff --git a/docs/_static/examples/example.py b/docs/_static/examples/example.py new file mode 100644 index 00000000..586128d9 --- /dev/null +++ b/docs/_static/examples/example.py @@ -0,0 +1,64 @@ +import oauth2 as oauth +import json +import urllib +import unittest +import random + +# Stashboard application id +app_id = "stashboard" + +# These keys can be found at /admin/credentials +consumer_key = 'anonymous' +consumer_secret = 'anonymous' +oauth_key = 'ACCESS_TOKEN' +oauth_secret = 'ACCESS_SECRET' + +# Create your consumer with the proper key/secret. +# If you register your application with google, these values won't be +# anonymous and anonymous. +consumer = oauth.Consumer(key=consumer_key, secret=consumer_secret) +token = oauth.Token(oauth_key, oauth_secret) + +# Create our client. +client = oauth.Client(consumer, token=token) + +# Base url for all rest requests +base_url = "https://%s.appspot.com/api/v1" % app_id + + +# CREATE a new service +data = urllib.urlencode({ + "name": "Generic Web Service", + "description": "An example web service or REST API", + }) + +resp, content = client.request(base_url + "/services", + "POST", body=data) +service = json.loads(content) + +# GET the list of possible status images +resp, content = client.request(base_url + "/status-images", "GET") +data = json.loads(content) +images = data["images"] + +# Pick a random image for our status +image = random.choice(images) + +# POST to the Statuses Resources to create a new Status +data = urllib.urlencode({ + "name": "Up", + "description": "The web service is up and running", + "image": image["name"], +}) + +resp, content = client.request(base_url + "/statuses", "POST", body=data) +status = json.loads(content) + +# Create a new event with the given status and given service +data = urllib.urlencode({ + "message": "Our first event! So exciting", + "status": status["id"], +}) + +resp, content = client.request(service["url"] + "/events", "POST", body=data) +event = json.loads(content) diff --git a/docs/_static/examples/example.rb b/docs/_static/examples/example.rb new file mode 100644 index 00000000..d41500f1 --- /dev/null +++ b/docs/_static/examples/example.rb @@ -0,0 +1,50 @@ +require 'rubygems' +require 'oauth' +require 'json' + +oauth_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' +oauth_secret = 'YYYYYYYYYYYYYYYYYYYYYYYY' + +# Fill in your website +base = "https://stashboard.appspot.com" + +@consumer=OAuth::Consumer.new "anonymous", + "anonymous", + {:site=>base} + +@token = OAuth::AccessToken.new(@consumer, oauth_key, oauth_secret) + +# POST to the Services Resource to create a new service. Save the response for +# later +@response = @token.post("/api/v1/services", { + :name => "An Example Service", + :description => "An example service, created using the StashBoard API", +}) +srvice = JSON.parse(@response.body) + +# GET the list of possible status images +@response = @token.get("/api/v1/status-images") +data = JSON.parse(@response.body) +images = data['images'] + +# Pick a random image for our status +image = images[rand(images.length)] + + +# POST to the Statuses Resources to create a new Status +@response = @token.post("/api/v1/statuses", { + :name => "Example Status", + :description => "An example status, means nothing", + :severity => 10000, + :image => image["name"], +}) + +status = JSON.parse(@response.body) + +@response = @token.post("/api/v1/services/" + srvice["id"] + "/events", { + :message => "Our first event! So exciting", + :status => status["id"], +}) +event = JSON.parse(@response.body) + +puts event diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..d21c3351 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- +# +# Stashboard documentation build configuration file, created by +# sphinx-quickstart on Thu May 19 00:03:13 2011. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Stashboard' +copyright = u'2011, Twilio' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '1.5' +# The full version, including alpha/beta/rc tags. +release = '1.5.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Stashboarddoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'Stashboard.tex', u'Stashboard Documentation', + u'Twilio', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'stashboard', u'Stashboard Documentation', + [u'Twilio'], 1) +] diff --git a/docs/examples.rst b/docs/examples.rst new file mode 100644 index 00000000..460420f6 --- /dev/null +++ b/docs/examples.rst @@ -0,0 +1,22 @@ +======================== +REST API Examples +======================== + +PHP +------- + +.. literalinclude:: _static/examples/example.php + :language: php + +Ruby +-------- + +.. literalinclude:: _static/examples/example.rb + :language: ruby + +Python +-------- + +.. literalinclude:: _static/examples/example.py + :language: python + diff --git a/docs/help.rst b/docs/help.rst new file mode 100644 index 00000000..dcd2d2b7 --- /dev/null +++ b/docs/help.rst @@ -0,0 +1,20 @@ +Community +============= + +Can't seem to get Stashboard up and running? We're always here to help + +Google Group +------------- +All Stashboard development and discussion happens in the `Stashboard google group `_ + +IRC +---- +Join the `#stashboard `_ channel on freenode + +Twitter +--------- +To keep up to date, you can follow `@stashboard `_ on Twitter + +Wiki and Issue Tracker +---------------------- +Hosted on the `stashboard Github repository `_. diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..8dd5313f --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,29 @@ +.. Stashboard documentation master file, created by + sphinx-quickstart on Thu May 19 00:03:13 2011. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +========== +Stashboard +========== + +About +===== + +Stashboard was written by Twilio to provide status information on our phone, SMS, and Communication APIs. We open sourced the code and to provide a generic status page designed to be customized by any hosted services company to provide customers up-to-date status information. The code can be downloaded, customized with your logo, and run on any Google App Engine account. + +User's Guide +============= + +A complete guide to installing, running, and developing Stashboard + +.. toctree:: + :maxdepth: 2 + + quickstart + help + restapi + examples + + + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 00000000..fc7ca596 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,170 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. changes to make an overview over all changed/added/deprecated items + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Stashboard.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Stashboard.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +:end diff --git a/docs/quickstart.rst b/docs/quickstart.rst new file mode 100644 index 00000000..5ecc4f55 --- /dev/null +++ b/docs/quickstart.rst @@ -0,0 +1,30 @@ +Getting Started +================= + +Running Locally +---------------- + +Download and install the `App Engine SDK for Python `_. + +You'll then need to checkout the Stashboard repository. + +.. code-block:: bash + + git clone git://github.com/twilio/stashboard.git` + +Open the SDK, choose ``File > Add Existing Application...`` and select the ``stashboard`` folder inside the cloned repository. Then click the green "Run" button to start the application. + +Visit http://localhost:8080/admin/setup to complete the installation. + +Customzing +------------- +Open the ``settings.py`` file and change the ``SITE_NAME``, ``SITE_URL``, and ``REPORT_URL`` options to the desired values. The ``CONSUMER_KEY`` and ``CONSUMER_SECRET`` values don't need to be changed + +Deploying +------------- + +Before you can deploy to Appspot, you'll need to `create an application on App Engine `_. Once you've done that, update the ``app.yaml`` with your application id. + +Hit the "Deploy" button, wait a couple of seconds, and then naviagate to ``http://{application-id}.appspot.com`` to enjoy your new status dashboard. + +**REMINDER:** You need to go to ``http://{application-id}.appspot.com/admin/setup`` to complete your installation. diff --git a/docs/restapi.rst b/docs/restapi.rst new file mode 100644 index 00000000..768567d7 --- /dev/null +++ b/docs/restapi.rst @@ -0,0 +1,634 @@ +======================== +REST API Documentation +======================== + +The Stashboard REST API is split in two portions. The public facing REST API only responds to GET and lives at the ``/api/v1/`` endpoint. This API requires no authentication. + +The admin-only REST API lives at the ``/admin/api/v1/`` endpoint and responsds to GET, POST, PUT, and DELETE. You'll need to authenticate via OAuth. You can obtain your OAuth keys on the OAuth Credentials page at ``https://{application-id}.appspot.com/admin/credentials`` + +Services +---------- + +The Services resource represents all web services currently tracked via Stashboard. + +============== =============== +Property Description +============== =============== +id The unique identifier by which to identify the service +name The name of the service, defined by the user +description The description of the web service +current-event The current event for the service +url The URL of the specific service resource +============== =============== + +List Resource +~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/services + +GET ++++++ + +Returns a list of all current services tracked by Stashboard + +.. code-block:: bash + + GET /admin/api/v1/services HTTP/1.1 + +.. code-block:: js + + { + "services": [ + { + "name": "Example Foo", + "id": "example-foo", + "description": "An explanation of this service" + "url": "/api/v1/services/example-foo", + "current-event": { + 'message': 'What an event!', + 'sid': 'ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M', + 'status': { + 'description': 'Hey, dude', + 'id': 'up', + 'image': '/images/status/tick-circle.png', + 'level': 'NORMAL', + 'name': 'Up', + 'url': '/statuses/up' + }, + 'timestamp': 'Mon, 28 Jun 2010 22:17:06 GMT', + 'url': '/services/twilio/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M'}, + + }, + { + "name": "Example Bar", + "id": "example-bar", + "description": "An explanation of this service" + "url": "/api/v1/services/example-bar", + "current-event": null, + } + ] + } + + +POST +++++++ + +Creates a new service (or updates an existing service) and returns the new service object. + +============== =============== +Param Description +============== =============== +name Name of the service +description Description of service +============== =============== + +.. code-block:: text + + POST /admin/api/v1/services HTTP/1.1 name=New%20Service&description=A%20great%20service + +.. code-block:: js + + { + "name": "New Service", + "id": "new-service", + "description": "A great service" + "url": "/api/v1/services/new-service", + "current-event": null, + } + + + +Instance Resource +~~~~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/services/{service} + +The Service Instance resources represents an individual web service tracked by StashBoard + +GET +++++ + +.. code-block:: bash + + GET /admin/api/v1/services/{service} HTTP/1.1 + +.. code-block:: js + + { + "name": "Example Service", + "id": "example-service", + "description": "An explanation of what this service represents" + "url": "/api/v1/services/example-service", + "current-event": null, + } + +POST ++++++ + +Updates a service's description and returns the updated service object. All the listed parameters are optional. + +============== =============== +Param Description +============== =============== +name Name of the service +description Description of service +============== =============== + +.. code-block:: text + + POST /admin/api/v1/services/{service} description=System%20is%20now%20operational + +.. code-block:: js + + { + "name": "Example Service", + "id": "example-service", + "description": "System is now operational", + "url": "/api/v1/services/example-service", + "current-event": null, + } + + +DELETE ++++++++ + +Deletes a service and returns the deleted service object + +.. code-block:: text + + DELETE /admin/api/v1/services/{service} HTTP/1.1 + +.. code-block:: js + + { + "name": "Example Service", + "id": "example-service", + "description": "System is now operational", + "url": "/api/v1/services/example-service", + "current-event": null, + } + +Events +----------- + +The Events List resource represents all event associated with a given service + + +============== =============== +Property Description +============== =============== +sid The unique identifier by which to identify the event +message The message associated with this event +timestamp The time at which this event occurred, given in RFC 1132 format. +url The URL of the specific event resource +status The status of this event, as described by the Statuses resource +============== =============== + + +List Resource +~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/services/{service}/events + +GET +++++ + +Returns all events associated with a given service in reverse chronological order. + +.. code-block:: text + + GET /admin/api/v1/services/{service}/events HTTP/1.1 + +.. code-block:: js + + { + "events": [ + { + "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", + "message": "Problem fixed", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GBAM", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd2", + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + }, + }, + { + "timestamp": "Mon, 28 Jun 2010 22:18:06 GMT", + "message": "Might be up", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic..." + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + }, + } + ] + } + +The Events List resource also supports filtering events via dates. To filter events, place on of the following options into the query string for a GET request + +While the format of these parameters is very flexible, we suggested either the RFC 2822 or RFC 1123 format due to their support for encoding timezone information. + +Events List URL Filtering Options + +======= ============ +Option Description +======= ============ +start Only show events which started after this date, inclusive. +end Only show events which started before date, inclusive. +======= ============ + +.. code-block:: text + + GET /admin/api/v1/services/{service}/events?start=2010-06-10 HTTP/1.1 + +would return all events starting after June 6, 2010. + +Similarly, both "start" and "end" can be used to create date ranges + +.. code-block:: text + + GET /admin/api/v1/services/{service}/events?end=2010-06-17&start=2010-06-01 HTTP/1.1 + +would return all events between June 6, 2010 and June 17, 2010 + + + +POST ++++++ + +Creates a new event for the given service and returns the newly created event object. All arguments are required. + +======== ============== +Param Description +======== ============== +status The system status for the event. This must be a valid system status identifier found in the Statuses List resource +message The message for the event +======== ============== + +.. code-block:: text + + POST /admin/api/v1/services/{service}/events HTTP/1.1 status=AVAILABLE&message=System%20is%20now%20operational + +.. code-block:: js + + { + "timestamp": "Mon, 28 Jun 2010 22:18:06 GMT" + "message": "Might be up", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + }, + } + +Current Event +~~~~~~~~~~~~~~~~~ + +The Current Service Event resource simply returns the current event for a given service. + +.. code-block:: text + + /admin/api/v1/services/{service}/events/current + +GET +++++ + +Returns the current event for a given service. + +.. code-block:: text + + GET /admin/api/v1/services/{service}/events/current HTTP/1.1 + +.. code-block:: js + + { + "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", + "message": "Might be up", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + }, + } + +Instance Resource +~~~~~~~~~~~~~~~~~~~~ + +The Event Instance resource represents an individual event for a given service. + +.. code-block:: text + + /admin/api/v1/services/{service}/events/{sid} + +GET +++++ + +Returns a service event with the given event sid. The event's status object is also returned as well. + +.. code-block:: text + + GET /admin/api/v1/services/{service}/events/{sid} HTTP/1.1 + +.. code-block:: js + + { + "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", + "message": "Might be up", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + } + } + + +DELETE +++++++++ + +Deletes the given event and returns the deleted event + +.. code-block:: text + + DELETE /admin/api/v1/services/{service}/events/{sid} HTTP/1.1 + +.. code-block:: js + + { + "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", + "message": "Might be up", + "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", + "status": { + "id": "down", + "name": "Down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/statuses/down", + }, + } + +Statuses +----------- +The Status resource represents a possible status for a service. + +============== =============== +Property Description +============== =============== +id The unique identifier by which to identify the status +name The name of the status, defined by the user +description The description of the status +url The URL of the specific status resource +level The level of this status. Can be any value listed in the Levels List resource +image The URL of the image for this status +============== =============== + +List Resource +~~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/statuses + + +The Status List resource represents all possible systems statuses. + + +GET ++++++ + +Returns all service statuses + +.. code-block:: text + + GET /admin/api/v1/statuses HTTP/1.1 + +.. code-block:: js + + { + "statuses": [ + { + "name": "Available", + "id": "available", + "description": "An explanation of what this status represents", + "level": "NORMAL", + "image": "/images/status/tick-circle.png", + "url": "api/v1/statuses/up", + }, + { + "name": "Down", + "id": "down", + "description": "An explanation of what this status represents", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "api/v1/statuses/down", + }, + ] + } + +POST +++++++ + +Creates a new status and returns this newly created status. All parameters are required. + +============ ============== +Param Description +============ ============== +name The name of the status +description The description of the status +level The level of the status. lues listed in the rce +image The filename of the image, with no extension. See the status-images resource +============ ============== + +.. code-block:: text + + POST /admin/api/v1/statuses HTTP/1.1 name=Down&description=A%20new%20status&severity=1000&image=cross-circle.png + +.. code-block:: js + + { + "name": "Down", + "id": "down" + "description": "A new status", + "level": "ERROR", + "image": "cross-circle", + "url": "/api/v1/statuses/down", + } + +Instance Resource +~~~~~~~~~~~~~~~~~~~~~ + +The Status Instance resource represents a single service status + +.. code-block:: text + + /admin/api/v1/statuses/{name} + + +GET ++++++ + +Returns a status object + +.. code-block:: text + + GET /admin/api/v1/services HTTP/1.1 + +.. code-block:: js + + { + "name": "Down", + "id": "down", + "description": "A new status", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + } + +POST +++++++ + +Update the given status. All the following parameters are optional. + +============ ============== +Param Description +============ ============== +name The name of the status +description The description of the status +level The level of the status. lues listed in the rce +image The filename of the image, with no extension. See the status-images resource +============ ============== + +.. code-block:: text + + POST /admin/api/v1/statuses HTTP/1.1 description=A%20new%20status&severity=1010&image=cross-circle.png + +.. code-block:: js + + { + "name": "Down", + "id": "down", + "description": "A new status", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + } + +DELETE ++++++++++ + +Delete the given status and return the deleted status + + +.. code-block:: text + + DELETE /admin/api/v1/statuses/{name} + +.. code-block:: js + + { + "name": "Down", + "id": "down", + "description": "A new status", + "level": "ERROR", + "image": "/images/status/cross-circle.png", + "url": "/api/v1/statuses/down", + } + +Status Levels +---------------- +The Status Levels resource is a read-only resource which lists the possible levels for a status. + +List Resource +~~~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/levels + +GET ++++++ +Returns a list of possible status levels in increasing severity + +.. code-block:: text + + GET /admin/api/v1/levels + +.. code-block:: js + + { + "levels": [ + "INFO", + "NORMAL", + "WARNING", + "ERROR", + "CRITICAL", + ] + } + + +Status Images +---------------- +The Status Images resource is a read-only resource which lists the icons available to use for statuses + +List Resource +~~~~~~~~~~~~~~~ + +.. code-block:: text + + /admin/api/v1/status-images + +GET +++++++ + +Returns a list of status images. + +.. code-block:: text + + GET /admin/api/v1/status-images + +.. code-block:: js + + { + "images": [ + { + "name": "sample-image", + "url": "/status-images/sample-image.png", + }, + { + "name": "sample-image", + "url": "/status-images/sample-image.png", + }, + ] + } diff --git a/examples/stashboard.php b/examples/stashboard.php deleted file mode 100644 index ee2c6691..00000000 --- a/examples/stashboard.php +++ /dev/null @@ -1,80 +0,0 @@ -sign_request($sign, $consumer, $token); - - $ch = curl_init($request->get_normalized_http_url()); - - if ($method == "POST") { - curl_setopt($ch, CURLOPT_POST ,1); - curl_setopt($ch, CURLOPT_POSTFIELDS , $request->to_postdata()); - } - - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); - curl_setopt($ch, CURLOPT_HEADER ,0); // DO NOT RETURN HTTP HEADERS - - return curl_exec($ch); - } - - // Fill in your website - $base_url = "https://stashboard.appspot.com/api/v1"; - - $data = array( - "name" => "An Example Service", - "description" => "An example service, created using the StashBoard API", - ); - - $r = request($consumer, $token, $base_url . "/services", "POST", $data); - $service = json_decode($r); - - // GET the list of possible status images - $r = request($consumer, $token, $base_url . "/status-images", "GET"); - $data = json_decode($r); - $images = $data->images; - - - - // Pick a the first image - $image = $images[0]; - - // POST to the Statuses Resources to create a new Status - $data = array( - "name" => "Example Status", - "description" => "An example status, means nothing", - "severity" => 10000, - "image" => $image->name, - ); - - $r = request($consumer, $token, $base_url . "/statuses", "POST", $data); - $status = json_decode($r); - - // Create a new event with the given status and given service - $data = array( - "message" => "Our first event! So exciting", - "status" => $status->id, - ); - - $r = request($consumer, $token, $service->url . "/events", "POST", $data); - $event = json_decode($r); - - print_r($event); - - \ No newline at end of file diff --git a/examples/stashboard.py b/examples/stashboard.py deleted file mode 100644 index 2222504a..00000000 --- a/examples/stashboard.py +++ /dev/null @@ -1,142 +0,0 @@ -import oauth2 as oauth -import json -import urllib -import unittest - -oauth_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -oauth_secret = 'YYYYYYYYYYYYYYYYYYYYYYYY' - -# Create your consumer with the proper key/secret. -# If you register your application with google, these values won't be -# anonymous and anonymous. -consumer = oauth.Consumer(key='anonymous', secret='anonymous') -token = oauth.Token(oauth_key, oauth_secret) - -# Fill in your website -base_url = "https://stashboard.appspot.com/api/v1" - -# Create our client. -client = oauth.Client(consumer, token=token) - -class ServicesTest(unittest.TestCase): - - def testMissingServiceName(self): - "should return 400 Bad Data" - data = urllib.urlencode({ - "description": "An example service API", - }) - - resp, content = client.request(base_url + "/services", - "POST", body=data) - - self.assertEquals(resp.status, 400) - - def testMissingServiceDescription(self): - "should return 400 Bad Data" - data = urllib.urlencode({ - "name": "Some Random Name", - }) - - resp, content = client.request(base_url + "/services", - "POST", body=data) - - self.assertEquals(resp.status, 400) - - def testMissingServiceData(self): - "should return 400 Bad Data" - resp, content = client.request(base_url + "/services", "POST") - self.assertEquals(resp.status, 400) - - def testDelete(self): - "should return 405 Method Not Allowed" - resp, content = client.request(base_url + "/services", "DELETE") - self.assertEquals(resp.status, 405) - - def testPut(self): - "should return 411 Content Length Required" - resp, content = client.request(base_url + "/services", "PUT") - self.assertEquals(resp.status, 411) - - def testPutWithData(self): - "should return 405 Method Not Allowed" - data = urllib.urlencode({ - "name": "Some Random Name", - }) - resp, content = client.request(base_url + "/services", - "PUT", body=data) - self.assertEquals(resp.status, 405) - - def testServiceLifeCycle(self): - "should return 200 and a newly created status" - data = urllib.urlencode({ - "name": "What a service", - "description": "An example service API", - }) - - resp, content = client.request(base_url + "/services", "POST", body=data) - service = json.loads(content) - - self.assertEquals(resp.status, 200) - self.assertEquals(service["name"], "What a service") - self.assertEquals(service["description"], "An example service API") - - resp, content = client.request(base_url + "/services/" + service["id"], "GET") - service = json.loads(content) - - self.assertEquals(resp.status, 200) - self.assertEquals(service["name"], "What a service") - self.assertEquals(service["description"], "An example service API") - - # Update service - data = urllib.urlencode({ - "description": "An example service API woohoo", - }) - - resp, content = client.request(base_url + "/services/" + service["id"], - "POST", body=data) - service = json.loads(content) - - self.assertEquals(resp.status, 200) - self.assertEquals(service["name"], "What a service") - self.assertEquals(service["description"], "An example service API woohoo") - - # Delete service - resp, content = client.request(base_url + "/services/" + service["id"], - "DELETE") - service = json.loads(content) - - self.assertEquals(resp.status, 200) - self.assertEquals(service["name"], "What a service") - self.assertEquals(service["description"], "An example service API woohoo") - -if __name__ == '__main__': - unittest.main() - -# GET the list of possible status images -resp, content = client.request(base_url + "/status-images", "GET") -data = json.loads(content) -images = data["images"] - -# Pick a random image for our status -image = images[0] - -# POST to the Statuses Resources to create a new Status -data = urllib.urlencode({ - "name": "Example Status", - "description": "An example status, means nothing", - "severity": 10000, - "image": image["name"], -}) - -resp, content = client.request(base_url + "/statuses", "POST", body=data) -status = json.loads(content) - -# Create a new event with the given status and given service -data = urllib.urlencode({ - "message": "Our first event! So exciting", - "status": status["id"], -}) - -resp, content = client.request(service["url"] + "/events", "POST", body=data) -event = json.loads(content) - diff --git a/examples/stashboard.rb b/examples/stashboard.rb deleted file mode 100644 index 2e128655..00000000 --- a/examples/stashboard.rb +++ /dev/null @@ -1,50 +0,0 @@ -require 'rubygems' -require 'oauth' -require 'json' - -oauth_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -oauth_secret = 'YYYYYYYYYYYYYYYYYYYYYYYY' - -# Fill in your website -base = "https://stashboard.appspot.com" - -@consumer=OAuth::Consumer.new "anonymous", - "anonymous", - {:site=>base} - -@token = OAuth::AccessToken.new(@consumer, oauth_key, oauth_secret) - -# POST to the Services Resource to create a new service. Save the response for -# later -@response = @token.post("/api/v1/services", { - :name => "An Example Service", - :description => "An example service, created using the StashBoard API", -}) -srvice = JSON.parse(@response.body) - -# GET the list of possible status images -@response = @token.get("/api/v1/status-images") -data = JSON.parse(@response.body) -images = data['images'] - -# Pick a random image for our status -image = images[rand(images.length)] - - -# POST to the Statuses Resources to create a new Status -@response = @token.post("/api/v1/statuses", { - :name => "Example Status", - :description => "An example status, means nothing", - :severity => 10000, - :image => image["name"], -}) - -status = JSON.parse(@response.body) - -@response = @token.post("/api/v1/services/" + srvice["id"] + "/events", { - :message => "Our first event! So exciting", - :status => status["id"], -}) -event = JSON.parse(@response.body) - -puts event \ No newline at end of file diff --git a/examples/widget/example.html b/examples/widget/example.html deleted file mode 100644 index 1a170d68..00000000 --- a/examples/widget/example.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - HellO! - - - - - - \ No newline at end of file diff --git a/examples/widget/output.html b/examples/widget/output.html deleted file mode 100644 index fc4adeef..00000000 --- a/examples/widget/output.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - HellO! - - - -
- - Service: message -
-
- -
- - - \ No newline at end of file diff --git a/handlers/api.py b/handlers/api.py deleted file mode 100644 index da47ccab..00000000 --- a/handlers/api.py +++ /dev/null @@ -1,492 +0,0 @@ -# The MIT License -# -# Copyright (c) 2008 William T. Katz -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -"""A simple RESTful status framework on Google App Engine - -This app's API should be reasonably clean and easily targeted by other -clients, like a Flex app or a desktop program. -""" - -__author__ = 'Kyle Conroy' - -import datetime -from datetime import timedelta -from datetime import date -from datetime import datetime -from datetime import time -from dateutil.parser import parse -import string -import re -import os -import cgi -import urllib -import logging -import jsonpickle -import status_images - -from wsgiref.handlers import format_date_time -from time import mktime - -from google.appengine.ext import webapp -from google.appengine.api import users -from google.appengine.ext import db - -from handlers import restful -from utils import authorized -from utils import slugify -from models import Status, Event, Service, Level -import config - -def aware_to_naive(d): - """Convert an aware date to an naive date, in UTC""" - offset = d.utcoffset() - if offset: - d = d.replace(tzinfo=None) - d = d - offset - return d - -class NotFoundHandler(restful.Controller): - def get(self): - logging.debug("NotFoundAPIHandler#get") - self.error(404, "Can't find resouce") - -class ServicesListHandler(restful.Controller): - def get(self, version): - logging.debug("ServicesListHandler#get") - if (self.valid_version(version)): - - query = Service.all().order('name') - data = [] - - - for s in query: - data.append(s.rest(self.base_url(version))) - - data = { "services": data } - - self.json(data) - - else: - self.error(404, "API Version %s not supported" % version) - - @authorized.api("admin") - def post(self, version): - logging.debug("ServicesListHandler#post") - - if (self.valid_version(version)): - - name = self.request.get('name', default_value=None) - description = self.request.get('description', default_value=None) - - if name and description: - slug = slugify.slugify(name) - existing_s = Service.get_by_slug(slug) - - # Update existing resource - if existing_s: - existing_s.description = description - existing_s.put() - self.json(existing_s.rest(self.base_url(version))) - # Create new service - else: - s = Service(name=name, slug=slug, description=description) - s.put() - self.json(s.rest(self.base_url(version))) - else: - self.error(400, "Bad Data: Name: %s, Description: %s" % (name, description)) - else: - self.error(404, "API Version %s not supported" % version) - - -class ServiceInstanceHandler(restful.Controller): - def get(self, version, service_slug): - logging.debug("ServiceInstanceHandler#get") - - if (self.valid_version(version)): - service = Service.get_by_slug(service_slug) - - if (service): - self.json(service.rest(self.base_url(version))) - else: - self.error(404, "Service %s does not exist" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - @authorized.api("admin") - def post(self, version, service_slug): - logging.debug("ServiceInstanceHandler#post") - name = self.request.get('name', default_value=None) - description = self.request.get('description', default_value=None) - - if (self.valid_version(version)): - service = Service.get_by_slug(service_slug) - if service: - if description: - service.description = description - - if name: - service.name = name - - if name or description: - service.put() - - self.json(service.rest(self.base_url(version))) - else: - self.error(404, "Service %s does not exist" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - @authorized.api("admin") - def delete(self, version, service_slug): - logging.debug("ServiceInstanceHandler#delete slug=%s" % service_slug) - - if (self.valid_version(version)): - - service = Service.get_by_slug(service_slug) - - if service: - query = Event.all() - query.filter('service =', service) - if query: - for e in query: - e.delete() - - service.delete() - self.json(service.rest(self.base_url(version))) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - - - -class EventsListHandler(restful.Controller): - def get(self, version, service_slug): - logging.debug("StatusesListHandler#get") - - if (self.valid_version(version)): - service = Service.get_by_slug(service_slug) - - if service: - start = self.request.get('start', default_value=None) - end = self.request.get('end', default_value=None) - - query = Event.all() - query.filter('service =', service) - - if start: - try: - _start = aware_to_naive(parse(start)) - query.filter("start >= ", _start) - except: - self.error(400, "Invalid Date: %s" % start) - return - - if end: - try: - _end = aware_to_naive(parse(end)) - query.filter("start <=", _end) - except: - self.error(400, "Invalid Date: %s" % end) - return - - query.order('-start') - - if query: - data = [] - - for s in query: - data.append(s.rest(self.base_url(version))) - - data = { "events": data } - - self.json(data) - else: - self.error(404, "No events for Service %s" % service_slug) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - @authorized.api("admin") - def post(self, version, service_slug): - logging.debug("EventsListHandler#post") - - if (self.valid_version(version)): - status_slug = self.request.get("status", default_value=None) - message = self.request.get("message", default_value=None) - informational = self.request.get("informational", default_value=None) - - if message: - service = Service.get_by_slug(service_slug) - if service: - - if not status_slug: - event = service.current_event() - if event: - status = event.status - else: - status = Status.default() - else: - status = Status.get_by_slug(status_slug) - - if status: - e = Event(status=status, service=service, - message=message) - - e.informational = informational and informational == "true" - - e.put() - self.json(e.rest(self.base_url(version))) - else: - self.error(404, "Status %s not found" % status_slug) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(400, "Event message is required") - else: - self.error(404, "API Version %s not supported" % version) - - - -class CurrentEventHandler(restful.Controller): - def get(self, version, service_slug): - logging.debug("CurrentStatusHandler#get") - - if (self.valid_version(version)): - - service = Service.get_by_slug(service_slug) - - if (service): - event = service.current_event() - - if (event): - self.json(event.rest(self.base_url(version))) - else: - self.error(404, "No current event for Service %s" % service_slug) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(404, "Version %s not supported" % version) - -class EventInstanceHandler(restful.Controller): - def get(self, version, service_slug, sid): - logging.debug("EventInstanceHandler#get sid=%s" % sid) - - if (self.valid_version(version)): - service = Service.get_by_slug(service_slug) - - if (service): - event = Event.get(db.Key(sid)) - if (event and service.key() == event.service.key()): - self.json(event.rest(self.base_url(version))) - else: - self.error(404, "No event for Service %s with sid = %s" % (service_slug,sid)) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - @authorized.api("admin") - def delete(self, version, service_slug, sid): - logging.debug("EventInstanceHandler#delete sid=%s" % sid) - - if (self.valid_version(version)): - service = Service.get_by_slug(service_slug) - - if (service): - event = Event.get(db.Key(sid)) - if (event and service.key() == event.service.key()): - event.delete() - self.success(event.rest(self.base_url(version))) - else: - self.error(404, "No event for Service %s with sid = %s" % (service_slug,sid)) - else: - self.error(404, "Service %s not found" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - -class StatusesListHandler(restful.Controller): - def get(self, version): - logging.debug("StatusesListHandler#get") - - if (self.valid_version(version)): - query = Status.all().order('severity') - - if (query): - data = [] - - for s in query: - data.append(s.rest(self.base_url(version))) - - self.json({"statuses": data}) - else: - self.error(404, "No statuses") - else: - self.error(404, "API Version %s not supported" % version) - - - @authorized.api("admin") - def post(self, version): - - if (self.valid_version(version)): - name = self.request.get('name', default_value=None) - description = self.request.get('description', default_value=None) - image = self.request.get('image', default_value=None) - level = self.request.get('level', default_value=None) - severity = Level.get_severity(level) - - if name and description and severity and image: - slug = slugify.slugify(name) - status = Status.get_by_slug(slug) - - # Update existing resource - if status: - status.description = description - status.severity = severity - status.image = image - status.name = name - status.put() - self.json(status.rest(self.base_url(version))) - # Create new service - else: - status = Status(name=name, slug=slug, description=description, - severity=severity, image=image) - status.put() - self.json(status.rest(self.base_url(version))) - else: - self.error(400, "Bad Data") - else: - self.error(404, "API Version %s not supported" % version) - - - -class StatusInstanceHandler(restful.Controller): - def get(self, version, status_slug): - logging.debug("CurrentStatusHandler#get") - - if (self.valid_version(version)): - status = Status.get_by_slug(status_slug) - - if (status): - self.json(status.rest(self.base_url(version))) - else: - self.error(404, "No status %s for Service %s" % status_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - @authorized.api("admin") - def post(self, version, status_slug): - - - if (self.valid_version(version)): - status = Status.get_by_slug(status_slug) - if status: - name = self.request.get('name', default_value=None) - image = self.request.get('image', default_value=None) - description = self.request.get('description', default_value=None) - level = self.request.get('level', default_value=None) - severity = Level.get_severity(level) - - if description: - status.description = description - - if image: - status.image = image - - if name: - status.name = name - - if severity: - status.severity = severity - - if description or name or image or severity: - status.put() - - self.json(status.rest(self.base_url(version))) - else: - self.error(404, "Status %s not found" % status_slug) - else: - self.error(404, "API Version %s not supported" % version) - - @authorized.api("admin") - def delete(self, version, status_slug): - logging.debug("StatusInstanceHandler#delete slug=%s" % status_slug) - - if (self.valid_version(version)): - - status = Status.get_by_slug(status_slug) - - if status: - # We may want to think more about this - events = Event.all().filter('status =', status).fetch(1000) - for event in events: - event.delete() - status.delete() - self.json(status.rest(self.base_url(version))) - else: - self.error(404, "Status %s not found" % service_slug) - else: - self.error(404, "API Version %s not supported" % version) - - - - -class ImagesListHandler(restful.Controller): - def get(self, version): - logging.debug("ImagesListHandler#get") - host = self.request.headers.get('host', 'nohost') - - if (self.valid_version(version)): - - query = status_images.images - - for img in query: - img["url"] = "http://" + host + img["url"] - - if (query): - self.json({"images": query}) - else: - self.error(404, "No images") - else: - self.error(404, "API Version %s not supported" % version) - -class LevelsListHandler(restful.Controller): - def get(self, version): - logging.debug("LevelsListHandler#get") - - if (self.valid_version(version)): - - self.json({"levels": Level.all()}) - - else: - - self.error(404, "API Version %s not supported" % version) - diff --git a/handlers/site.py b/handlers/site.py deleted file mode 100644 index 4622170f..00000000 --- a/handlers/site.py +++ /dev/null @@ -1,403 +0,0 @@ -# The MIT License -# -# Copyright (c) 2008 William T. Katz -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -"""A simple RESTful blog/homepage app for Google App Engine - -This simple homepage application tries to follow the ideas put forth in the -book 'RESTful Web Services' by Leonard Richardson & Sam Ruby. It follows a -Resource-Oriented Architecture where each URL specifies a resource that -accepts HTTP verbs. - -Rather than create new URLs to handle web-based form submission of resources, -this app embeds form submissions through javascript. The ability to send -HTTP verbs POST, PUT, and DELETE is delivered through javascript within the -GET responses. In other words, a rich client gets transmitted with each GET. - -This app's API should be reasonably clean and easily targeted by other -clients, like a Flex app or a desktop program. -""" - -__author__ = 'Kyle Conroy' - -import datetime -from datetime import date, timedelta -import calendar -import string -import re -import os -import cgi -import urllib -import logging -import urlparse -from wsgiref.handlers import format_date_time -from time import mktime - -from google.appengine.ext import webapp -from google.appengine.ext import db -from google.appengine.api import users - -import oauth2 as oauth -from handlers import restful -from utils import authorized -from models import Status, Service, Event, Profile, AuthRequest - -import config - -def default_template_data(): - user = users.get_current_user() - - if user: - greeting = users.create_logout_url("/") - else: - greeting = users.create_login_url("/") - - - - status_images = [ - [ - "tick-circle", - "cross-circle", - "exclamation", - "wrench", - "flag", - ], - [ - "clock", - "heart", - "hard-hat", - "information", - "lock", - ], - [ - "plug", - "question", - "traffic-cone", - "bug", - "broom", - ], - ] - - data = { - "title": config.SITE["title"], - "user": user, - "user_is_admin": users.is_current_user_admin(), - "login_link": greeting, - 'common_statuses': status_images, - } - - return data - -def get_past_days(num): - date = datetime.date.today() - dates = [] - - for i in range(1, num+1): - dates.append(date - datetime.timedelta(days=i)) - - return dates - - -class NotFoundHandler(restful.Controller): - def get(self): - logging.debug("NotFoundHandler#get") - template_data = {} - self.render(template_data, '404.html') - -class UnauthorizedHandler(webapp.RequestHandler): - def get(self): - logging.debug("UnauthorizedHandler#get") - self.error(403) - #template_data = {} - #self.render(template_data, 'unathorized.html') - -class RootHandler(restful.Controller): - - @authorized.force_ssl(only_admin=True) - def get(self): - user = users.get_current_user() - logging.debug("RootHandler#get") - - q = Service.all() - q.order("name") - - td = default_template_data() - td["past"] = get_past_days(5) - - self.render(td, 'index.html') - -class ServiceHandler(restful.Controller): - - @authorized.force_ssl(only_admin=True) - def get(self, service_slug, year=None, month=None, day=None): - user = users.get_current_user() - logging.debug("ServiceHandler#get") - - service = Service.get_by_slug(service_slug) - - if not service: - self.render({}, "404.html") - return - - try: - if day: - start_date = date(int(year),int(month),int(day)) - end_date = start_date + timedelta(days=1) - elif month: - start_date = date(int(year),int(month),1) - days = calendar.monthrange(start_date.year, start_date.month)[1] - end_date = start_date + timedelta(days=days) - elif year: - start_date = date(int(year),1,1) - end_date = start_date + timedelta(days=365) - else: - start_date = None - end_date = None - except ValueError: - self.render({},'404.html') - return - - td = default_template_data() - td["service"] = service_slug - - if start_date and end_date: - start_stamp = mktime(start_date.timetuple()) - end_stamp = mktime(end_date.timetuple()) - # Remove GMT from the string so that the date is - # is parsed in user's time zone - td["start_date"] = start_date - td["end_date"] = end_date - td["start_date_stamp"] = format_date_time(start_stamp)[:-4] - td["end_date_stamp"] = format_date_time(end_stamp)[:-4] - else: - td["start_date"] = None - td["end_date"] = None - - self.render(td, 'service.html') - -class DebugHandler(restful.Controller): - - @authorized.force_ssl() - def get(self): - logging.debug("DebugHandler %s", self.request.scheme) - td = default_template_data() - self.render(td,'base.html') - - -class BasicRootHandler(restful.Controller): - def get(self): - user = users.get_current_user() - logging.debug("BasicRootHandler#get") - - q = Service.all() - q.order("name") - services = q.fetch(100) - - p = Status.all() - p.order("severity") - - past = get_past_days(5) - - td = default_template_data() - td["services"] = q.fetch(100) - td["statuses"] = p.fetch(100) - td["past"] = past - td["default"] = Status.default() - - self.render(td, 'basic','index.html') - -class BasicServiceHandler(restful.Controller): - - def get(self, service_slug, year=None, month=None, day=None): - user = users.get_current_user() - logging.debug("BasicServiceHandler#get") - - service = Service.get_by_slug(service_slug) - - - if not service: - self.render({}, "404.html") - return - - events = service.events - show_admin = False - - try: - if day: - start_date = date(int(year),int(month),int(day)) - end_date = start_date + timedelta(days=1) - elif month: - start_date = date(int(year),int(month),1) - days = calendar.monthrange(start_date.year, start_date.month)[1] - end_date = start_date + timedelta(days=days) - elif year: - start_date = date(int(year),1,1) - end_date = start_date + timedelta(days=365) - else: - start_date = None - end_date = None - show_admin = True - except ValueError: - self.render({},'404.html') - return - - if start_date and end_date: - events.filter('start >= ', start_date).filter('start <', end_date) - - events.order("-start") - - td = default_template_data() - td["service"] = service - td["events"] = events.fetch(100) - td["start_date"] = start_date - td["end_date"] = end_date - - self.render(td, 'basic','service.html') - -class DocumentationHandler(restful.Controller): - - def get(self, page): - td = default_template_data() - - if page == "overview": - td["overview_selected"] = True - self.render(td, 'overview.html') - elif page == "rest": - td["rest_selected"] = True - self.render(td, 'restapi.html') - elif page == "examples": - td["example_selected"] = True - self.render(td, 'examples.html') - else: - self.render({},'404.html') - - - -class VerifyAccessHandler(restful.Controller): - - @authorized.force_ssl() - @authorized.role("admin") - def get(self): - oauth_token = self.request.get('oauth_token', default_value=None) - oauth_verifier = self.request.get('oauth_verifier', default_value=None) - user = users.get_current_user() - authr = AuthRequest.all().filter('owner = ', user).get() - - if oauth_token and oauth_verifier and user and authr: - - host = self.request.headers.get('host', 'nohost') - access_token_url = 'https://%s/_ah/OAuthGetAccessToken' % host - - consumer_key = 'anonymous' - consumer_secret = 'anonymous' - - consumer = oauth.Consumer(consumer_key, consumer_secret) - - token = oauth.Token(oauth_token, authr.request_secret) - token.set_verifier(oauth_verifier) - client = oauth.Client(consumer, token) - - if "localhost" not in host: - - resp, content = client.request(access_token_url, "POST") - - if resp['status'] == '200': - - access_token = dict(cgi.parse_qsl(content)) - - profile = Profile(owner=user, - token=access_token['oauth_token'], - secret=access_token['oauth_token_secret']) - profile.put() - - self.redirect("/documentation/credentials") - - - - - - -class ProfileHandler(restful.Controller): - - @authorized.force_ssl() - def get(self): - - consumer_key = 'anonymous' - consumer_secret = 'anonymous' - - td = default_template_data() - td["logged_in"] = False - td["credentials_selected"] = True - td["consumer_key"] = consumer_key - - user = users.get_current_user() - - if user: - - td["logged_in"] = users.is_current_user_admin() - profile = Profile.all().filter('owner = ', user).get() - - if profile: - - td["user_is_authorized"] = True - td["profile"] = profile - - else: - - host = self.request.headers.get('host', 'nohost') - - callback = 'http://%s/documentation/verify' % host - - request_token_url = 'https://%s/_ah/OAuthGetRequestToken?oauth_callback=%s' % (host, callback) - authorize_url = 'https://%s/_ah/OAuthAuthorizeToken' % host - - consumer = oauth.Consumer(consumer_key, consumer_secret) - client = oauth.Client(consumer) - - # Step 1: Get a request token. This is a temporary token that is used for - # having the user authorize an access token and to sign the request to obtain - # said access token. - - td["user_is_authorized"] = False - - if "localhost" not in host: - - resp, content = client.request(request_token_url, "GET") - - if resp['status'] == '200': - - request_token = dict(cgi.parse_qsl(content)) - - authr = AuthRequest.all().filter("owner =", user).get() - - if authr: - authr.request_secret = request_token['oauth_token_secret'] - else: - authr = AuthRequest(owner=user, - request_secret=request_token['oauth_token_secret']) - - authr.put() - - td["oauth_url"] = "%s?oauth_token=%s" % (authorize_url, request_token['oauth_token']) - - self.render(td, 'credentials.html') - - diff --git a/main.py b/main.py deleted file mode 100755 index 72d7d5ce..00000000 --- a/main.py +++ /dev/null @@ -1,105 +0,0 @@ -# The MIT License -# -# Copyright (c) 2008 William T. Katz -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - - -__author__ = 'Kyle Conroy' - -import config -import os -import sys -import logging -import wsgiref.handlers - -# Force sys.path to have our own directory first, so we can import from it. -sys.path.insert(0, config.APP_ROOT_DIR) -sys.path.insert(1, os.path.join(config.APP_ROOT_DIR, 'utils/external')) -os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' - - -from google.appengine.api import memcache -from google.appengine.ext import webapp -from google.appengine.api import users - -from handlers import site, api -from models import Status, Setting - - -# Log a message each time this module get loaded. -logging.info('Loading %s, app version = %s', - __name__, os.getenv('CURRENT_VERSION_ID')) - -if (config.SITE["rich_client"]): - serviceHandler = site.ServiceHandler - rootHandler = site.RootHandler -else: - rootHandler = site.BasicRootHandler - serviceHandler = site.BasicServiceHandler - -ROUTES = [ - ('/*$', rootHandler), - ('/debug', site.DebugHandler), - #('/*[^/]', site.) redirect pages without slashed to pages with slashes - - #API - ('/403.html', site.UnauthorizedHandler), - ('/404.html', site.NotFoundHandler), - (r'/api/(.+)/services', api.ServicesListHandler), - (r'/api/(.+)/services/(.+)/events', api.EventsListHandler), - (r'/api/(.+)/services/(.+)/events/current', api.CurrentEventHandler), - (r'/api/(.+)/services/(.+)/events/(.+)', api.EventInstanceHandler), - (r'/api/(.+)/services/(.+)', api.ServiceInstanceHandler), - (r'/api/(.+)/statuses', api.StatusesListHandler), - (r'/api/(.+)/statuses/(.+)', api.StatusInstanceHandler), - (r'/api/(.+)/status-images', api.ImagesListHandler), - (r'/api/(.+)/levels', api.LevelsListHandler), - (r'/api/.*', api.NotFoundHandler), - - #SITE - (r'/services/(.+)/(.+)/(.+)/(.+)', serviceHandler), - (r'/services/(.+)/(.+)/(.+)', serviceHandler), - (r'/services/(.+)/(.+)', serviceHandler), - (r'/services/(.+)', serviceHandler), - (r'/documentation/credentials', site.ProfileHandler), - (r'/documentation/verify', site.VerifyAccessHandler), - (r'/documentation/(.+)', site.DocumentationHandler), - - ('/.*$', site.NotFoundHandler), - - -] - -def main(): - # Check if defaults have been installed - installed_defaults = memcache.get("installed_defaults") - if installed_defaults is None: - installed_defaults = Setting.all().filter('name = ', 'installed_defaults').get() - if installed_defaults is None: - logging.info("Installing default statuses") - Status.install_defaults() - if not memcache.add("installed_defaults", True): - logging.error("Memcache set failed.") - - application = webapp.WSGIApplication(ROUTES, debug=config.DEBUG) - wsgiref.handlers.CGIHandler().run(application) - -if __name__ == "__main__": - main() diff --git a/markdown/convert.py b/markdown/convert.py deleted file mode 100644 index ac14ab00..00000000 --- a/markdown/convert.py +++ /dev/null @@ -1,17 +0,0 @@ -import subprocess -import os - -def convert(name, filename): - - markdown = subprocess.Popen(["/Users/kyleconroy/.cabal/bin/pandoc", filename],stdout=subprocess.PIPE).communicate()[0] - f = open("/Users/kyleconroy/twilio/ismywebservicedown/views/default/%s.html" % name, 'w') - print >>f, "{% extends \"documentation.html\" %}" - print >>f, "{% block document %}" - print >>f, markdown - print >>f, "{% endblock %}" - f.close() - -if __name__ == '__main__': - files = ["examples", "restapi", "overview"] - for f in files: - convert(f, os.path.abspath("%s.markdown" % f)) diff --git a/markdown/examples.markdown b/markdown/examples.markdown deleted file mode 100644 index 565c9248..00000000 --- a/markdown/examples.markdown +++ /dev/null @@ -1,215 +0,0 @@ -## Examples - -The following examples will use the StashBoard REST API to create a service, create a status, and then create an event with the new status for the new service. Sample code is provided for Python, Ruby, and PHP. - -If you haven't already, head over to the [API Credentials section](/documentation/credentials) to obtain your API key. Please note that you must be an administrator to make changes via the REST API. - -### Python - -This example uses the great [python-oauth2](http://github.com/simplegeo/python-oauth2) library by Leah Culver. - - import oauth2 as oauth - import json - import urllib - from random import choice - - oauth_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' - oauth_secret = 'YYYYYYYYYYYYYYYYYYYYYYYY' - - # Create your consumer with the proper key/secret. - # If you register your application with google, these values won't be - # anonymous and anonymous. - consumer = oauth.Consumer(key='anonymous', secret='anonymous') - token = oauth.Token(oauth_key, oauth_secret) - - # Fill in your website - base_url = "https://ismywebservicedown.appspot.com/api/v1" - - # Create our client. - client = oauth.Client(consumer, token=token) - - data = urllib.urlencode({ - "name": "An Example Service", - "description": "An example service, created using the StashBoard API", - }) - - # The OAuth Client request works just like httplib2 for the most part. - - # POST to the Services Resource to create a new service. Save the response for - # later - resp, content = client.request(base_url + "/services", "POST", body=data) - service = json.loads(content) - - # GET the list of possible status images - resp, content = client.request(base_url + "/status-images", "GET") - data = json.loads(content) - images = data["images"] - - # Pick a random image for our status - image = choice(images) - - # POST to the Statuses Resources to create a new Status - data = urllib.urlencode({ - "name": "Example Status", - "description": "An example status, means nothing", - "severity": 10000, - "image": image["name"], - }) - - resp, content = client.request(base_url + "/statuses", "POST", body=data) - status = json.loads(content) - - # Create a new event with the given status and given service - data = urllib.urlencode({ - "message": "Our first event! So exciting", - "status": status["id"], - }) - - resp, content = client.request(service["url"] + "/events", "POST", body=data) - event = json.loads(content) - - print event - - - - - -### Ruby - -Before you can run this example, make sure to install the [oauth Ruby Gem](http://github.com/pelle/oauth). - - require 'rubygems' - require 'oauth' - require 'json' - - oauth_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' - oauth_secret = 'YYYYYYYYYYYYYYYYYYYYYYYY' - - # Fill in your website - base = "https://ismywebservicedown.appspot.com" - - @consumer=OAuth::Consumer.new "anonymous", - "anonymous", - {:site=>base} - - @token = OAuth::AccessToken.new(@consumer, oauth_key, oauth_secret) - - # POST to the Services Resource to create a new service. Save the response for - # later - @response = @token.post("/api/v1/services", { - :name => "An Example Service", - :description => "An example service, created using the StashBoard API", - }) - srvice = JSON.parse(@response.body) - - # GET the list of possible status images - @response = @token.get("/api/v1/status-images") - data = JSON.parse(@response.body) - images = data['images'] - - # Pick a random image for our status - image = images[rand(images.length)] - - - # POST to the Statuses Resources to create a new Status - @response = @token.post("/api/v1/statuses", { - :name => "Example Status", - :description => "An example status, means nothing", - :severity => 10000, - :image => image["name"], - }) - - status = JSON.parse(@response.body) - - @response = @token.post("/api/v1/services/" + srvice["id"] + "/events", { - :message => "Our first event! So exciting", - :status => status["id"], - }) - event = JSON.parse(@response.body) - - puts event - - -### PHP - -This example uses Andy Smith's great [basic OAuth library](http://oauth.googlecode.com/svn/code/php/) for URL signing. You must also have the cURL extension enabled for this code to run. - - sign_request($sign, $consumer, $token); - - $ch = curl_init($request->get_normalized_http_url()); - - if ($method == "POST") { - curl_setopt($ch, CURLOPT_POST ,1); - curl_setopt($ch, CURLOPT_POSTFIELDS , $request->to_postdata()); - } - - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); - curl_setopt($ch, CURLOPT_HEADER ,0); // DO NOT RETURN HTTP HEADERS - - return curl_exec($ch); - } - - // Fill in your website - $base_url = "https://ismywebservicedown.appspot.com/api/v1"; - - $data = array( - "name" => "An Example Service", - "description" => "An example service, created using the StashBoard API", - ); - - $r = request($consumer, $token, $base_url . "/services", "POST", $data); - $service = json_decode($r); - - // GET the list of possible status images - $r = request($consumer, $token, $base_url . "/status-images", "GET"); - $data = json_decode($r); - $images = $data->images; - - - - // Pick a the first image - $image = $images[0]; - - // POST to the Statuses Resources to create a new Status - $data = array( - "name" => "Example Status", - "description" => "An example status, means nothing", - "severity" => 10000, - "image" => $image->name, - ); - - $r = request($consumer, $token, $base_url . "/statuses", "POST", $data); - $status = json_decode($r); - - // Create a new event with the given status and given service - $data = array( - "message" => "Our first event! So exciting", - "status" => $status->id, - ); - - $r = request($consumer, $token, $service->url . "/events", "POST", $data); - $event = json_decode($r); - - print_r($event); - - ?> \ No newline at end of file diff --git a/markdown/overview.markdown b/markdown/overview.markdown deleted file mode 100644 index bdda367c..00000000 --- a/markdown/overview.markdown +++ /dev/null @@ -1,38 +0,0 @@ -## Overview - -Hello, and welcome to StashBoard, the open-source status dashboard. StashBoard's REST API allows users to programmatically update and manage web service status. - -This document will only cover the basics of the StashBoard. See the [REST API section](/documentation/rest) for full documentation. - -### Basics - -The StashBoard REST API is broken down into three resources: Services, Events, and Statuses. - -#### Services - -Services are the basic unit of StashBoard. A service is any web service that can be consumed, and more importantly, can fail. Using StashBoard, you can easily inform your users of the current service status. To handle system status, StashBoard uses the concept of events. - -Read more about creating and modifying services in the [Status Resource section](/documentation/rest#status-list-resource) of the REST API documentation. - -#### Events - -A service has a list of events, listed in reverse chronological order, which represent the state of that service. To track the state of a web service, an administrator creates events for a given service. - -For example, if a service is currently down, create an event with a "DOWN" status, explaining why the service isn't working. Once the service is up again, simply create a new event with an attached "UP" status. - -Read more about creating and modifying events in the [Events Resource section](/documentation/rest#events-list-resource) of the REST API documentation. - -#### Statuses - -A status represents the state of a web service. Instead of being directly attached to services, a status is attached to a service event (described above). Therefore, the current system status is simply the status attached to the most recent event. - -Read more about creating and modifying statuses in the [Status Resource section](/documentation/rest#status-list-resource) of the REST API documentation. - -### Authentication - -To access information through the REST API, no authentication is required. However, to change any information via the REST API (POST/PUT/DELETE), authentication and SSL are required. - -StashBoard uses OAuth for authentication purposes. To authenticate your account and obtain your API keys, head over to the [API Credentials section](/documentation/credentials). - - - diff --git a/markdown/restapi.markdown b/markdown/restapi.markdown deleted file mode 100644 index 4ceb2ba8..00000000 --- a/markdown/restapi.markdown +++ /dev/null @@ -1,686 +0,0 @@ -## REST API Basics - -The REST API always returns a JSON object. A list resource is represented as a object with a "resource-name" attribute - - { - "resource-name": ["List", "of", "objects"] - } - -### Authentication - -No authentication is needed to access resources via HTTP GET; however, all other methods require authentication. Authentication via OAuth is covered in the ["Authentication section"](/documentation/authentication) - -### Base URL - -All URLs referenced in this document, including sample API return objects, have the following base URL: - - http[s]://status.your.domain.com - -## Services List Resource - -The Services List resource represents all web services currently tracked via StashBoard. The resources also allows for the creation of new, trackable web services. - -### Resource URL - -> /api/v1/services - -### Resource Properties - -------------------------------------------------------------- - -Property Description ---------- --------------------------------------------- -id The unique identifier by which to identify - the service - -name The name of the service, defined by the user - -description The description of the web service - -current-event The current event for the service - -url The URL of the specific service resource -------------------------------------------------------------- -Table: Service resource properties - -### HTTP Methods - -#### GET - -Returns a list of all current services tracked by StashBoard - -##### Example - -> GET /api/v1/services HTTP/1.1 - - { - "services": [ - { - "name": "Example Foo", - "id": "example-foo", - "description": "An explanation of this service" - "url": "/api/v1/services/example-foo", - "current-event": { - 'message': 'What an event!', - 'sid': 'ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M', - 'status': { - 'description': 'Hey, dude', - 'id': 'up', - 'image': '/images/status/tick-circle.png', - 'level': 'NORMAL', - 'name': 'Up', - 'url': '/statuses/up' - }, - 'timestamp': 'Mon, 28 Jun 2010 22:17:06 GMT', - 'url': '/services/twilio/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M'}, - - }, - { - "name": "Example Bar", - "id": "example-bar", - "description": "An explanation of this service" - "url": "/api/v1/services/example-bar", - "current-event": null, - } - ] - } - -#### POST - -Creates a new service (or updates an existing service) and returns the new service object. - -------------------------------------------------------------- - -Param Optional Description ------ --------- -------------------------------- -name Required Name of the service - -description Required Description of service ------------------------------------------------------------- -Table: Services List POST parameters - -##### Example - -> POST /api/v1/services HTTP/1.1 -name=New%20Service&description=A%20great%20service - - { - "name": "New Service", - "id": "new-service", - "description": "A great service" - "url": "/api/v1/services/new-service", - "current-event": null, - } - -## Service Instance Resource - -The Service Instance resources represents an individual web service tracked by StashBoard - -### Resource Url - -> /api/v1/services/{service} - -### HTTP Methods - -#### GET - -Returns a service object - -##### Example - -> GET /api/v1/services/{service} HTTP/1.1 - - { - "name": "Example Service", - "id": "example-service", - "description": "An explanation of what this service represents" - "url": "/api/v1/services/example-service", - "current-event": null, - } - -#### POST - -Updates a service's description and returns the updated service object. - -------------------------------------------------------------- - -Param Optional Description ------ --------- -------------------------------- -name Optional Name of the service - -description Optional Description of service -------------------------------------------------------------- -Table: Service Instance POST parameters - -##### Example - -> POST /api/v1/services/{service} description=System%20is%20now%20operational - - { - "name": "Example Service", - "id": "example-service", - "description": "System is now operational", - "url": "/api/v1/services/example-service", - "current-event": null, - } - -### DELETE - -Deletes a service and returns the deleted service object - -#### Example - -> DELETE /api/v1/services/{service} HTTP/1.1 - - { - "name": "Example Service", - "id": "example-service", - "description": "System is now operational", - "url": "/api/v1/services/example-service", - "current-event": null, - } - - -## Events List Resource - -The Events List resource represents all event associated with a given service - -### Resource URL - -> /api/v1/services/{service}/events - -### Properties - -------------------------------------------------------------- - -Property Description ---------- --------------------------------------------- -sid The unique identifier by which to identify - the event - -message The message associated with this event - -timestamp The time at which this event occurred, given - in RFC 1132 format. - -url The URL of the specific event resource - -status The status of this event, as described by the - Statuses resource -------------------------------------------------------------- -Table: Event resource properties - -### HTTP Methods - -#### GET - -Returns all events associated with a given service in reverse chronological order. - -##### Example - -> GET /api/v1/services/{service}/events HTTP/1.1 - - { - "events": [ - { - "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", - "message": "Problem fixed", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GBAM", - "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd2", - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - }, - }, - { - "timestamp": "Mon, 28 Jun 2010 22:18:06 GMT", - "message": "Might be up", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "url": "/api/v1/services/example-service/events/ahJpc215d2Vic..." - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - }, - } - ] - } - - - -#### POST - -Creates a new event for the given service and returns the newly created event object - -------------------------------------------------------------- - -Param Optional Description ------ --------- -------------------------------- -status Required The system status for the event. - This must be a valid system - status identifier found in the - Statuses List resource - -message Required The message for the event -------------------------------------------------------------- -Table: Events List POST parameters - -##### Example - -> POST /api/v1/services/{service}/events HTTP/1.1 status=AVAILABLE&message=System%20is%20now%20operational - - { - "timestamp": "Mon, 28 Jun 2010 22:18:06 GMT" - "message": "Might be up", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - }, - } - -#### PUT - -Not supported - -#### DELETE - -Not supported - -### URL Filtering - -The Events List resource also supports filtering events via dates. To filter events, place on of the following options into the query string for a GET request - -While the format of these parameters is very flexible, we suggested either the RFC 2822 or RFC 1123 format due to their support for encoding timezone information. - -------------------------------------------------------------- - -Option Description ------ -------------------------------- -start Only show events which started after - this date, inclusive. - -end Only show events which started before - this date, inclusive. - -------------------------------------------------------------- -Table: Events List URL Filtering Options - -##### Example - -> GET /api/v1/services/{service}/events?start=2010-06-10 HTTP/1.1 - -would return all events starting after June 6, 2010. - -Similarly, both "start" and "end" can be used to create date ranges - -> GET /api/v1/services/{service}/events?end=2010-06-17&start=2010-06-01 HTTP/1.1 - -would return all events between June 6, 2010 and June 17, 2010 - -## Current Service Event - -The Current Service Event resource simply returns the current event for a given service. - -### Resource Url - -> /api/v1/services/{service}/events/current - -### GET - -Returns the current event for a given service. - -#### Example - -> GET /api/v1/services/{service}/events/current HTTP/1.1 - - { - "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", - "message": "Might be up", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - }, - } - -### POST / PUT - -Not supported - -### DELETE - -Not supported - -## Event Instance Resource - -The Event Instance resource represents an individual event for a given service. - -### Resource URL - -> /services/{service}/events/{sid} - -### HTTP Methods - -#### GET - -Returns a service event with the given event sid. The event's status object is also returned as well. - -##### Example - -> GET /api/v1/services/{service}/events/{sid} HTTP/1.1 - - { - "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", - "message": "Might be up", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "url": "/api/v1/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - }, - } - -#### POST / PUT - -Not supported - -#### DELETE - -Deletes the given event and returns the deleted event - -##### Example - -> DELETE /services/{service}/events/{sid} HTTP/1.1 - - { - "timestamp": "Mon, 28 Jun 2010 22:17:06 GMT", - "message": "Might be up", - "sid": "ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "url": "/services/example-service/events/ahJpc215d2Vic2VydmljZWRvd25yCwsSBUV2ZW50GA8M", - "status": { - "id": "down", - "name": "Down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/statuses/down", - }, - } - -## Status List Resource - -The Status List resource represents all possible systems statuses. - -### Resource URL - -> api/v1/statuses - -### Resource Properties - -------------------------------------------------------------- - -Property Description ---------- --------------------------------------------- -id The unique identifier by which to identify - the status - -name The name of the status, defined by the user - -description The description of the status - -url The URL of the specific status resource - -level The level of this status. Can be any value - listed in the Levels List resource - -image The URL of the image for this status -------------------------------------------------------------- -Table: Status resource properties - -### HTTP Methods - -#### GET - -Returns all possible service statuses - -##### Example - -> GET api/v1/statuses HTTP/1.1 - - { - "statuses": [ - { - "name": "Available", - "id": "available", - "description": "An explanation of what this status represents", - "level": "NORMAL", - "image": "/static/images/status/tick-circle.png", - "url": "api/v1/statuses/up", - }, - { - "name": "Down", - "id": "down", - "description": "An explanation of what this status represents", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "api/v1/statuses/down", - }, - ] - } - -#### POST - -Creates a new service status and returns this newly created status - -------------------------------------------------------------- - -Param Optional Description ------ --------- -------------------------------- -name Required The name of the status - -description Required The description of the status - -level Required The level of the status. - Must be a values listed in the - Levels resource - -image Required The filename of the image, with - no extension. See the - status-images resource -------------------------------------------------------------- -Table: Status Instance POST parameters - -##### Example - -> POST /api/v1/statuses HTTP/1.1 -name=Down&description=A%20new%20status&severity=1000&image=cross-circle.png - - { - "name": "Down", - "id": "down" - "description": "A new status", - "level": "ERROR", - "image": "cross-circle", - "url": "/api/v1/statuses/down", - } - -#### PUT - -Not Supported - -#### DELETE - -Not Supported - -## Status Instance Resource - -The Status Instance resource represents a single service status - -### Resource Url - -> /api/v1/statuses/{name} - -### GET - -Returns a status object - -#### Example - - { - "name": "Down", - "id": "down", - "description": "A new status", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - } - -### POST - -------------------------------------------------------------- - -Param Optional Description ------ --------- -------------------------------- -name Optional The name of the status - -description Optional The description of the status - -level Optional The level of the status. Must be - a string value listed in the - Levels resource (see below) - -image Optional The filename of the image, with - no extension. See the - status-images resource -------------------------------------------------------------- -Table: Status Instance POST parameters - -Returns the newly updated status - -#### Example - -> POST /api/v1/statuses HTTP/1.1 -description=A%20new%20status&severity=1010&image=cross-circle.png - - { - "name": "Down", - "id": "down", - "description": "A new status", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - } - -### DELETE - -Delete the given status and return the deleted status - -#### Example - -> DELETE /api/v1/statuses/{name} - - { - "name": "Down", - "id": "down", - "description": "A new status", - "level": "ERROR", - "image": "/static/images/status/cross-circle.png", - "url": "/api/v1/statuses/down", - } - -### PUT - -Not supported - -## Status Levels Resource - -The Status Levels resource is a read-only resource which lists the possible levels for a status. - -### Resource Url - -> /api/v1/levels - -### GET - -Returns a list of possible status levels in increasing severity - -#### Example - -> GET /api/v1/levels - - { - "levels": [ - "INFO", - "NORMAL", - "WARNING", - "ERROR", - "CRITICAL", - ] - } - -### POST / PUT - -Not supported - -### DELETE - -Not supported - -## Status Images Resource - -The Status Images resource is a read-only resource which lists the icons available to use for statuses - -### Resource Url - -> /api/v1/status-images - -### GET - -Returns a list of status images. - -#### Example - -> GET /api/v1/status-images - - { - "images": [ - { - "name": "sample-image", - "url": "/status-images/sample-image.png", - }, - { - "name": "sample-image", - "url": "/status-images/sample-image.png", - }, - ] - } - -### POST / PUT - -Not supported - -### DELETE - -Not supported diff --git a/models.py b/models.py deleted file mode 100644 index 9f5af0df..00000000 --- a/models.py +++ /dev/null @@ -1,302 +0,0 @@ -# Copyright (c) 2010 Twilio Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from google.appengine.ext import db -import datetime -from wsgiref.handlers import format_date_time -from time import mktime -from datetime import timedelta -from datetime import date -import config -import urlparse - -class Level(object): - """ - A fake db.Model object, just in case we want to actually store things - in the future - """ - levels = { - "NORMAL": 10, - "WARNING": 30, - "ERROR": 40, - "CRITICAL": 50, - } - - normal = "NORMAL" - warning = "WARNING" - critial = "CRITICAL" - error = "ERROR" - - @staticmethod - def all(): - llist = [] - for k in Level.levels.keys(): - llist.append((k, Level.levels[k])) - - return map(lambda x: x[0], sorted(llist, key=lambda x: x[1])) - - @staticmethod - def get_severity(level): - try: - return Level.levels[level] - except: - return False - - @staticmethod - def get_level(severity): - for k in Level.levels.keys(): - if Level.levels[k] == severity: - return k - return False - - -class Service(db.Model): - """A service to track - - Properties: - name -- string: The name of this service - description -- string: The function of the service - slug -- stirng: URL friendly version of the name - - """ - @staticmethod - def get_by_slug(service_slug): - return Service.all().filter('slug = ', service_slug).get() - - def current_event(self): - event = self.events.order('-start').get() - return event - - - #Specialty function for front page - def last_five_days(self): - - - lowest = Status.default() - severity = lowest.severity - - yesterday = date.today() - timedelta(days=1) - ago = yesterday - timedelta(days=5) - - events = self.events.filter('start >', ago) \ - .filter('start <', yesterday).fetch(100) - - stats = {} - - for i in range(5): - stats[yesterday.day] = { - "image": lowest.image, - "day": yesterday, - } - yesterday = yesterday - timedelta(days=1) - - for event in events: - if event.status.severity > severity: - stats[event.start.day]["image"] = "information" - stats[event.start.day]["information"] = True - - results = [] - - keys = stats.keys() - keys.sort() - keys.reverse() - - for k in keys: - results.append(stats[k]) - - return results - - - def events_for_day(self, day): - """ Return the largest seveirty (of events) for a given day. If no - events occured, return the lowest severity rating. - - Arguments: - day -- Date object: The day to summarize - - """ - - next_day = day + timedelta(days=1) - - return self.events.filter('start >=', day) \ - .filter('start <', next_day).fetch(40) - - def compare(self, other_status): - return 0 - - slug = db.StringProperty(required=True) - name = db.StringProperty(required=True) - description = db.StringProperty(required=True) - - def sid(self): - return unicode(self.key()) - - def resource_url(self): - return "/services/" + self.slug - - def rest(self, base_url): - """ Return a Python object representing this model""" - - m = {} - m["name"] = unicode(self.name) - m["id"] = unicode(self.slug) - m["description"] = unicode(self.description) - m["url"] = base_url + self.resource_url() - - event = self.current_event() - if event: - m["current-event"] = event.rest(base_url) - else: - m["current-event"] = None - - return m - -class Status(db.Model): - """A possible system status - - Properties: - name -- string: The friendly name of this status - slug -- stirng: The identifier for the status - description -- string: The state this status represents - image -- string: Image in /images/status - severity -- int: The serverity of this status - - """ - @staticmethod - def get_by_slug(status_slug): - return Status.all().filter('slug = ', status_slug).get() - - @staticmethod - def default(): - """ - Return the first status with a NORMAL level. - """ - normal = Level.get_severity(Level.normal) - return Status.all().filter('severity == ', normal).get() - - @staticmethod - def install_defaults(): - """ - Install the default statuses. I am not sure where these should live just yet - """ - # This should be Level.normal.severity and Level.normal.text - normal = Level.get_severity(Level.normal) - warning = Level.get_severity(Level.warning) - error = Level.get_severity(Level.error) - - d = Status(name="Down", slug="down", image="cross-circle", severity=error, \ - description="The service is currently down") - u = Status(name="Up", slug="up", image="tick-circle", severity=normal, \ - description="The service is up") - w = Status(name="Warning", slug="warning", image="exclamation", severity=warning, \ - description="The service is experiencing intermittent problems") - - d.put() - u.put() - w.put() - - s = Setting(name="installed_defaults") - s.put() - - - name = db.StringProperty(required=True) - slug = db.StringProperty(required=True) - description = db.StringProperty(required=True) - image = db.StringProperty(required=True) - severity = db.IntegerProperty(required=True) - - def image_url(self): - return "/images/status/" + unicode(self.image) + ".png" - - def resource_url(self): - return "/statuses/" + unicode(self.slug) - - def rest(self, base_url): - """ Return a Python object representing this model""" - - m = {} - m["name"] = unicode(self.name) - m["id"] = unicode(self.slug) - m["description"] = unicode(self.description) - m["level"] = Level.get_level(int(self.severity)) - m["url"] = base_url + self.resource_url() - # This link shouldn't be hardcoded - - o = urlparse.urlparse(base_url) - m["image"] = o.scheme + "://" + o.netloc + self.image_url() - - return m - - -class Event(db.Model): - - start = db.DateTimeProperty(required=True, auto_now_add=True) - - # We want this to be required, but it would break all current installs - # Instead, we handle it in the rest method - informational = db.BooleanProperty(default=False) - - status = db.ReferenceProperty(Status, required=True) - message = db.TextProperty(required=True) - service = db.ReferenceProperty(Service, required=True, - collection_name="events") - - def duration(self): - # calculate the difference between start and end - # should evantually be stored - pass - - def sid(self): - return unicode(self.key()) - - def resource_url(self): - return self.service.resource_url() + "/events/" + self.sid() - - def rest(self, base_url): - """ Return a Python object representing this model""" - - m = {} - m["sid"] = self.sid() - - stamp = mktime(self.start.timetuple()) - m["timestamp"] = format_date_time(stamp) - m["status"] = self.status.rest(base_url) - m["message"] = unicode(self.message) - m["url"] = base_url + self.resource_url() - - if self.informational: - m["informational"] = self.informational - else: - m["informational"] = False - - return m - -class Profile(db.Model): - owner = db.UserProperty(required=True) - token = db.StringProperty(required=True) - secret = db.StringProperty(required=True) - -class AuthRequest(db.Model): - owner = db.UserProperty(required=True) - request_secret = db.StringProperty() - -class Setting(db.Model): - name = db.StringProperty(required=True) - diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..52a175b3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +requests==0.7.4 +mock==0.7.2 +nose==1.1.2 +sphinx +-e git+git@github.com:derferman/webtest.git#egg=WebTest +-e git+git@github.com:derferman/python-oauth2.git#egg=oauth diff --git a/runner.py b/runner.py deleted file mode 100644 index 51606ff1..00000000 --- a/runner.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2010 Twilio Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -__author__ = 'Kyle Conroy' - -import config -import os -import sys -import logging -import wsgiref.handlers - -# Force sys.path to have our own directory first, so we can import from it. -sys.path.insert(0, config.APP_ROOT_DIR) -sys.path.insert(1, os.path.join(config.APP_ROOT_DIR, 'utils/external')) -os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' - -from google.appengine.api import memcache -from google.appengine.ext import webapp -from google.appengine.api import users -from handlers import restful - - -html = """ - - - - QUnit Test Suite - - - - - - -

QUnit Test Suite

-

-
-

-
    - - -""" - -class TestHandler(restful.Controller): - def get(self): - logging.debug("TestHandler#get") - self.response.headers["Content-Type"] = "text/html" - self.response.out.write(html) - -ROUTES = [ - ('/.*$', TestHandler), -] - -def main(): - application = webapp.WSGIApplication(ROUTES, debug=config.DEBUG) - wsgiref.handlers.CGIHandler().run(application) - -if __name__ == "__main__": - main() diff --git a/scripts/gen_fixture.py b/scripts/gen_fixture.py new file mode 100644 index 00000000..ab7b2a8b --- /dev/null +++ b/scripts/gen_fixture.py @@ -0,0 +1,69 @@ +# Copyright (c) 2010 Twilio Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Requires Python 2.7 + +import argparse +import os +import json + +# List of supported icon sets +# These sets live in stashboard/static/images/icons +ICON_SETS = ["fugue", "iconic"] + +parser = argparse.ArgumentParser(description="") +parser.add_argument("directory", type=str, + help="Stashboard image directory") +args = parser.parse_args() + +# Icons path +icons = os.path.join(args.directory, "icons") + +image_set = set() +images = [] + +for p in os.listdir(icons): + if p in ICON_SETS: + for i in os.listdir(os.path.join(icons, p)): + if i[0] != '.': #ignore hidden files + filename, ext = os.path.splitext(i) + if filename in image_set: + name = filename + "_alt" + else: + name = filename + + image_set.add(name) + image = { + "name": name, + "set": p, + "url": os.path.join("icons", p, i), + } + images.append(image) + +print json.dumps(images, indent=4) + + + + + + + + + diff --git a/stashboard/__init__.py b/stashboard/__init__.py new file mode 100644 index 00000000..1436d8fe --- /dev/null +++ b/stashboard/__init__.py @@ -0,0 +1 @@ +__version__ = "1.1.6" diff --git a/stashboard/app.yaml b/stashboard/app.yaml new file mode 100755 index 00000000..bd34fe17 --- /dev/null +++ b/stashboard/app.yaml @@ -0,0 +1,65 @@ +application: stashboard +version: 2 +runtime: python +api_version: 1 + +derived_file_type: +- python_precompiled + +builtins: +- appstats: on +- remote_api: on + +handlers: +- url: /console/.* + script: $PYTHON_LIB/google/appengine/ext/admin + login: admin + +- url: /css + static_dir: static/css + +- url: /images + static_dir: static/images + +- url: /js + static_dir: static/js + +- url: /favicon\.ico + static_files: static/favicon.ico + upload: static/favicon.ico + +- url: /robots\.txt + static_files: static/robots.txt + upload: static/robots.txt + +- url: /admin/api.* + script: main.py + secure: always + +- url: /admin.* + script: main.py + secure: always + login: admin + +- url: .* + script: main.py + +admin_console: + pages: + - name: Memcache + url: /console/memcache + +skip_files: | + ^(.*/)?( + (#.*#)| + (.*~)| + (.*\.py[co])| + (.*/RCS/.*)| + (\..*)| + (dev/.*)| + (tests/.*)| + (docs/.*)| + (.*\.markdown)| + (license\.txt)| + (setup.py) + )$ \ No newline at end of file diff --git a/stashboard/appengine_config.py b/stashboard/appengine_config.py new file mode 100644 index 00000000..ece7c033 --- /dev/null +++ b/stashboard/appengine_config.py @@ -0,0 +1,20 @@ +import logging +import os + +logging.info("IMPORTING SETTINGS") + +os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' + +from google.appengine.dist import use_library +try: + use_library('django', '1.2') +except: + pass + +from django.conf import settings +_ = settings.TEMPLATE_DIRS + +def webapp_add_wsgi_middleware(app): + from google.appengine.ext.appstats import recording + app = recording.appstats_wsgi_middleware(app) + return app diff --git a/handlers/__init__.py b/stashboard/contrib/__init__.py similarity index 100% rename from handlers/__init__.py rename to stashboard/contrib/__init__.py diff --git a/utils/external/dateutil/__init__.py b/stashboard/contrib/dateutil/__init__.py similarity index 100% rename from utils/external/dateutil/__init__.py rename to stashboard/contrib/dateutil/__init__.py diff --git a/utils/external/dateutil/easter.py b/stashboard/contrib/dateutil/easter.py similarity index 100% rename from utils/external/dateutil/easter.py rename to stashboard/contrib/dateutil/easter.py diff --git a/utils/external/dateutil/parser.py b/stashboard/contrib/dateutil/parser.py similarity index 100% rename from utils/external/dateutil/parser.py rename to stashboard/contrib/dateutil/parser.py diff --git a/utils/external/dateutil/relativedelta.py b/stashboard/contrib/dateutil/relativedelta.py similarity index 100% rename from utils/external/dateutil/relativedelta.py rename to stashboard/contrib/dateutil/relativedelta.py diff --git a/utils/external/dateutil/rrule.py b/stashboard/contrib/dateutil/rrule.py similarity index 100% rename from utils/external/dateutil/rrule.py rename to stashboard/contrib/dateutil/rrule.py diff --git a/utils/external/dateutil/tz.py b/stashboard/contrib/dateutil/tz.py similarity index 100% rename from utils/external/dateutil/tz.py rename to stashboard/contrib/dateutil/tz.py diff --git a/utils/external/dateutil/tzwin.py b/stashboard/contrib/dateutil/tzwin.py similarity index 100% rename from utils/external/dateutil/tzwin.py rename to stashboard/contrib/dateutil/tzwin.py diff --git a/utils/external/dateutil/zoneinfo/__init__.py b/stashboard/contrib/dateutil/zoneinfo/__init__.py similarity index 100% rename from utils/external/dateutil/zoneinfo/__init__.py rename to stashboard/contrib/dateutil/zoneinfo/__init__.py diff --git a/utils/external/dateutil/zoneinfo/zoneinfo-2010g.tar.gz b/stashboard/contrib/dateutil/zoneinfo/zoneinfo-2010g.tar.gz similarity index 100% rename from utils/external/dateutil/zoneinfo/zoneinfo-2010g.tar.gz rename to stashboard/contrib/dateutil/zoneinfo/zoneinfo-2010g.tar.gz diff --git a/stashboard/contrib/httplib2/__init__.py b/stashboard/contrib/httplib2/__init__.py new file mode 100644 index 00000000..64f2e17e --- /dev/null +++ b/stashboard/contrib/httplib2/__init__.py @@ -0,0 +1,1275 @@ +from __future__ import generators +""" +httplib2 + +A caching http interface that supports ETags and gzip +to conserve bandwidth. + +Requires Python 2.3 or later + +Changelog: +2007-08-18, Rick: Modified so it's able to use a socks proxy if needed. + +""" + +__author__ = "Joe Gregorio (joe@bitworking.org)" +__copyright__ = "Copyright 2006, Joe Gregorio" +__contributors__ = ["Thomas Broyer (t.broyer@ltgt.net)", + "James Antill", + "Xavier Verges Farrero", + "Jonathan Feinberg", + "Blair Zajac", + "Sam Ruby", + "Louis Nyffenegger"] +__license__ = "MIT" +__version__ = "$Rev$" + +import re +import sys +import email +import email.Utils +import email.Message +import email.FeedParser +import StringIO +import gzip +import zlib +import httplib +import urlparse +import base64 +import os +import copy +import calendar +import time +import random +import errno +# remove depracated warning in python2.6 +try: + from hashlib import sha1 as _sha, md5 as _md5 +except ImportError: + import sha + import md5 + _sha = sha.new + _md5 = md5.new +import hmac +from gettext import gettext as _ +import socket + +try: + from httplib2 import socks +except ImportError: + socks = None + +# Build the appropriate socket wrapper for ssl +try: + import ssl # python 2.6 + _ssl_wrap_socket = ssl.wrap_socket +except (AttributeError, ImportError): + def _ssl_wrap_socket(sock, key_file, cert_file): + ssl_sock = socket.ssl(sock, key_file, cert_file) + return httplib.FakeSocket(sock, ssl_sock) + + +if sys.version_info >= (2,3): + from iri2uri import iri2uri +else: + def iri2uri(uri): + return uri + +def has_timeout(timeout): # python 2.6 + if hasattr(socket, '_GLOBAL_DEFAULT_TIMEOUT'): + return (timeout is not None and timeout is not socket._GLOBAL_DEFAULT_TIMEOUT) + return (timeout is not None) + +__all__ = ['Http', 'Response', 'ProxyInfo', 'HttpLib2Error', + 'RedirectMissingLocation', 'RedirectLimit', 'FailedToDecompressContent', + 'UnimplementedDigestAuthOptionError', 'UnimplementedHmacDigestAuthOptionError', + 'debuglevel', 'ProxiesUnavailableError'] + + +# The httplib debug level, set to a non-zero value to get debug output +debuglevel = 0 + + +# Python 2.3 support +if sys.version_info < (2,4): + def sorted(seq): + seq.sort() + return seq + +# Python 2.3 support +def HTTPResponse__getheaders(self): + """Return list of (header, value) tuples.""" + if self.msg is None: + raise httplib.ResponseNotReady() + return self.msg.items() + +if not hasattr(httplib.HTTPResponse, 'getheaders'): + httplib.HTTPResponse.getheaders = HTTPResponse__getheaders + +# All exceptions raised here derive from HttpLib2Error +class HttpLib2Error(Exception): pass + +# Some exceptions can be caught and optionally +# be turned back into responses. +class HttpLib2ErrorWithResponse(HttpLib2Error): + def __init__(self, desc, response, content): + self.response = response + self.content = content + HttpLib2Error.__init__(self, desc) + +class RedirectMissingLocation(HttpLib2ErrorWithResponse): pass +class RedirectLimit(HttpLib2ErrorWithResponse): pass +class FailedToDecompressContent(HttpLib2ErrorWithResponse): pass +class UnimplementedDigestAuthOptionError(HttpLib2ErrorWithResponse): pass +class UnimplementedHmacDigestAuthOptionError(HttpLib2ErrorWithResponse): pass + +class MalformedHeader(HttpLib2Error): pass +class RelativeURIError(HttpLib2Error): pass +class ServerNotFoundError(HttpLib2Error): pass +class ProxiesUnavailableError(HttpLib2Error): pass + +# Open Items: +# ----------- +# Proxy support + +# Are we removing the cached content too soon on PUT (only delete on 200 Maybe?) + +# Pluggable cache storage (supports storing the cache in +# flat files by default. We need a plug-in architecture +# that can support Berkeley DB and Squid) + +# == Known Issues == +# Does not handle a resource that uses conneg and Last-Modified but no ETag as a cache validator. +# Does not handle Cache-Control: max-stale +# Does not use Age: headers when calculating cache freshness. + + +# The number of redirections to follow before giving up. +# Note that only GET redirects are automatically followed. +# Will also honor 301 requests by saving that info and never +# requesting that URI again. +DEFAULT_MAX_REDIRECTS = 5 + +# Which headers are hop-by-hop headers by default +HOP_BY_HOP = ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailers', 'transfer-encoding', 'upgrade'] + +def _get_end2end_headers(response): + hopbyhop = list(HOP_BY_HOP) + hopbyhop.extend([x.strip() for x in response.get('connection', '').split(',')]) + return [header for header in response.keys() if header not in hopbyhop] + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + +def urlnorm(uri): + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise RelativeURIError("Only absolute URIs are allowed. uri = %s" % uri) + authority = authority.lower() + scheme = scheme.lower() + if not path: + path = "/" + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + scheme = scheme.lower() + defrag_uri = scheme + "://" + authority + request_uri + return scheme, authority, request_uri, defrag_uri + + +# Cache filename construction (original borrowed from Venus http://intertwingly.net/code/venus/) +re_url_scheme = re.compile(r'^\w+://') +re_slash = re.compile(r'[?/:|]+') + +def safename(filename): + """Return a filename suitable for the cache. + + Strips dangerous and common characters to create a filename we + can use to store the cache in. + """ + + try: + if re_url_scheme.match(filename): + if isinstance(filename,str): + filename = filename.decode('utf-8') + filename = filename.encode('idna') + else: + filename = filename.encode('idna') + except UnicodeError: + pass + if isinstance(filename,unicode): + filename=filename.encode('utf-8') + filemd5 = _md5(filename).hexdigest() + filename = re_url_scheme.sub("", filename) + filename = re_slash.sub(",", filename) + + # limit length of filename + if len(filename)>200: + filename=filename[:200] + return ",".join((filename, filemd5)) + +NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+') +def _normalize_headers(headers): + return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()]) + +def _parse_cache_control(headers): + retval = {} + if headers.has_key('cache-control'): + parts = headers['cache-control'].split(',') + parts_with_args = [tuple([x.strip().lower() for x in part.split("=", 1)]) for part in parts if -1 != part.find("=")] + parts_wo_args = [(name.strip().lower(), 1) for name in parts if -1 == name.find("=")] + retval = dict(parts_with_args + parts_wo_args) + return retval + +# Whether to use a strict mode to parse WWW-Authenticate headers +# Might lead to bad results in case of ill-formed header value, +# so disabled by default, falling back to relaxed parsing. +# Set to true to turn on, usefull for testing servers. +USE_WWW_AUTH_STRICT_PARSING = 0 + +# In regex below: +# [^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+ matches a "token" as defined by HTTP +# "(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?" matches a "quoted-string" as defined by HTTP, when LWS have already been replaced by a single space +# Actually, as an auth-param value can be either a token or a quoted-string, they are combined in a single pattern which matches both: +# \"?((?<=\")(?:[^\0-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"? +WWW_AUTH_STRICT = re.compile(r"^(?:\s*(?:,\s*)?([^\0-\x1f\x7f-\xff()<>@,;:\\\"/[\]?={} \t]+)\s*=\s*\"?((?<=\")(?:[^\0-\x08\x0A-\x1f\x7f-\xff\\\"]|\\[\0-\x7f])*?(?=\")|(?@,;:\\\"/[\]?={} \t]+(?!\"))\"?)(.*)$") +WWW_AUTH_RELAXED = re.compile(r"^(?:\s*(?:,\s*)?([^ \t\r\n=]+)\s*=\s*\"?((?<=\")(?:[^\\\"]|\\.)*?(?=\")|(? current_age: + retval = "FRESH" + return retval + +def _decompressContent(response, new_content): + content = new_content + try: + encoding = response.get('content-encoding', None) + if encoding in ['gzip', 'deflate']: + if encoding == 'gzip': + content = gzip.GzipFile(fileobj=StringIO.StringIO(new_content)).read() + if encoding == 'deflate': + content = zlib.decompress(content) + response['content-length'] = str(len(content)) + # Record the historical presence of the encoding in a way the won't interfere. + response['-content-encoding'] = response['content-encoding'] + del response['content-encoding'] + except IOError: + content = "" + raise FailedToDecompressContent(_("Content purported to be compressed with %s but failed to decompress.") % response.get('content-encoding'), response, content) + return content + +def _updateCache(request_headers, response_headers, content, cache, cachekey): + if cachekey: + cc = _parse_cache_control(request_headers) + cc_response = _parse_cache_control(response_headers) + if cc.has_key('no-store') or cc_response.has_key('no-store'): + cache.delete(cachekey) + else: + info = email.Message.Message() + for key, value in response_headers.iteritems(): + if key not in ['status','content-encoding','transfer-encoding']: + info[key] = value + + # Add annotations to the cache to indicate what headers + # are variant for this request. + vary = response_headers.get('vary', None) + if vary: + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + try: + info[key] = request_headers[header] + except KeyError: + pass + + status = response_headers.status + if status == 304: + status = 200 + + status_header = 'status: %d\r\n' % status + + header_str = info.as_string() + + header_str = re.sub("\r(?!\n)|(? 0: + service = "cl" + # No point in guessing Base or Spreadsheet + #elif request_uri.find("spreadsheets") > 0: + # service = "wise" + + auth = dict(Email=credentials[0], Passwd=credentials[1], service=service, source=headers['user-agent']) + resp, content = self.http.request("https://www.google.com/accounts/ClientLogin", method="POST", body=urlencode(auth), headers={'Content-Type': 'application/x-www-form-urlencoded'}) + lines = content.split('\n') + d = dict([tuple(line.split("=", 1)) for line in lines if line]) + if resp.status == 403: + self.Auth = "" + else: + self.Auth = d['Auth'] + + def request(self, method, request_uri, headers, content): + """Modify the request headers to add the appropriate + Authorization header.""" + headers['authorization'] = 'GoogleLogin Auth=' + self.Auth + + +AUTH_SCHEME_CLASSES = { + "basic": BasicAuthentication, + "wsse": WsseAuthentication, + "digest": DigestAuthentication, + "hmacdigest": HmacDigestAuthentication, + "googlelogin": GoogleLoginAuthentication +} + +AUTH_SCHEME_ORDER = ["hmacdigest", "googlelogin", "digest", "wsse", "basic"] + +class FileCache(object): + """Uses a local directory as a store for cached files. + Not really safe to use if multiple threads or processes are going to + be running on the same cache. + """ + def __init__(self, cache, safe=safename): # use safe=lambda x: md5.new(x).hexdigest() for the old behavior + self.cache = cache + self.safe = safe + if not os.path.exists(cache): + os.makedirs(self.cache) + + def get(self, key): + retval = None + cacheFullPath = os.path.join(self.cache, self.safe(key)) + try: + f = file(cacheFullPath, "rb") + retval = f.read() + f.close() + except IOError: + pass + return retval + + def set(self, key, value): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + f = file(cacheFullPath, "wb") + f.write(value) + f.close() + + def delete(self, key): + cacheFullPath = os.path.join(self.cache, self.safe(key)) + if os.path.exists(cacheFullPath): + os.remove(cacheFullPath) + +class Credentials(object): + def __init__(self): + self.credentials = [] + + def add(self, name, password, domain=""): + self.credentials.append((domain.lower(), name, password)) + + def clear(self): + self.credentials = [] + + def iter(self, domain): + for (cdomain, name, password) in self.credentials: + if cdomain == "" or domain == cdomain: + yield (name, password) + +class KeyCerts(Credentials): + """Identical to Credentials except that + name/password are mapped to key/cert.""" + pass + + +class ProxyInfo(object): + """Collect information required to use a proxy.""" + def __init__(self, proxy_type, proxy_host, proxy_port, proxy_rdns=None, proxy_user=None, proxy_pass=None): + """The parameter proxy_type must be set to one of socks.PROXY_TYPE_XXX + constants. For example: + +p = ProxyInfo(proxy_type=socks.PROXY_TYPE_HTTP, proxy_host='localhost', proxy_port=8000) + """ + self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, self.proxy_user, self.proxy_pass = proxy_type, proxy_host, proxy_port, proxy_rdns, proxy_user, proxy_pass + + def astuple(self): + return (self.proxy_type, self.proxy_host, self.proxy_port, self.proxy_rdns, + self.proxy_user, self.proxy_pass) + + def isgood(self): + return (self.proxy_host != None) and (self.proxy_port != None) + + +class HTTPConnectionWithTimeout(httplib.HTTPConnection): + """ + HTTPConnection subclass that supports timeouts + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + + def __init__(self, host, port=None, strict=None, timeout=None, proxy_info=None): + httplib.HTTPConnection.__init__(self, host, port, strict) + self.timeout = timeout + self.proxy_info = proxy_info + + def connect(self): + """Connect to the host and port specified in __init__.""" + # Mostly verbatim from httplib.py. + if self.proxy_info and socks is None: + raise ProxiesUnavailableError( + 'Proxy support missing but proxy use was requested!') + msg = "getaddrinfo returns an empty list" + for res in socket.getaddrinfo(self.host, self.port, 0, + socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + try: + if self.proxy_info and self.proxy_info.isgood(): + self.sock = socks.socksocket(af, socktype, proto) + self.sock.setproxy(*self.proxy_info.astuple()) + else: + self.sock = socket.socket(af, socktype, proto) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + # Different from httplib: support timeouts. + if has_timeout(self.timeout): + self.sock.settimeout(self.timeout) + # End of difference from httplib. + if self.debuglevel > 0: + print "connect: (%s, %s)" % (self.host, self.port) + + self.sock.connect(sa) + except socket.error, msg: + if self.debuglevel > 0: + print 'connect fail:', (self.host, self.port) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + +class HTTPSConnectionWithTimeout(httplib.HTTPSConnection): + """ + This class allows communication via SSL. + + All timeouts are in seconds. If None is passed for timeout then + Python's default timeout for sockets will be used. See for example + the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + def __init__(self, host, port=None, key_file=None, cert_file=None, + strict=None, timeout=None, proxy_info=None): + httplib.HTTPSConnection.__init__(self, host, port=port, key_file=key_file, + cert_file=cert_file, strict=strict) + self.timeout = timeout + self.proxy_info = proxy_info + + def connect(self): + "Connect to a host on a given (SSL) port." + + msg = "getaddrinfo returns an empty list" + for family, socktype, proto, canonname, sockaddr in socket.getaddrinfo( + self.host, self.port, 0, socket.SOCK_STREAM): + try: + if self.proxy_info and self.proxy_info.isgood(): + sock = socks.socksocket(family, socktype, proto) + sock.setproxy(*self.proxy_info.astuple()) + else: + sock = socket.socket(family, socktype, proto) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + + if has_timeout(self.timeout): + sock.settimeout(self.timeout) + sock.connect((self.host, self.port)) + self.sock =_ssl_wrap_socket(sock, self.key_file, self.cert_file) + if self.debuglevel > 0: + print "connect: (%s, %s)" % (self.host, self.port) + except socket.error, msg: + if self.debuglevel > 0: + print 'connect fail:', (self.host, self.port) + if self.sock: + self.sock.close() + self.sock = None + continue + break + if not self.sock: + raise socket.error, msg + + + +class Http(object): + """An HTTP client that handles: +- all methods +- caching +- ETags +- compression, +- HTTPS +- Basic +- Digest +- WSSE + +and more. + """ + def __init__(self, cache=None, timeout=None, proxy_info=None): + """ + The value of proxy_info is a ProxyInfo instance. + + If 'cache' is a string then it is used as a directory name for + a disk cache. Otherwise it must be an object that supports the + same interface as FileCache. + + All timeouts are in seconds. If None is passed for timeout + then Python's default timeout for sockets will be used. See + for example the docs of socket.setdefaulttimeout(): + http://docs.python.org/library/socket.html#socket.setdefaulttimeout + """ + self.proxy_info = proxy_info + # Map domain name to an httplib connection + self.connections = {} + # The location of the cache, for now a directory + # where cached responses are held. + if cache and isinstance(cache, str): + self.cache = FileCache(cache) + else: + self.cache = cache + + # Name/password + self.credentials = Credentials() + + # Key/cert + self.certificates = KeyCerts() + + # authorization objects + self.authorizations = [] + + # If set to False then no redirects are followed, even safe ones. + self.follow_redirects = True + + # Which HTTP methods do we apply optimistic concurrency to, i.e. + # which methods get an "if-match:" etag header added to them. + self.optimistic_concurrency_methods = ["PUT"] + + # If 'follow_redirects' is True, and this is set to True then + # all redirecs are followed, including unsafe ones. + self.follow_all_redirects = False + + self.ignore_etag = False + + self.force_exception_to_status_code = False + + self.timeout = timeout + + def _auth_from_challenge(self, host, request_uri, headers, response, content): + """A generator that creates Authorization objects + that can be applied to requests. + """ + challenges = _parse_www_authenticate(response, 'www-authenticate') + for cred in self.credentials.iter(host): + for scheme in AUTH_SCHEME_ORDER: + if challenges.has_key(scheme): + yield AUTH_SCHEME_CLASSES[scheme](cred, host, request_uri, headers, response, content, self) + + def add_credentials(self, name, password, domain=""): + """Add a name and password that will be used + any time a request requires authentication.""" + self.credentials.add(name, password, domain) + + def add_certificate(self, key, cert, domain): + """Add a key and cert that will be used + any time a request requires authentication.""" + self.certificates.add(key, cert, domain) + + def clear_credentials(self): + """Remove all the names and passwords + that are used for authentication""" + self.credentials.clear() + self.authorizations = [] + + def _conn_request(self, conn, request_uri, method, body, headers): + for i in range(2): + try: + conn.request(method, request_uri, body, headers) + except socket.timeout: + raise + except socket.gaierror: + conn.close() + raise ServerNotFoundError("Unable to find the server at %s" % conn.host) + except socket.error, e: + err = 0 + if hasattr(e, 'args'): + err = getattr(e, 'args')[0] + else: + err = e.errno + if err == errno.ECONNREFUSED: # Connection refused + raise + except httplib.HTTPException: + # Just because the server closed the connection doesn't apparently mean + # that the server didn't send a response. + if conn.sock is None: + if i == 0: + conn.close() + conn.connect() + continue + else: + conn.close() + raise + if i == 0: + conn.close() + conn.connect() + continue + pass + try: + response = conn.getresponse() + except (socket.error, httplib.HTTPException): + if i == 0: + conn.close() + conn.connect() + continue + else: + raise + else: + content = "" + if method == "HEAD": + response.close() + else: + content = response.read() + response = Response(response) + if method != "HEAD": + content = _decompressContent(response, content) + break + return (response, content) + + + def _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey): + """Do the actual request using the connection object + and also follow one level of redirects if necessary""" + + auths = [(auth.depth(request_uri), auth) for auth in self.authorizations if auth.inscope(host, request_uri)] + auth = auths and sorted(auths)[0][1] or None + if auth: + auth.request(method, request_uri, headers, body) + + (response, content) = self._conn_request(conn, request_uri, method, body, headers) + + if auth: + if auth.response(response, body): + auth.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers ) + response._stale_digest = 1 + + if response.status == 401: + for authorization in self._auth_from_challenge(host, request_uri, headers, response, content): + authorization.request(method, request_uri, headers, body) + (response, content) = self._conn_request(conn, request_uri, method, body, headers, ) + if response.status != 401: + self.authorizations.append(authorization) + authorization.response(response, body) + break + + if (self.follow_all_redirects or (method in ["GET", "HEAD"]) or response.status == 303): + if self.follow_redirects and response.status in [300, 301, 302, 303, 307]: + # Pick out the location header and basically start from the beginning + # remembering first to strip the ETag header and decrement our 'depth' + if redirections: + if not response.has_key('location') and response.status != 300: + raise RedirectMissingLocation( _("Redirected but the response is missing a Location: header."), response, content) + # Fix-up relative redirects (which violate an RFC 2616 MUST) + if response.has_key('location'): + location = response['location'] + (scheme, authority, path, query, fragment) = parse_uri(location) + if authority == None: + response['location'] = urlparse.urljoin(absolute_uri, location) + if response.status == 301 and method in ["GET", "HEAD"]: + response['-x-permanent-redirect-url'] = response['location'] + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + if headers.has_key('if-none-match'): + del headers['if-none-match'] + if headers.has_key('if-modified-since'): + del headers['if-modified-since'] + if response.has_key('location'): + location = response['location'] + old_response = copy.deepcopy(response) + if not old_response.has_key('content-location'): + old_response['content-location'] = absolute_uri + redirect_method = method + if response.status == 303: + redirect_method = "GET" + (response, content) = self.request(location, redirect_method, body=body, headers = headers, redirections = redirections - 1) + response.previous = old_response + else: + raise RedirectLimit("Redirected more times than rediection_limit allows.", response, content) + elif response.status in [200, 203] and method == "GET": + # Don't cache 206's since we aren't going to handle byte range requests + if not response.has_key('content-location'): + response['content-location'] = absolute_uri + _updateCache(headers, response, content, self.cache, cachekey) + + return (response, content) + + def _normalize_headers(self, headers): + return _normalize_headers(headers) + +# Need to catch and rebrand some exceptions +# Then need to optionally turn all exceptions into status codes +# including all socket.* and httplib.* exceptions. + + + def request(self, uri, method="GET", body=None, headers=None, redirections=DEFAULT_MAX_REDIRECTS, connection_type=None): + """ Performs a single HTTP request. +The 'uri' is the URI of the HTTP resource and can begin +with either 'http' or 'https'. The value of 'uri' must be an absolute URI. + +The 'method' is the HTTP method to perform, such as GET, POST, DELETE, etc. +There is no restriction on the methods allowed. + +The 'body' is the entity body to be sent with the request. It is a string +object. + +Any extra headers that are to be sent with the request should be provided in the +'headers' dictionary. + +The maximum number of redirect to follow before raising an +exception is 'redirections. The default is 5. + +The return value is a tuple of (response, content), the first +being and instance of the 'Response' class, the second being +a string that contains the response entity body. + """ + try: + if headers is None: + headers = {} + else: + headers = self._normalize_headers(headers) + + if not headers.has_key('user-agent'): + headers['user-agent'] = "Python-httplib2/%s" % __version__ + + uri = iri2uri(uri) + + (scheme, authority, request_uri, defrag_uri) = urlnorm(uri) + domain_port = authority.split(":")[0:2] + if len(domain_port) == 2 and domain_port[1] == '443' and scheme == 'http': + scheme = 'https' + authority = domain_port[0] + + conn_key = scheme+":"+authority + if conn_key in self.connections: + conn = self.connections[conn_key] + else: + if not connection_type: + connection_type = (scheme == 'https') and HTTPSConnectionWithTimeout or HTTPConnectionWithTimeout + certs = list(self.certificates.iter(authority)) + if scheme == 'https' and certs: + conn = self.connections[conn_key] = connection_type(authority, key_file=certs[0][0], + cert_file=certs[0][1], timeout=self.timeout, proxy_info=self.proxy_info) + else: + conn = self.connections[conn_key] = connection_type(authority, timeout=self.timeout, proxy_info=self.proxy_info) + conn.set_debuglevel(debuglevel) + + if 'range' not in headers and 'accept-encoding' not in headers: + headers['accept-encoding'] = 'gzip, deflate' + + info = email.Message.Message() + cached_value = None + if self.cache: + cachekey = defrag_uri + cached_value = self.cache.get(cachekey) + if cached_value: + # info = email.message_from_string(cached_value) + # + # Need to replace the line above with the kludge below + # to fix the non-existent bug not fixed in this + # bug report: http://mail.python.org/pipermail/python-bugs-list/2005-September/030289.html + try: + info, content = cached_value.split('\r\n\r\n', 1) + feedparser = email.FeedParser.FeedParser() + feedparser.feed(info) + info = feedparser.close() + feedparser._parse = None + except IndexError: + self.cache.delete(cachekey) + cachekey = None + cached_value = None + else: + cachekey = None + + if method in self.optimistic_concurrency_methods and self.cache and info.has_key('etag') and not self.ignore_etag and 'if-match' not in headers: + # http://www.w3.org/1999/04/Editing/ + headers['if-match'] = info['etag'] + + if method not in ["GET", "HEAD"] and self.cache and cachekey: + # RFC 2616 Section 13.10 + self.cache.delete(cachekey) + + # Check the vary header in the cache to see if this request + # matches what varies in the cache. + if method in ['GET', 'HEAD'] and 'vary' in info: + vary = info['vary'] + vary_headers = vary.lower().replace(' ', '').split(',') + for header in vary_headers: + key = '-varied-%s' % header + value = info[key] + if headers.get(header, None) != value: + cached_value = None + break + + if cached_value and method in ["GET", "HEAD"] and self.cache and 'range' not in headers: + if info.has_key('-x-permanent-redirect-url'): + # Should cached permanent redirects be counted in our redirection count? For now, yes. + if redirections <= 0: + raise RedirectLimit("Redirected more times than rediection_limit allows.", {}, "") + (response, new_content) = self.request(info['-x-permanent-redirect-url'], "GET", headers = headers, redirections = redirections - 1) + response.previous = Response(info) + response.previous.fromcache = True + else: + # Determine our course of action: + # Is the cached entry fresh or stale? + # Has the client requested a non-cached response? + # + # There seems to be three possible answers: + # 1. [FRESH] Return the cache entry w/o doing a GET + # 2. [STALE] Do the GET (but add in cache validators if available) + # 3. [TRANSPARENT] Do a GET w/o any cache validators (Cache-Control: no-cache) on the request + entry_disposition = _entry_disposition(info, headers) + + if entry_disposition == "FRESH": + if not cached_value: + info['status'] = '504' + content = "" + response = Response(info) + if cached_value: + response.fromcache = True + return (response, content) + + if entry_disposition == "STALE": + if info.has_key('etag') and not self.ignore_etag and not 'if-none-match' in headers: + headers['if-none-match'] = info['etag'] + if info.has_key('last-modified') and not 'last-modified' in headers: + headers['if-modified-since'] = info['last-modified'] + elif entry_disposition == "TRANSPARENT": + pass + + (response, new_content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + + if response.status == 304 and method == "GET": + # Rewrite the cache entry with the new end-to-end headers + # Take all headers that are in response + # and overwrite their values in info. + # unless they are hop-by-hop, or are listed in the connection header. + + for key in _get_end2end_headers(response): + info[key] = response[key] + merged_response = Response(info) + if hasattr(response, "_stale_digest"): + merged_response._stale_digest = response._stale_digest + _updateCache(headers, merged_response, content, self.cache, cachekey) + response = merged_response + response.status = 200 + response.fromcache = True + + elif response.status == 200: + content = new_content + else: + self.cache.delete(cachekey) + content = new_content + else: + cc = _parse_cache_control(headers) + if cc.has_key('only-if-cached'): + info['status'] = '504' + response = Response(info) + content = "" + else: + (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) + except Exception, e: + if self.force_exception_to_status_code: + if isinstance(e, HttpLib2ErrorWithResponse): + response = e.response + content = e.content + response.status = 500 + response.reason = str(e) + elif isinstance(e, socket.timeout): + content = "Request Timeout" + response = Response( { + "content-type": "text/plain", + "status": "408", + "content-length": len(content) + }) + response.reason = "Request Timeout" + else: + content = str(e) + response = Response( { + "content-type": "text/plain", + "status": "400", + "content-length": len(content) + }) + response.reason = "Bad Request" + else: + raise + + + return (response, content) + + + +class Response(dict): + """An object more like email.Message than httplib.HTTPResponse.""" + + """Is this response from our local cache""" + fromcache = False + + """HTTP protocol version used by server. 10 for HTTP/1.0, 11 for HTTP/1.1. """ + version = 11 + + "Status code returned by server. " + status = 200 + + """Reason phrase returned by server.""" + reason = "Ok" + + previous = None + + def __init__(self, info): + # info is either an email.Message or + # an httplib.HTTPResponse object. + if isinstance(info, httplib.HTTPResponse): + for key, value in info.getheaders(): + self[key.lower()] = value + self.status = info.status + self['status'] = str(self.status) + self.reason = info.reason + self.version = info.version + elif isinstance(info, email.Message.Message): + for key, value in info.items(): + self[key] = value + self.status = int(self['status']) + else: + for key, value in info.iteritems(): + self[key] = value + self.status = int(self.get('status', self.status)) + + + def __getattr__(self, name): + if name == 'dict': + return self + else: + raise AttributeError, name diff --git a/utils/external/httplib2/iri2uri.py b/stashboard/contrib/httplib2/iri2uri.py similarity index 100% rename from utils/external/httplib2/iri2uri.py rename to stashboard/contrib/httplib2/iri2uri.py diff --git a/stashboard/contrib/httplib2/socks.py b/stashboard/contrib/httplib2/socks.py new file mode 100644 index 00000000..b65fb389 --- /dev/null +++ b/stashboard/contrib/httplib2/socks.py @@ -0,0 +1,440 @@ +"""SocksiPy - Python SOCKS module. +Version 1.00 + +Copyright 2006 Dan-Haim. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of Dan Haim nor the names of his contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY DAN HAIM "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL DAN HAIM OR HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +This module provides a standard socket-like interface for Python +for tunneling connections through SOCKS proxies. + +""" + +""" + +Minor modifications made by Christopher Gilbert (http://motomastyle.com/) +for use in PyLoris (http://pyloris.sourceforge.net/) + +Minor modifications made by Mario Vilas (http://breakingcode.wordpress.com/) +mainly to merge bug fixes found in Sourceforge + +""" + +import socket + +if getattr(socket, 'socket', None) is None: + raise ImportError('socket.socket missing, proxy support unusable') + +import struct +import sys + +PROXY_TYPE_SOCKS4 = 1 +PROXY_TYPE_SOCKS5 = 2 +PROXY_TYPE_HTTP = 3 + +_defaultproxy = None + +# Small hack for Python 2.x +if sys.version_info[0] <= 2: + def bytes(obj, enc=None): + return obj + +class ProxyError(Exception): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +class GeneralProxyError(ProxyError): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +class Socks5AuthError(ProxyError): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +class Socks5Error(ProxyError): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +class Socks4Error(ProxyError): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +class HTTPError(ProxyError): + def __init__(self, value): + self.value = value + def __str__(self): + return repr(self.value) + +_generalerrors = ("success", + "invalid data", + "not connected", + "not available", + "bad proxy type", + "bad input") + +_socks5errors = ("succeeded", + "general SOCKS server failure", + "connection not allowed by ruleset", + "Network unreachable", + "Host unreachable", + "Connection refused", + "TTL expired", + "Command not supported", + "Address type not supported", + "Unknown error") + +_socks5autherrors = ("succeeded", + "authentication is required", + "all offered authentication methods were rejected", + "unknown username or invalid password", + "unknown error") + +_socks4errors = ("request granted", + "request rejected or failed", + ("request rejected because SOCKS server cannot connect to " + "identd on the client"), + ("request rejected because the client program and identd" + " report different user-ids"), + "unknown error") + + +def setdefaultproxy(proxytype=None, addr=None, port=None, rdns=True, + username=None, password=None): + """setdefaultproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets a default proxy which all further socksocket objects will use, + unless explicitly changed. + """ + global _defaultproxy + _defaultproxy = (proxytype, addr, port, rdns, username, password) + + +class socksocket(socket.socket): + """socksocket([family[, type[, proto]]]) -> socket object + + Open a SOCKS enabled socket. The parameters are the same as + those of the standard socket init. In order for SOCKS to work, + you must specify family=AF_INET, type=SOCK_STREAM and proto=0. + """ + + def __init__(self, family=socket.AF_INET, type=socket.SOCK_STREAM, + proto=0, _sock=None): + socket.socket.__init__(self, family, type, proto, _sock) + if _defaultproxy != None: + self.__proxy = _defaultproxy + else: + self.__proxy = (None, None, None, None, None, None) + self.__proxysockname = None + self.__proxypeername = None + + def __decode(self, bytes): + if getattr(bytes, 'decode', False): + try: + bytes = bytes.decode() + except Exception: + pass + return bytes + + def __encode(self, bytes): + if getattr(bytes, 'encode', False): + try: + bytes = bytes.encode() + except Exception: + pass + return bytes + + def __recvall(self, count): + """__recvall(count) -> data + Receive EXACTLY the number of bytes requested from the socket. + Blocks until the required number of bytes have been received. + """ + data = bytes("") + while len(data) < count: + d = self.recv(count - len(data)) + if not d: + raise GeneralProxyError( + (0, "connection closed unexpectedly")) + data = data + self.__decode(d) + return data + + def sendall(self, bytes): + socket.socket.sendall(self, self.__encode(bytes)) + + def setproxy(self, proxytype=None, addr=None, port=None, rdns=True, + username=None, password=None): + """setproxy(proxytype, addr[, port[, rdns[, username[, password]]]]) + Sets the proxy to be used. + proxytype - The type of the proxy to be used. Three types + are supported: PROXY_TYPE_SOCKS4 (including socks4a), + PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP + addr - The address of the server (IP or DNS). + port - The port of the server. Defaults to 1080 for SOCKS + servers and 8080 for HTTP proxy servers. + rdns - Should DNS queries be preformed on the remote side + (rather than the local side). The default is True. + Note: This has no effect with SOCKS4 servers. + username - Username to authenticate with to the server. + The default is no authentication. + password - Password to authenticate with to the server. + Only relevant when username is also provided. + """ + self.__proxy = (proxytype, addr, port, rdns, username, password) + + def __negotiatesocks5(self, destaddr, destport): + """__negotiatesocks5(self,destaddr,destport) + Negotiates a connection through a SOCKS5 server. + """ + # First we'll send the authentication packages we support. + if (self.__proxy[4] != None) and (self.__proxy[5] != None): + # The username/password details were supplied to the + # setproxy method so we support the USERNAME/PASSWORD + # authentication (in addition to the standard none). + self.sendall("\x05\x02\x00\x02") + else: + # No username/password were entered, therefore we + # only support connections with no authentication. + self.sendall("\x05\x01\x00") + # We'll receive the server's response to determine which + # method was selected + chosenauth = self.__recvall(2) + if chosenauth[0] != "\x05": + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + # Check the chosen authentication method + if chosenauth[1] == "\x00": + # No authentication is required + pass + elif chosenauth[1] == "\x02": + # Okay, we need to perform a basic username/password + # authentication. + self.sendall("\x01" + chr(len(self.__proxy[4])) + self.__proxy[4] + + chr(len(self.__proxy[5])) + self.__proxy[5]) + authstat = self.__recvall(2) + if authstat[0] != "\x01": + # Bad response + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if authstat[1] != "\x00": + # Authentication failed + self.close() + raise Socks5AuthError((3, _socks5autherrors[3])) + # Authentication succeeded + else: + # Reaching here is always bad + self.close() + if chosenauth[1] == "\xFF": + raise Socks5AuthError((2, _socks5autherrors[2])) + else: + raise GeneralProxyError((1, _generalerrors[1])) + # Now we can request the actual connection + req = "\x05\x01\x00" + # If the given destination address is an IP address, we'll + # use the IPv4 address request even if remote resolving was specified. + try: + ipaddr = socket.inet_aton(destaddr) + req = req + "\x01" + ipaddr + except socket.error: + # Well it's not an IP number, so it's probably a DNS name. + if self.__proxy[3] == True: + # Resolve remotely + ipaddr = None + req = req + "\x03" + chr(len(destaddr)) + destaddr + else: + # Resolve locally + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + req = req + "\x01" + ipaddr + req = req + self.__decode(struct.pack(">H", destport)) + self.sendall(req) + # Get the response + resp = self.__recvall(4) + if resp[0] != "\x05": + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + elif resp[1] != "\x00": + # Connection failed + self.close() + if ord(resp[1]) <= 8: + raise Socks5Error((ord(resp[1]), _socks5errors[ord(resp[1])])) + else: + raise Socks5Error((9, _socks5errors[9])) + # Get the bound address/port + elif resp[3] == "\x01": + boundaddr = self.__recvall(4) + elif resp[3] == "\x03": + resp = resp + self.recv(1) + boundaddr = self.__recvall(ord(resp[4])) + else: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + boundport = struct.unpack(">H", bytes(self.__recvall(2), 'utf8'))[0] + self.__proxysockname = boundaddr, boundport + if ipaddr != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr), destport) + else: + self.__proxypeername = (destaddr, destport) + + def getproxysockname(self): + """getsockname() -> address info + Returns the bound IP address and port number at the proxy. + """ + return self.__proxysockname + + def getproxypeername(self): + """getproxypeername() -> address info + Returns the IP and port number of the proxy. + """ + return socket.socket.getpeername(self) + + def getpeername(self): + """getpeername() -> address info + Returns the IP address and port number of the destination + machine (note: getproxypeername returns the proxy) + """ + return self.__proxypeername + + def __negotiatesocks4(self, destaddr, destport): + """__negotiatesocks4(self,destaddr,destport) + Negotiates a connection through a SOCKS4 server. + """ + # Check if the destination address provided is an IP address + rmtrslv = False + try: + ipaddr = socket.inet_aton(destaddr) + except socket.error: + # It's a DNS name. Check where it should be resolved. + if self.__proxy[3] == True: + ipaddr = "\x00\x00\x00\x01" + rmtrslv = True + else: + ipaddr = socket.inet_aton(socket.gethostbyname(destaddr)) + # Construct the request packet + req = "\x04\x01" + self.__decode(struct.pack(">H", destport)) + ipaddr + # The username parameter is considered userid for SOCKS4 + if self.__proxy[4] != None: + req = req + self.__proxy[4] + req = req + "\x00" + # DNS name if remote resolving is required + # NOTE: This is actually an extension to the SOCKS4 protocol + # called SOCKS4A and may not be supported in all cases. + if rmtrslv==True: + req = req + destaddr + "\x00" + self.sendall(req) + # Get the response from the server + resp = self.__recvall(8) + if resp[0] != "\x00": + # Bad data + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if resp[1] != "\x5A": + # Server returned an error + self.close() + if ord(resp[1]) in (91,92,93): + self.close() + raise Socks4Error((ord(resp[1]), _socks4errors[ord(resp[1])-90])) + else: + raise Socks4Error((94,_socks4errors[4])) + # Get the bound address/port + self.__proxysockname = (socket.inet_ntoa(resp[4:]),struct.unpack(">H",bytes(resp[2:4],'utf8'))[0]) + if rmtrslv != None: + self.__proxypeername = (socket.inet_ntoa(ipaddr),destport) + else: + self.__proxypeername = (destaddr, destport) + + def __negotiatehttp(self, destaddr, destport): + """__negotiatehttp(self,destaddr,destport) + Negotiates a connection through an HTTP server. + """ + # If we need to resolve locally, we do this now + if self.__proxy[3] == False: + addr = socket.gethostbyname(destaddr) + else: + addr = destaddr + self.sendall(("CONNECT %s:%s HTTP/1.1\r\n" + "Host: %s\r\n\r\n") % (addr, destport, destaddr)) + # We read the response until we get the string "\r\n\r\n" + resp = self.recv(1) + while resp.find("\r\n\r\n") == -1: + resp = resp + self.recv(1) + # We just need the first line to check if the connection + # was successful + statusline = resp.splitlines()[0].split(" ", 2) + if statusline[0] not in ("HTTP/1.0", "HTTP/1.1"): + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + try: + statuscode = int(statusline[1]) + except ValueError: + self.close() + raise GeneralProxyError((1, _generalerrors[1])) + if statuscode != 200: + self.close() + raise HTTPError((statuscode, statusline[2])) + self.__proxysockname = ("0.0.0.0", 0) + self.__proxypeername = (addr, destport) + + def connect(self, destpair): + """connect(self,despair) + Connects to the specified destination through a proxy. + destpar - A tuple of the IP/DNS address and the port number. + (identical to socket's connect). + To select the proxy server use setproxy(). + """ + # Do a minimal input check first + # TODO(durin42): seriously? type checking? do we care? + if ((not isinstance(destpair, (list, tuple))) or len(destpair) < 2 + or not isinstance(destpair[0], str) or not isinstance(destpair[1], int)): + raise GeneralProxyError((5, _generalerrors[5])) + if self.__proxy[0] == PROXY_TYPE_SOCKS5: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + socket.socket.connect(self,(self.__proxy[1], portnum)) + self.__negotiatesocks5(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_SOCKS4: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 1080 + socket.socket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatesocks4(destpair[0], destpair[1]) + elif self.__proxy[0] == PROXY_TYPE_HTTP: + if self.__proxy[2] != None: + portnum = self.__proxy[2] + else: + portnum = 8080 + socket.socket.connect(self, (self.__proxy[1], portnum)) + self.__negotiatehttp(destpair[0], destpair[1]) + elif self.__proxy[0] == None: + socket.socket.connect(self, (destpair[0], destpair[1])) + else: + raise GeneralProxyError((4, _generalerrors[4])) diff --git a/utils/__init__.py b/stashboard/contrib/httplib2/test/__init__.py old mode 100755 new mode 100644 similarity index 100% rename from utils/__init__.py rename to stashboard/contrib/httplib2/test/__init__.py diff --git a/stashboard/contrib/httplib2/test/brokensocket/socket.py b/stashboard/contrib/httplib2/test/brokensocket/socket.py new file mode 100644 index 00000000..ff7c0b74 --- /dev/null +++ b/stashboard/contrib/httplib2/test/brokensocket/socket.py @@ -0,0 +1 @@ +from realsocket import gaierror, error, getaddrinfo, SOCK_STREAM diff --git a/stashboard/contrib/httplib2/test/functional/test_proxies.py b/stashboard/contrib/httplib2/test/functional/test_proxies.py new file mode 100644 index 00000000..0b7880fe --- /dev/null +++ b/stashboard/contrib/httplib2/test/functional/test_proxies.py @@ -0,0 +1,88 @@ +import unittest +import errno +import os +import signal +import subprocess +import tempfile + +import nose + +import httplib2 +from httplib2 import socks +from httplib2.test import miniserver + +tinyproxy_cfg = """ +User "%(user)s" +Port %(port)s +Listen 127.0.0.1 +PidFile "%(pidfile)s" +LogFile "%(logfile)s" +MaxClients 2 +StartServers 1 +LogLevel Info +""" + + +class FunctionalProxyHttpTest(unittest.TestCase): + def setUp(self): + if not socks: + raise nose.SkipTest('socks module unavailable') + if not subprocess: + raise nose.SkipTest('subprocess module unavailable') + + # start a short-lived miniserver so we can get a likely port + # for the proxy + self.httpd, self.proxyport = miniserver.start_server( + miniserver.ThisDirHandler) + self.httpd.shutdown() + self.httpd, self.port = miniserver.start_server( + miniserver.ThisDirHandler) + + self.pidfile = tempfile.mktemp() + self.logfile = tempfile.mktemp() + fd, self.conffile = tempfile.mkstemp() + f = os.fdopen(fd, 'w') + our_cfg = tinyproxy_cfg % {'user': os.getlogin(), + 'pidfile': self.pidfile, + 'port': self.proxyport, + 'logfile': self.logfile} + f.write(our_cfg) + f.close() + try: + # TODO use subprocess.check_call when 2.4 is dropped + ret = subprocess.call(['tinyproxy', '-c', self.conffile]) + self.assertEqual(0, ret) + except OSError, e: + if e.errno == errno.ENOENT: + raise nose.SkipTest('tinyproxy not available') + raise + + def tearDown(self): + self.httpd.shutdown() + try: + pid = int(open(self.pidfile).read()) + os.kill(pid, signal.SIGTERM) + except OSError, e: + if e.errno == errno.ESRCH: + print '\n\n\nTinyProxy Failed to start, log follows:' + print open(self.logfile).read() + print 'end tinyproxy log\n\n\n' + raise + map(os.unlink, (self.pidfile, + self.logfile, + self.conffile)) + + def testSimpleProxy(self): + proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, + 'localhost', self.proxyport) + client = httplib2.Http(proxy_info=proxy_info) + src = 'miniserver.py' + response, body = client.request('http://localhost:%d/%s' % + (self.port, src)) + self.assertEqual(response.status, 200) + self.assertEqual(body, open(os.path.join(miniserver.HERE, src)).read()) + lf = open(self.logfile).read() + expect = ('Established connection to host "127.0.0.1" ' + 'using file descriptor') + self.assertTrue(expect in lf, + 'tinyproxy did not proxy a request for miniserver') diff --git a/stashboard/contrib/httplib2/test/miniserver.py b/stashboard/contrib/httplib2/test/miniserver.py new file mode 100644 index 00000000..e32bf5e5 --- /dev/null +++ b/stashboard/contrib/httplib2/test/miniserver.py @@ -0,0 +1,100 @@ +import logging +import os +import select +import SimpleHTTPServer +import SocketServer +import threading + +HERE = os.path.dirname(__file__) +logger = logging.getLogger(__name__) + + +class ThisDirHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): + def translate_path(self, path): + path = path.split('?', 1)[0].split('#', 1)[0] + return os.path.join(HERE, *filter(None, path.split('/'))) + + def log_message(self, s, *args): + # output via logging so nose can catch it + logger.info(s, *args) + + +class ShutdownServer(SocketServer.TCPServer): + """Mixin that allows serve_forever to be shut down. + + The methods in this mixin are backported from SocketServer.py in the Python + 2.6.4 standard library. The mixin is unnecessary in 2.6 and later, when + BaseServer supports the shutdown method directly. + """ + + def __init__(self, *args, **kwargs): + SocketServer.TCPServer.__init__(self, *args, **kwargs) + self.__is_shut_down = threading.Event() + self.__serving = False + + def serve_forever(self, poll_interval=0.1): + """Handle one request at a time until shutdown. + + Polls for shutdown every poll_interval seconds. Ignores + self.timeout. If you need to do periodic tasks, do them in + another thread. + """ + self.__serving = True + self.__is_shut_down.clear() + while self.__serving: + r, w, e = select.select([self.socket], [], [], poll_interval) + if r: + self._handle_request_noblock() + self.__is_shut_down.set() + + def shutdown(self): + """Stops the serve_forever loop. + + Blocks until the loop has finished. This must be called while + serve_forever() is running in another thread, or it will deadlock. + """ + self.__serving = False + self.__is_shut_down.wait() + + def handle_request(self): + """Handle one request, possibly blocking. + + Respects self.timeout. + """ + # Support people who used socket.settimeout() to escape + # handle_request before self.timeout was available. + timeout = self.socket.gettimeout() + if timeout is None: + timeout = self.timeout + elif self.timeout is not None: + timeout = min(timeout, self.timeout) + fd_sets = select.select([self], [], [], timeout) + if not fd_sets[0]: + self.handle_timeout() + return + self._handle_request_noblock() + + def _handle_request_noblock(self): + """Handle one request, without blocking. + + I assume that select.select has returned that the socket is + readable before this function was called, so there should be + no risk of blocking in get_request(). + """ + try: + request, client_address = self.get_request() + except socket.error: + return + if self.verify_request(request, client_address): + try: + self.process_request(request, client_address) + except: + self.handle_error(request, client_address) + self.close_request(request) + + +def start_server(handler): + httpd = ShutdownServer(("", 0), handler) + threading.Thread(target=httpd.serve_forever).start() + _, port = httpd.socket.getsockname() + return httpd, port diff --git a/stashboard/contrib/httplib2/test/smoke_test.py b/stashboard/contrib/httplib2/test/smoke_test.py new file mode 100644 index 00000000..9f1e6f01 --- /dev/null +++ b/stashboard/contrib/httplib2/test/smoke_test.py @@ -0,0 +1,23 @@ +import os +import unittest + +import httplib2 + +from httplib2.test import miniserver + + +class HttpSmokeTest(unittest.TestCase): + def setUp(self): + self.httpd, self.port = miniserver.start_server( + miniserver.ThisDirHandler) + + def tearDown(self): + self.httpd.shutdown() + + def testGetFile(self): + client = httplib2.Http() + src = 'miniserver.py' + response, body = client.request('http://localhost:%d/%s' % + (self.port, src)) + self.assertEqual(response.status, 200) + self.assertEqual(body, open(os.path.join(miniserver.HERE, src)).read()) diff --git a/stashboard/contrib/httplib2/test/test_no_socket.py b/stashboard/contrib/httplib2/test/test_no_socket.py new file mode 100644 index 00000000..66ba0563 --- /dev/null +++ b/stashboard/contrib/httplib2/test/test_no_socket.py @@ -0,0 +1,24 @@ +"""Tests for httplib2 when the socket module is missing. + +This helps ensure compatibility with environments such as AppEngine. +""" +import os +import sys +import unittest + +import httplib2 + +class MissingSocketTest(unittest.TestCase): + def setUp(self): + self._oldsocks = httplib2.socks + httplib2.socks = None + + def tearDown(self): + httplib2.socks = self._oldsocks + + def testProxyDisabled(self): + proxy_info = httplib2.ProxyInfo('blah', + 'localhost', 0) + client = httplib2.Http(proxy_info=proxy_info) + self.assertRaises(httplib2.ProxiesUnavailableError, + client.request, 'http://localhost:-1/') diff --git a/stashboard/contrib/oauth2/__init__.py b/stashboard/contrib/oauth2/__init__.py new file mode 100755 index 00000000..835270e3 --- /dev/null +++ b/stashboard/contrib/oauth2/__init__.py @@ -0,0 +1,860 @@ +""" +The MIT License + +Copyright (c) 2007-2010 Leah Culver, Joe Stump, Mark Paschal, Vic Fryzel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +import base64 +import urllib +import time +import random +import urlparse +import hmac +import binascii +import httplib2 + +try: + from urlparse import parse_qs + parse_qs # placate pyflakes +except ImportError: + # fall back for Python 2.5 + from cgi import parse_qs + +try: + from hashlib import sha1 + sha = sha1 +except ImportError: + # hashlib was added in Python 2.5 + import sha + +import _version + +__version__ = _version.__version__ + +OAUTH_VERSION = '1.0' # Hi Blaine! +HTTP_METHOD = 'GET' +SIGNATURE_METHOD = 'PLAINTEXT' + + +class Error(RuntimeError): + """Generic exception class.""" + + def __init__(self, message='OAuth error occurred.'): + self._message = message + + @property + def message(self): + """A hack to get around the deprecation errors in 2.6.""" + return self._message + + def __str__(self): + return self._message + + +class MissingSignature(Error): + pass + + +def build_authenticate_header(realm=''): + """Optional WWW-Authenticate header (401 error)""" + return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} + + +def build_xoauth_string(url, consumer, token=None): + """Build an XOAUTH string for use in SMTP/IMPA authentication.""" + request = Request.from_consumer_and_token(consumer, token, + "GET", url) + + signing_method = SignatureMethod_HMAC_SHA1() + request.sign_request(signing_method, consumer, token) + + params = [] + for k, v in sorted(request.iteritems()): + if v is not None: + params.append('%s="%s"' % (k, escape(v))) + + return "%s %s %s" % ("GET", url, ','.join(params)) + + +def to_unicode(s): + """ Convert to unicode, raise exception with instructive error + message if s is not unicode, ascii, or utf-8. """ + if not isinstance(s, unicode): + if not isinstance(s, str): + raise TypeError('You are required to pass either unicode or string here, not: %r (%s)' % (type(s), s)) + try: + s = s.decode('utf-8') + except UnicodeDecodeError, le: + raise TypeError('You are required to pass either a unicode object or a utf-8 string here. You passed a Python string object which contained non-utf-8: %r. The UnicodeDecodeError that resulted from attempting to interpret it as utf-8 was: %s' % (s, le,)) + return s + +def to_utf8(s): + return to_unicode(s).encode('utf-8') + +def to_unicode_if_string(s): + if isinstance(s, basestring): + return to_unicode(s) + else: + return s + +def to_utf8_if_string(s): + if isinstance(s, basestring): + return to_utf8(s) + else: + return s + +def to_unicode_optional_iterator(x): + """ + Raise TypeError if x is a str containing non-utf8 bytes or if x is + an iterable which contains such a str. + """ + if isinstance(x, basestring): + return to_unicode(x) + + try: + l = list(x) + except TypeError, e: + assert 'is not iterable' in str(e) + return x + else: + return [ to_unicode(e) for e in l ] + +def to_utf8_optional_iterator(x): + """ + Raise TypeError if x is a str or if x is an iterable which + contains a str. + """ + if isinstance(x, basestring): + return to_utf8(x) + + try: + l = list(x) + except TypeError, e: + assert 'is not iterable' in str(e) + return x + else: + return [ to_utf8_if_string(e) for e in l ] + +def escape(s): + """Escape a URL including any /.""" + return urllib.quote(s.encode('utf-8'), safe='~') + +def generate_timestamp(): + """Get seconds since epoch (UTC).""" + return int(time.time()) + + +def generate_nonce(length=8): + """Generate pseudorandom number.""" + return ''.join([str(random.randint(0, 9)) for i in range(length)]) + + +def generate_verifier(length=8): + """Generate pseudorandom number.""" + return ''.join([str(random.randint(0, 9)) for i in range(length)]) + + +class Consumer(object): + """A consumer of OAuth-protected services. + + The OAuth consumer is a "third-party" service that wants to access + protected resources from an OAuth service provider on behalf of an end + user. It's kind of the OAuth client. + + Usually a consumer must be registered with the service provider by the + developer of the consumer software. As part of that process, the service + provider gives the consumer a *key* and a *secret* with which the consumer + software can identify itself to the service. The consumer will include its + key in each request to identify itself, but will use its secret only when + signing requests, to prove that the request is from that particular + registered consumer. + + Once registered, the consumer can then use its consumer credentials to ask + the service provider for a request token, kicking off the OAuth + authorization process. + """ + + key = None + secret = None + + def __init__(self, key, secret): + self.key = key + self.secret = secret + + if self.key is None or self.secret is None: + raise ValueError("Key and secret must be set.") + + def __str__(self): + data = {'oauth_consumer_key': self.key, + 'oauth_consumer_secret': self.secret} + + return urllib.urlencode(data) + + +class Token(object): + """An OAuth credential used to request authorization or a protected + resource. + + Tokens in OAuth comprise a *key* and a *secret*. The key is included in + requests to identify the token being used, but the secret is used only in + the signature, to prove that the requester is who the server gave the + token to. + + When first negotiating the authorization, the consumer asks for a *request + token* that the live user authorizes with the service provider. The + consumer then exchanges the request token for an *access token* that can + be used to access protected resources. + """ + + key = None + secret = None + callback = None + callback_confirmed = None + verifier = None + + def __init__(self, key, secret): + self.key = key + self.secret = secret + + if self.key is None or self.secret is None: + raise ValueError("Key and secret must be set.") + + def set_callback(self, callback): + self.callback = callback + self.callback_confirmed = 'true' + + def set_verifier(self, verifier=None): + if verifier is not None: + self.verifier = verifier + else: + self.verifier = generate_verifier() + + def get_callback_url(self): + if self.callback and self.verifier: + # Append the oauth_verifier. + parts = urlparse.urlparse(self.callback) + scheme, netloc, path, params, query, fragment = parts[:6] + if query: + query = '%s&oauth_verifier=%s' % (query, self.verifier) + else: + query = 'oauth_verifier=%s' % self.verifier + return urlparse.urlunparse((scheme, netloc, path, params, + query, fragment)) + return self.callback + + def to_string(self): + """Returns this token as a plain string, suitable for storage. + + The resulting string includes the token's secret, so you should never + send or store this string where a third party can read it. + """ + + data = { + 'oauth_token': self.key, + 'oauth_token_secret': self.secret, + } + + if self.callback_confirmed is not None: + data['oauth_callback_confirmed'] = self.callback_confirmed + return urllib.urlencode(data) + + @staticmethod + def from_string(s): + """Deserializes a token from a string like one returned by + `to_string()`.""" + + if not len(s): + raise ValueError("Invalid parameter string.") + + params = parse_qs(s, keep_blank_values=False) + if not len(params): + raise ValueError("Invalid parameter string.") + + try: + key = params['oauth_token'][0] + except Exception: + raise ValueError("'oauth_token' not found in OAuth request.") + + try: + secret = params['oauth_token_secret'][0] + except Exception: + raise ValueError("'oauth_token_secret' not found in " + "OAuth request.") + + token = Token(key, secret) + try: + token.callback_confirmed = params['oauth_callback_confirmed'][0] + except KeyError: + pass # 1.0, no callback confirmed. + return token + + def __str__(self): + return self.to_string() + + +def setter(attr): + name = attr.__name__ + + def getter(self): + try: + return self.__dict__[name] + except KeyError: + raise AttributeError(name) + + def deleter(self): + del self.__dict__[name] + + return property(getter, attr, deleter) + + +class Request(dict): + + """The parameters and information for an HTTP request, suitable for + authorizing with OAuth credentials. + + When a consumer wants to access a service's protected resources, it does + so using a signed HTTP request identifying itself (the consumer) with its + key, and providing an access token authorized by the end user to access + those resources. + + """ + + version = OAUTH_VERSION + + def __init__(self, method=HTTP_METHOD, url=None, parameters=None, + body='', is_form_encoded=False): + if url is not None: + self.url = to_unicode(url) + self.method = method + if parameters is not None: + for k, v in parameters.iteritems(): + k = to_unicode(k) + v = to_unicode_optional_iterator(v) + self[k] = v + self.body = body + self.is_form_encoded = is_form_encoded + + + @setter + def url(self, value): + self.__dict__['url'] = value + if value is not None: + scheme, netloc, path, params, query, fragment = urlparse.urlparse(value) + + # Exclude default port numbers. + if scheme == 'http' and netloc[-3:] == ':80': + netloc = netloc[:-3] + elif scheme == 'https' and netloc[-4:] == ':443': + netloc = netloc[:-4] + if scheme not in ('http', 'https'): + raise ValueError("Unsupported URL %s (%s)." % (value, scheme)) + + # Normalized URL excludes params, query, and fragment. + self.normalized_url = urlparse.urlunparse((scheme, netloc, path, None, None, None)) + else: + self.normalized_url = None + self.__dict__['url'] = None + + @setter + def method(self, value): + self.__dict__['method'] = value.upper() + + def _get_timestamp_nonce(self): + return self['oauth_timestamp'], self['oauth_nonce'] + + def get_nonoauth_parameters(self): + """Get any non-OAuth parameters.""" + return dict([(k, v) for k, v in self.iteritems() + if not k.startswith('oauth_')]) + + def to_header(self, realm=''): + """Serialize as a header for an HTTPAuth request.""" + oauth_params = ((k, v) for k, v in self.items() + if k.startswith('oauth_')) + stringy_params = ((k, escape(str(v))) for k, v in oauth_params) + header_params = ('%s="%s"' % (k, v) for k, v in stringy_params) + params_header = ', '.join(header_params) + + auth_header = 'OAuth realm="%s"' % realm + if params_header: + auth_header = "%s, %s" % (auth_header, params_header) + + return {'Authorization': auth_header} + + def to_postdata(self): + """Serialize as post data for a POST request.""" + d = {} + for k, v in self.iteritems(): + d[k.encode('utf-8')] = to_utf8_optional_iterator(v) + + # tell urlencode to deal with sequence values and map them correctly + # to resulting querystring. for example self["k"] = ["v1", "v2"] will + # result in 'k=v1&k=v2' and not k=%5B%27v1%27%2C+%27v2%27%5D + return urllib.urlencode(d, True).replace('+', '%20') + + def to_url(self): + """Serialize as a URL for a GET request.""" + base_url = urlparse.urlparse(self.url) + try: + query = base_url.query + except AttributeError: + # must be python <2.5 + query = base_url[4] + query = parse_qs(query) + for k, v in self.items(): + query.setdefault(k, []).append(v) + + try: + scheme = base_url.scheme + netloc = base_url.netloc + path = base_url.path + params = base_url.params + fragment = base_url.fragment + except AttributeError: + # must be python <2.5 + scheme = base_url[0] + netloc = base_url[1] + path = base_url[2] + params = base_url[3] + fragment = base_url[5] + + url = (scheme, netloc, path, params, + urllib.urlencode(query, True), fragment) + return urlparse.urlunparse(url) + + def get_parameter(self, parameter): + ret = self.get(parameter) + if ret is None: + raise Error('Parameter not found: %s' % parameter) + + return ret + + def get_normalized_parameters(self): + """Return a string that contains the parameters that must be signed.""" + items = [] + for key, value in self.iteritems(): + if key == 'oauth_signature': + continue + # 1.0a/9.1.1 states that kvp must be sorted by key, then by value, + # so we unpack sequence values into multiple items for sorting. + if isinstance(value, basestring): + items.append((to_utf8_if_string(key), to_utf8(value))) + else: + try: + value = list(value) + except TypeError, e: + assert 'is not iterable' in str(e) + items.append((to_utf8_if_string(key), to_utf8_if_string(value))) + else: + items.extend((to_utf8_if_string(key), to_utf8_if_string(item)) for item in value) + + # Include any query string parameters from the provided URL + query = urlparse.urlparse(self.url)[4] + + url_items = self._split_url_string(query).items() + url_items = [(to_utf8(k), to_utf8(v)) for k, v in url_items if k != 'oauth_signature' ] + items.extend(url_items) + + items.sort() + encoded_str = urllib.urlencode(items) + # Encode signature parameters per Oauth Core 1.0 protocol + # spec draft 7, section 3.6 + # (http://tools.ietf.org/html/draft-hammer-oauth-07#section-3.6) + # Spaces must be encoded with "%20" instead of "+" + return encoded_str.replace('+', '%20').replace('%7E', '~') + + def sign_request(self, signature_method, consumer, token): + """Set the signature parameter to the result of sign.""" + + if not self.is_form_encoded: + # according to + # http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html + # section 4.1.1 "OAuth Consumers MUST NOT include an + # oauth_body_hash parameter on requests with form-encoded + # request bodies." + self['oauth_body_hash'] = base64.b64encode(sha(self.body).digest()) + + if 'oauth_consumer_key' not in self: + self['oauth_consumer_key'] = consumer.key + + if token and 'oauth_token' not in self: + self['oauth_token'] = token.key + + self['oauth_signature_method'] = signature_method.name + self['oauth_signature'] = signature_method.sign(self, consumer, token) + + @classmethod + def make_timestamp(cls): + """Get seconds since epoch (UTC).""" + return str(int(time.time())) + + @classmethod + def make_nonce(cls): + """Generate pseudorandom number.""" + return str(random.randint(0, 100000000)) + + @classmethod + def from_request(cls, http_method, http_url, headers=None, parameters=None, + query_string=None): + """Combines multiple parameter sources.""" + if parameters is None: + parameters = {} + + # Headers + if headers and 'Authorization' in headers: + auth_header = headers['Authorization'] + # Check that the authorization header is OAuth. + if auth_header[:6] == 'OAuth ': + auth_header = auth_header[6:] + try: + # Get the parameters from the header. + header_params = cls._split_header(auth_header) + parameters.update(header_params) + except: + raise Error('Unable to parse OAuth parameters from ' + 'Authorization header.') + + # GET or POST query string. + if query_string: + query_params = cls._split_url_string(query_string) + parameters.update(query_params) + + # URL parameters. + param_str = urlparse.urlparse(http_url)[4] # query + url_params = cls._split_url_string(param_str) + parameters.update(url_params) + + if parameters: + return cls(http_method, http_url, parameters) + + return None + + @classmethod + def from_consumer_and_token(cls, consumer, token=None, + http_method=HTTP_METHOD, http_url=None, parameters=None, + body='', is_form_encoded=False): + if not parameters: + parameters = {} + + defaults = { + 'oauth_consumer_key': consumer.key, + 'oauth_timestamp': cls.make_timestamp(), + 'oauth_nonce': cls.make_nonce(), + 'oauth_version': cls.version, + } + + defaults.update(parameters) + parameters = defaults + + if token: + parameters['oauth_token'] = token.key + if token.verifier: + parameters['oauth_verifier'] = token.verifier + + return Request(http_method, http_url, parameters, body=body, + is_form_encoded=is_form_encoded) + + @classmethod + def from_token_and_callback(cls, token, callback=None, + http_method=HTTP_METHOD, http_url=None, parameters=None): + + if not parameters: + parameters = {} + + parameters['oauth_token'] = token.key + + if callback: + parameters['oauth_callback'] = callback + + return cls(http_method, http_url, parameters) + + @staticmethod + def _split_header(header): + """Turn Authorization: header into parameters.""" + params = {} + parts = header.split(',') + for param in parts: + # Ignore realm parameter. + if param.find('realm') > -1: + continue + # Remove whitespace. + param = param.strip() + # Split key-value. + param_parts = param.split('=', 1) + # Remove quotes and unescape the value. + params[param_parts[0]] = urllib.unquote(param_parts[1].strip('\"')) + return params + + @staticmethod + def _split_url_string(param_str): + """Turn URL string into parameters.""" + parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=True) + for k, v in parameters.iteritems(): + parameters[k] = urllib.unquote(v[0]) + return parameters + + +class Client(httplib2.Http): + """OAuthClient is a worker to attempt to execute a request.""" + + def __init__(self, consumer, token=None, cache=None, timeout=None, + proxy_info=None): + + if consumer is not None and not isinstance(consumer, Consumer): + raise ValueError("Invalid consumer.") + + if token is not None and not isinstance(token, Token): + raise ValueError("Invalid token.") + + self.consumer = consumer + self.token = token + self.method = SignatureMethod_HMAC_SHA1() + + httplib2.Http.__init__(self, cache=cache, timeout=timeout, proxy_info=proxy_info) + + def set_signature_method(self, method): + if not isinstance(method, SignatureMethod): + raise ValueError("Invalid signature method.") + + self.method = method + + def request(self, uri, method="GET", body='', headers=None, + redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None): + DEFAULT_POST_CONTENT_TYPE = 'application/x-www-form-urlencoded' + + if not isinstance(headers, dict): + headers = {} + + if method == "POST": + headers['Content-Type'] = headers.get('Content-Type', + DEFAULT_POST_CONTENT_TYPE) + + is_form_encoded = \ + headers.get('Content-Type') == 'application/x-www-form-urlencoded' + + if is_form_encoded and body: + parameters = parse_qs(body) + else: + parameters = None + + req = Request.from_consumer_and_token(self.consumer, + token=self.token, http_method=method, http_url=uri, + parameters=parameters, body=body, is_form_encoded=is_form_encoded) + + req.sign_request(self.method, self.consumer, self.token) + + schema, rest = urllib.splittype(uri) + if rest.startswith('//'): + hierpart = '//' + else: + hierpart = '' + host, rest = urllib.splithost(rest) + + realm = schema + ':' + hierpart + host + + if is_form_encoded: + body = req.to_postdata() + elif method == "GET": + uri = req.to_url() + else: + headers.update(req.to_header(realm=realm)) + + return httplib2.Http.request(self, uri, method=method, body=body, + headers=headers, redirections=redirections, + connection_type=connection_type) + + +class Server(object): + """A skeletal implementation of a service provider, providing protected + resources to requests from authorized consumers. + + This class implements the logic to check requests for authorization. You + can use it with your web server or web framework to protect certain + resources with OAuth. + """ + + timestamp_threshold = 300 # In seconds, five minutes. + version = OAUTH_VERSION + signature_methods = None + + def __init__(self, signature_methods=None): + self.signature_methods = signature_methods or {} + + def add_signature_method(self, signature_method): + self.signature_methods[signature_method.name] = signature_method + return self.signature_methods + + def verify_request(self, request, consumer, token): + """Verifies an api call and checks all the parameters.""" + + self._check_version(request) + self._check_signature(request, consumer, token) + parameters = request.get_nonoauth_parameters() + return parameters + + def build_authenticate_header(self, realm=''): + """Optional support for the authenticate header.""" + return {'WWW-Authenticate': 'OAuth realm="%s"' % realm} + + def _check_version(self, request): + """Verify the correct version of the request for this server.""" + version = self._get_version(request) + if version and version != self.version: + raise Error('OAuth version %s not supported.' % str(version)) + + def _get_version(self, request): + """Return the version of the request for this server.""" + try: + version = request.get_parameter('oauth_version') + except: + version = OAUTH_VERSION + + return version + + def _get_signature_method(self, request): + """Figure out the signature with some defaults.""" + try: + signature_method = request.get_parameter('oauth_signature_method') + except: + signature_method = SIGNATURE_METHOD + + try: + # Get the signature method object. + signature_method = self.signature_methods[signature_method] + except: + signature_method_names = ', '.join(self.signature_methods.keys()) + raise Error('Signature method %s not supported try one of the following: %s' % (signature_method, signature_method_names)) + + return signature_method + + def _get_verifier(self, request): + return request.get_parameter('oauth_verifier') + + def _check_signature(self, request, consumer, token): + timestamp, nonce = request._get_timestamp_nonce() + self._check_timestamp(timestamp) + signature_method = self._get_signature_method(request) + + try: + signature = request.get_parameter('oauth_signature') + except: + raise MissingSignature('Missing oauth_signature.') + + # Validate the signature. + valid = signature_method.check(request, consumer, token, signature) + + if not valid: + key, base = signature_method.signing_base(request, consumer, token) + + raise Error('Invalid signature. Expected signature base ' + 'string: %s' % base) + + def _check_timestamp(self, timestamp): + """Verify that timestamp is recentish.""" + timestamp = int(timestamp) + now = int(time.time()) + lapsed = now - timestamp + if lapsed > self.timestamp_threshold: + raise Error('Expired timestamp: given %d and now %s has a ' + 'greater difference than threshold %d' % (timestamp, now, + self.timestamp_threshold)) + + +class SignatureMethod(object): + """A way of signing requests. + + The OAuth protocol lets consumers and service providers pick a way to sign + requests. This interface shows the methods expected by the other `oauth` + modules for signing requests. Subclass it and implement its methods to + provide a new way to sign requests. + """ + + def signing_base(self, request, consumer, token): + """Calculates the string that needs to be signed. + + This method returns a 2-tuple containing the starting key for the + signing and the message to be signed. The latter may be used in error + messages to help clients debug their software. + + """ + raise NotImplementedError + + def sign(self, request, consumer, token): + """Returns the signature for the given request, based on the consumer + and token also provided. + + You should use your implementation of `signing_base()` to build the + message to sign. Otherwise it may be less useful for debugging. + + """ + raise NotImplementedError + + def check(self, request, consumer, token, signature): + """Returns whether the given signature is the correct signature for + the given consumer and token signing the given request.""" + built = self.sign(request, consumer, token) + return built == signature + + +class SignatureMethod_HMAC_SHA1(SignatureMethod): + name = 'HMAC-SHA1' + + def signing_base(self, request, consumer, token): + if not hasattr(request, 'normalized_url') or request.normalized_url is None: + raise ValueError("Base URL for request is not set.") + + sig = ( + escape(request.method), + escape(request.normalized_url), + escape(request.get_normalized_parameters()), + ) + + key = '%s&' % escape(consumer.secret) + if token: + key += escape(token.secret) + raw = '&'.join(sig) + return key, raw + + def sign(self, request, consumer, token): + """Builds the base signature string.""" + key, raw = self.signing_base(request, consumer, token) + + hashed = hmac.new(key, raw, sha) + + # Calculate the digest base 64. + return binascii.b2a_base64(hashed.digest())[:-1] + + +class SignatureMethod_PLAINTEXT(SignatureMethod): + + name = 'PLAINTEXT' + + def signing_base(self, request, consumer, token): + """Concatenates the consumer key and secret with the token's + secret.""" + sig = '%s&' % escape(consumer.secret) + if token: + sig = sig + escape(token.secret) + return sig, sig + + def sign(self, request, consumer, token): + key, raw = self.signing_base(request, consumer, token) + return raw diff --git a/stashboard/contrib/oauth2/_version.py b/stashboard/contrib/oauth2/_version.py new file mode 100755 index 00000000..7df3e6f9 --- /dev/null +++ b/stashboard/contrib/oauth2/_version.py @@ -0,0 +1,18 @@ +# This is the version of this source code. + +manual_verstr = "1.5" + + + +auto_build_num = "169" + + + +verstr = manual_verstr + "." + auto_build_num +try: + from pyutil.version_class import Version as pyutil_Version + __version__ = pyutil_Version(verstr) +except (ImportError, ValueError): + # Maybe there is no pyutil installed. + from distutils.version import LooseVersion as distutils_Version + __version__ = distutils_Version(verstr) diff --git a/utils/django_libs/__init__.py b/stashboard/contrib/oauth2/clients/__init__.py similarity index 100% rename from utils/django_libs/__init__.py rename to stashboard/contrib/oauth2/clients/__init__.py diff --git a/utils/external/oauth2/clients/imap.py b/stashboard/contrib/oauth2/clients/imap.py similarity index 100% rename from utils/external/oauth2/clients/imap.py rename to stashboard/contrib/oauth2/clients/imap.py diff --git a/utils/external/oauth2/clients/smtp.py b/stashboard/contrib/oauth2/clients/smtp.py similarity index 100% rename from utils/external/oauth2/clients/smtp.py rename to stashboard/contrib/oauth2/clients/smtp.py diff --git a/utils/external/status_images.py b/stashboard/contrib/status_images.py similarity index 100% rename from utils/external/status_images.py rename to stashboard/contrib/status_images.py diff --git a/stashboard/cron.yaml b/stashboard/cron.yaml new file mode 100644 index 00000000..c521abd3 --- /dev/null +++ b/stashboard/cron.yaml @@ -0,0 +1,4 @@ +cron: +- description: daily task to clean the frontpage + url: /admin/tasks/invalidate-cache + schedule: every day 00:01 diff --git a/stashboard/fixtures/images.json b/stashboard/fixtures/images.json new file mode 100644 index 00000000..d94da9b2 --- /dev/null +++ b/stashboard/fixtures/images.json @@ -0,0 +1,562 @@ +[ + { + "url": "icons/fugue/broom.png", + "set": "fugue", + "name": "broom" + }, + { + "url": "icons/fugue/bug.png", + "set": "fugue", + "name": "bug" + }, + { + "url": "icons/fugue/clock.png", + "set": "fugue", + "name": "clock" + }, + { + "url": "icons/fugue/cross-circle.png", + "set": "fugue", + "name": "cross-circle" + }, + { + "url": "icons/fugue/exclamation.png", + "set": "fugue", + "name": "exclamation" + }, + { + "url": "icons/fugue/flag.png", + "set": "fugue", + "name": "flag" + }, + { + "url": "icons/fugue/hard-hat.png", + "set": "fugue", + "name": "hard-hat" + }, + { + "url": "icons/fugue/heart.png", + "set": "fugue", + "name": "heart" + }, + { + "url": "icons/fugue/information-small.png", + "set": "fugue", + "name": "information-small" + }, + { + "url": "icons/fugue/information-white.png", + "set": "fugue", + "name": "information-white" + }, + { + "url": "icons/fugue/information.png", + "set": "fugue", + "name": "information" + }, + { + "url": "icons/fugue/lock.png", + "set": "fugue", + "name": "lock" + }, + { + "url": "icons/fugue/plug.png", + "set": "fugue", + "name": "plug" + }, + { + "url": "icons/fugue/plus-circle.png", + "set": "fugue", + "name": "plus-circle" + }, + { + "url": "icons/fugue/question-white.png", + "set": "fugue", + "name": "question-white" + }, + { + "url": "icons/fugue/question.png", + "set": "fugue", + "name": "question" + }, + { + "url": "icons/fugue/tick-circle.png", + "set": "fugue", + "name": "tick-circle" + }, + { + "url": "icons/fugue/traffic-cone.png", + "set": "fugue", + "name": "traffic-cone" + }, + { + "url": "icons/fugue/wrench.png", + "set": "fugue", + "name": "wrench" + }, + { + "url": "icons/iconic/arrow_down.png", + "set": "iconic", + "name": "arrow_down" + }, + { + "url": "icons/iconic/arrow_down_alt1.png", + "set": "iconic", + "name": "arrow_down_alt1" + }, + { + "url": "icons/iconic/arrow_down_alt2.png", + "set": "iconic", + "name": "arrow_down_alt2" + }, + { + "url": "icons/iconic/arrow_left.png", + "set": "iconic", + "name": "arrow_left" + }, + { + "url": "icons/iconic/arrow_left_alt1.png", + "set": "iconic", + "name": "arrow_left_alt1" + }, + { + "url": "icons/iconic/arrow_left_alt2.png", + "set": "iconic", + "name": "arrow_left_alt2" + }, + { + "url": "icons/iconic/arrow_right.png", + "set": "iconic", + "name": "arrow_right" + }, + { + "url": "icons/iconic/arrow_right_alt1.png", + "set": "iconic", + "name": "arrow_right_alt1" + }, + { + "url": "icons/iconic/arrow_right_alt2.png", + "set": "iconic", + "name": "arrow_right_alt2" + }, + { + "url": "icons/iconic/arrow_up.png", + "set": "iconic", + "name": "arrow_up" + }, + { + "url": "icons/iconic/arrow_up_alt1.png", + "set": "iconic", + "name": "arrow_up_alt1" + }, + { + "url": "icons/iconic/arrow_up_alt2.png", + "set": "iconic", + "name": "arrow_up_alt2" + }, + { + "url": "icons/iconic/article.png", + "set": "iconic", + "name": "article" + }, + { + "url": "icons/iconic/at.png", + "set": "iconic", + "name": "at" + }, + { + "url": "icons/iconic/bolt.png", + "set": "iconic", + "name": "bolt" + }, + { + "url": "icons/iconic/book.png", + "set": "iconic", + "name": "book" + }, + { + "url": "icons/iconic/book_alt.png", + "set": "iconic", + "name": "book_alt" + }, + { + "url": "icons/iconic/box.png", + "set": "iconic", + "name": "box" + }, + { + "url": "icons/iconic/calendar.png", + "set": "iconic", + "name": "calendar" + }, + { + "url": "icons/iconic/calendar_alt_fill.png", + "set": "iconic", + "name": "calendar_alt_fill" + }, + { + "url": "icons/iconic/calendar_alt_stroke.png", + "set": "iconic", + "name": "calendar_alt_stroke" + }, + { + "url": "icons/iconic/cd.png", + "set": "iconic", + "name": "cd" + }, + { + "url": "icons/iconic/chat.png", + "set": "iconic", + "name": "chat" + }, + { + "url": "icons/iconic/chat_alt_fill.png", + "set": "iconic", + "name": "chat_alt_fill" + }, + { + "url": "icons/iconic/chat_alt_stroke.png", + "set": "iconic", + "name": "chat_alt_stroke" + }, + { + "url": "icons/iconic/check_alt.png", + "set": "iconic", + "name": "check_alt" + }, + { + "url": "icons/iconic/clock.png", + "set": "iconic", + "name": "clock_alt" + }, + { + "url": "icons/iconic/cog.png", + "set": "iconic", + "name": "cog" + }, + { + "url": "icons/iconic/cog_alt.png", + "set": "iconic", + "name": "cog_alt" + }, + { + "url": "icons/iconic/comment_alt1_fill.png", + "set": "iconic", + "name": "comment_alt1_fill" + }, + { + "url": "icons/iconic/comment_alt1_stroke.png", + "set": "iconic", + "name": "comment_alt1_stroke" + }, + { + "url": "icons/iconic/compass.png", + "set": "iconic", + "name": "compass" + }, + { + "url": "icons/iconic/cursor.png", + "set": "iconic", + "name": "cursor" + }, + { + "url": "icons/iconic/denied.png", + "set": "iconic", + "name": "denied" + }, + { + "url": "icons/iconic/denied_alt.png", + "set": "iconic", + "name": "denied_alt" + }, + { + "url": "icons/iconic/dial.png", + "set": "iconic", + "name": "dial" + }, + { + "url": "icons/iconic/document_fill.png", + "set": "iconic", + "name": "document_fill" + }, + { + "url": "icons/iconic/document_stroke.png", + "set": "iconic", + "name": "document_stroke" + }, + { + "url": "icons/iconic/eject.png", + "set": "iconic", + "name": "eject" + }, + { + "url": "icons/iconic/equalizer.png", + "set": "iconic", + "name": "equalizer" + }, + { + "url": "icons/iconic/eyedropper.png", + "set": "iconic", + "name": "eyedropper" + }, + { + "url": "icons/iconic/first.png", + "set": "iconic", + "name": "first" + }, + { + "url": "icons/iconic/folder_fill.png", + "set": "iconic", + "name": "folder_fill" + }, + { + "url": "icons/iconic/folder_stroke.png", + "set": "iconic", + "name": "folder_stroke" + }, + { + "url": "icons/iconic/fullscreen.png", + "set": "iconic", + "name": "fullscreen" + }, + { + "url": "icons/iconic/fullscreen_alt.png", + "set": "iconic", + "name": "fullscreen_alt" + }, + { + "url": "icons/iconic/fullscreen_exit.png", + "set": "iconic", + "name": "fullscreen_exit" + }, + { + "url": "icons/iconic/fullscreen_exit_alt.png", + "set": "iconic", + "name": "fullscreen_exit_alt" + }, + { + "url": "icons/iconic/home.png", + "set": "iconic", + "name": "home" + }, + { + "url": "icons/iconic/image.png", + "set": "iconic", + "name": "image" + }, + { + "url": "icons/iconic/key_fill.png", + "set": "iconic", + "name": "key_fill" + }, + { + "url": "icons/iconic/key_stroke.png", + "set": "iconic", + "name": "key_stroke" + }, + { + "url": "icons/iconic/last.png", + "set": "iconic", + "name": "last" + }, + { + "url": "icons/iconic/left_quote.png", + "set": "iconic", + "name": "left_quote" + }, + { + "url": "icons/iconic/left_quote_alt.png", + "set": "iconic", + "name": "left_quote_alt" + }, + { + "url": "icons/iconic/link.png", + "set": "iconic", + "name": "link" + }, + { + "url": "icons/iconic/loop.png", + "set": "iconic", + "name": "loop" + }, + { + "url": "icons/iconic/magnifying_glass.png", + "set": "iconic", + "name": "magnifying_glass" + }, + { + "url": "icons/iconic/magnifying_glass_alt.png", + "set": "iconic", + "name": "magnifying_glass_alt" + }, + { + "url": "icons/iconic/map_pin_fill.png", + "set": "iconic", + "name": "map_pin_fill" + }, + { + "url": "icons/iconic/map_pin_stroke.png", + "set": "iconic", + "name": "map_pin_stroke" + }, + { + "url": "icons/iconic/minus_alt.png", + "set": "iconic", + "name": "minus_alt" + }, + { + "url": "icons/iconic/moon_fill.png", + "set": "iconic", + "name": "moon_fill" + }, + { + "url": "icons/iconic/moon_stroke.png", + "set": "iconic", + "name": "moon_stroke" + }, + { + "url": "icons/iconic/move.png", + "set": "iconic", + "name": "move" + }, + { + "url": "icons/iconic/move_alt1.png", + "set": "iconic", + "name": "move_alt1" + }, + { + "url": "icons/iconic/move_alt2.png", + "set": "iconic", + "name": "move_alt2" + }, + { + "url": "icons/iconic/move_horizontal_alt2.png", + "set": "iconic", + "name": "move_horizontal_alt2" + }, + { + "url": "icons/iconic/move_vertical_alt2.png", + "set": "iconic", + "name": "move_vertical_alt2" + }, + { + "url": "icons/iconic/movie.png", + "set": "iconic", + "name": "movie" + }, + { + "url": "icons/iconic/new_window.png", + "set": "iconic", + "name": "new_window" + }, + { + "url": "icons/iconic/pen.png", + "set": "iconic", + "name": "pen" + }, + { + "url": "icons/iconic/pen_alt_fill.png", + "set": "iconic", + "name": "pen_alt_fill" + }, + { + "url": "icons/iconic/pen_alt_stroke.png", + "set": "iconic", + "name": "pen_alt_stroke" + }, + { + "url": "icons/iconic/pin.png", + "set": "iconic", + "name": "pin" + }, + { + "url": "icons/iconic/play_alt.png", + "set": "iconic", + "name": "play_alt" + }, + { + "url": "icons/iconic/plus.png", + "set": "iconic", + "name": "plus" + }, + { + "url": "icons/iconic/plus_alt.png", + "set": "iconic", + "name": "plus_alt" + }, + { + "url": "icons/iconic/read_more.png", + "set": "iconic", + "name": "read_more" + }, + { + "url": "icons/iconic/right_quote.png", + "set": "iconic", + "name": "right_quote" + }, + { + "url": "icons/iconic/right_quote_alt.png", + "set": "iconic", + "name": "right_quote_alt" + }, + { + "url": "icons/iconic/rss.png", + "set": "iconic", + "name": "rss" + }, + { + "url": "icons/iconic/rss_alt.png", + "set": "iconic", + "name": "rss_alt" + }, + { + "url": "icons/iconic/spin_alt.png", + "set": "iconic", + "name": "spin_alt" + }, + { + "url": "icons/iconic/star.png", + "set": "iconic", + "name": "star" + }, + { + "url": "icons/iconic/stop.png", + "set": "iconic", + "name": "stop" + }, + { + "url": "icons/iconic/sun.png", + "set": "iconic", + "name": "sun" + }, + { + "url": "icons/iconic/tag_fill.png", + "set": "iconic", + "name": "tag_fill" + }, + { + "url": "icons/iconic/tag_stroke.png", + "set": "iconic", + "name": "tag_stroke" + }, + { + "url": "icons/iconic/trash_fill.png", + "set": "iconic", + "name": "trash_fill" + }, + { + "url": "icons/iconic/trash_stroke.png", + "set": "iconic", + "name": "trash_stroke" + }, + { + "url": "icons/iconic/undo.png", + "set": "iconic", + "name": "undo" + }, + { + "url": "icons/iconic/x_alt.png", + "set": "iconic", + "name": "x_alt" + } +] diff --git a/stashboard/fixtures/statuses.json b/stashboard/fixtures/statuses.json new file mode 100644 index 00000000..69312080 --- /dev/null +++ b/stashboard/fixtures/statuses.json @@ -0,0 +1,12 @@ +[ + { + "url": "icons/fugue/broom.png", + "set": "fugue", + "name": "broom" + }, + { + "url": "icons/fugue/bug.png", + "set": "fugue", + "name": "bug" + } +] \ No newline at end of file diff --git a/stashboard/handlers/__init__.py b/stashboard/handlers/__init__.py new file mode 100755 index 00000000..ca1af43b --- /dev/null +++ b/stashboard/handlers/__init__.py @@ -0,0 +1,14 @@ +class Migration(object): + """App Engine data migration + + The timestamp is used to order migrations. No output is shown to the + user, so make liberal use logging. + + Before running a migration on produciton data, download portitions of + real data into an sample application using the bulk exporter + """ + timestamp = None + + def run(self): + """Run the migration """ + pass diff --git a/stashboard/handlers/admin.py b/stashboard/handlers/admin.py new file mode 100644 index 00000000..9a1ee8fb --- /dev/null +++ b/stashboard/handlers/admin.py @@ -0,0 +1,371 @@ +import cgi +import logging +import oauth2 as oauth +import os +import migrations +from django.conf import settings +from google.appengine.api import memcache +from google.appengine.api import taskqueue +from google.appengine.api import users +from google.appengine.ext import db +from handlers import api +from handlers import site +from models import Service, Status, Event, Image, Profile +from utils import slugify + + +def default_template_data(): + td = site.default_template_data() + td["title"] = td["title"] + " Admin" + return td + + +class RootHandler(site.BaseHandler): + + def get(self): + self.redirect("/admin/services") + + +class SetupHandler(site.BaseHandler): + + def get(self): + self.render(default_template_data(), 'admin/setup.html') + + def post(self): + Status.load_defaults() + Image.load_defaults() + api.invalidate_cache() + self.redirect("/admin") + + +class ServiceHandler(site.BaseHandler): + + def get(self): + td = default_template_data() + td["services_selected"] = True + td["services"] = Service.all().order("name").fetch(1000) + self.render(td, 'admin/services.html') + + +class ServiceInstanceHandler(site.BaseHandler): + + def get(self, slug): + service = Service.get_by_slug(slug) + if service: + td = default_template_data() + td["services_selected"] = True + td["service"] = service + td["events"] = service.events.order("-start").fetch(1000) + self.render(td, 'admin/services_instance.html') + else: + self.not_found() + + +class DeleteServiceHandler(site.BaseHandler): + + def get(self, slug): + service = Service.get_by_slug(slug) + if not service: + self.not_found() + return + + td = { + "services_selected": True, + "url": "/admin/api/v1/services/" + slug, + "description": service.description, + "name": service.name, + "slug": service.slug, + } + + td.update(site.default_template_data()) + self.render(td, 'admin/services_delete.html') + +class EditServiceHandler(site.BaseHandler): + + def get(self, slug): + service = Service.get_by_slug(slug) + if not service: + self.not_found() + return + + td = { + "services_selected": True, + "url": "/admin/api/v1/services/" + slug, + "description": service.description, + "slug": service.slug, + "name": service.name, + "action": "edit", + } + + td.update(site.default_template_data()) + self.render(td, 'admin/services_create.html') + + +class CreateServiceHandler(site.BaseHandler): + + def get(self): + td = { + "services_selected": True, + "url": "/admin/api/v1/services", + "action": "create", + } + + td.update(site.default_template_data()) + self.render(td, 'admin/services_create.html') + + +class UpdateStatusHandler(site.BaseHandler): + + def get(self, slug): + service = Service.get_by_slug(slug) + if not service: + self.not_found() + return + + td = { + "services_selected": True, + "service": service, + "statuses": Status.all().fetch(100), + } + + td.update(site.default_template_data()) + self.render(td, 'admin/events_create.html') + +class NoteHandler(site.BaseHandler): + + def get(self, slug): + service = Service.get_by_slug(slug) + if not service: + self.not_found() + return + + td = { + "services_selected": True, + "service": service, + } + + td.update(site.default_template_data()) + self.render(td, 'admin/events_note.html') + + +class DeleteEventHandler(site.BaseHandler): + + def get(self, slug, key_str): + service = Service.get_by_slug(slug) + event = db.get(key_str) + if not service or not isinstance(event, Event): + self.not_found() + return + + td = { + "services_selected": True, + "service": service, + "event": event, + } + + td.update(site.default_template_data()) + self.render(td, 'admin/events_delete.html') + +class EditStatusHandler(site.BaseHandler): + + def get(self, slug): + status = Status.get_by_slug(slug) + if not status: + self.not_found() + return + + td = { + "statuses_selected": True, + "status": status, + "action": "edit", + "url": "/admin/api/v1/statuses/" + slug, + "description": status.description, + "name": status.name, + "image_url": status.image, + "images": Image.all().fetch(200), + "default": status.default, + } + + td.update(site.default_template_data()) + self.render(td, 'admin/status_edit.html') + + +class DeleteStatusHandler(site.BaseHandler): + + def get(self, slug): + status = Status.get_by_slug(slug) + if not status: + self.not_found() + return + + td = { + "statuses_selected": True, + "status": status, + } + + td.update(site.default_template_data()) + self.render(td, 'admin/status_delete.html') + + +class StatusHandler(site.BaseHandler): + + def get(self): + td = default_template_data() + td["statuses_selected"] = True + td["statuses"] = Status.all().order("name").fetch(1000) + self.render(td, 'admin/status.html') + + +class CreateStatusHandler(site.BaseHandler): + + def get(self): + td = { + "statuses_selected": True, + "action": "create", + "url": "/admin/api/v1/statuses", + "images": Image.all().fetch(200), + } + + td.update(site.default_template_data()) + self.render(td, 'admin/status_create.html') + + +class MigrationStarter(site.BaseHandler): + + def post(self, key): + migration = migrations.find(key) + migration().run() + + +class MigrationHandler(site.BaseHandler): + + def get(self): + td = default_template_data() + td["migrations"] = migrations.all() + self.render(td, "admin/migrations.html") + + def post(self): + migration = self.request.get("migration", None) + + if migration is None: + self.error(400) + return + + taskqueue.add(url="/admin/migrations/%s" % migration) + + td = default_template_data() + td["migrations"] = migrations.all() + td["notice"] = "Migration %s started. Check the logs for output" % migration + self.render(td, "admin/migrations.html") + + +class CredentialHandler(site.BaseHandler): + + def get(self): + + user = users.get_current_user() + profile = Profile.all().filter('owner = ', user).get() + + td = default_template_data() + td["credentials_selected"] = True + td["consumer_key"] = settings.CONSUMER_KEY + td["consumer_secret"] = settings.CONSUMER_SECRET + + if os.environ['SERVER_SOFTWARE'].startswith('Development'): + td["authorized"] = True + td["oauth_token"] = "ACCESS_TOKEN" + td["oauth_token_secret"] = "ACCESS_TOKEN_SECRET" + elif profile: + td["authorized"] = True + td["oauth_token"] = profile.token + td["oauth_token_secret"] = profile.secret + else: + td["authorized"] = False + + self.render(td, 'admin/credentials.html') + return + + +class OAuthRequestHandler(site.BaseHandler): + + def get(self): + user = users.get_current_user() + host = self.request.headers.get('host', 'nohost') + consumer_key = settings.CONSUMER_KEY + consumer_secret = settings.CONSUMER_SECRET + + callback = 'https://%s/admin/oauth/verify' % host + request_token_url = ('https://%s/_ah/OAuthGetRequestToken?' + 'oauth_callback=%s' % (host, callback)) + authorize_url = 'https://%s/_ah/OAuthAuthorizeToken' % host + + consumer = oauth.Consumer(consumer_key, consumer_secret) + client = oauth.Client(consumer) + + resp, content = client.request(request_token_url, "GET") + + if resp['status'] != '200': + self.error(400) + self.response.out.write("Getting Request Token failed") + return + + request_token = dict(cgi.parse_qsl(content)) + token = request_token['oauth_token_secret'] + + if not memcache.set("oauth_token", token, namespace=user.email()): + logging.error("Memcache set failed on oauth_token") + + oauth_url = ("%s?oauth_token=%s" % + (authorize_url, request_token['oauth_token'])) + + self.redirect(oauth_url) + + +class OAuthVerifyHandler(site.BaseHandler): + + def get(self): + oauth_token = self.request.get('oauth_token', default_value=None) + oauth_verifier = self.request.get('oauth_verifier', default_value=None) + user = users.get_current_user() + request_secret = memcache.get("oauth_token", namespace=user.email()) + + if not oauth_token or not oauth_verifier or not request_secret: + self.error(400) + self.response.out.write("Missing data") + return + + host = self.request.headers.get('host', 'nohost') + access_token_url = 'https://%s/_ah/OAuthGetAccessToken' % host + + consumer_key = settings.CONSUMER_KEY + consumer_secret = settings.CONSUMER_SECRET + consumer = oauth.Consumer(consumer_key, consumer_secret) + token = oauth.Token(oauth_token, request_secret) + token.set_verifier(oauth_verifier) + + client = oauth.Client(consumer, token) + + resp, content = client.request(access_token_url, "POST") + + if resp['status'] != '200': + self.error(400) + logging.error("Authorization failed!") + return + + access_token = dict(cgi.parse_qsl(content)) + + profile = Profile( + owner=user, + token=access_token['oauth_token'], + secret=access_token['oauth_token_secret'] + ) + profile.put() + + self.redirect("/admin/credentials") + + +class InvalidateCacheHandler(site.BaseHandler): + + def get(self): + api.invalidate_cache() + self.response.out.write("Success") diff --git a/stashboard/handlers/api.py b/stashboard/handlers/api.py new file mode 100644 index 00000000..33b4df2e --- /dev/null +++ b/stashboard/handlers/api.py @@ -0,0 +1,511 @@ +# The MIT License +# +# Copyright (c) 2008 William T. Katz +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +"""A simple RESTful status framework on Google App Engine + +This app's API should be reasonably clean and easily targeted by other +clients, like a Flex app or a desktop program. +""" + +__author__ = 'Kyle Conroy' + +import string +import re +import os +import cgi +import urllib +import logging + +from datetime import timedelta +from datetime import date +from datetime import datetime +from datetime import time +from dateutil.parser import parse +from google.appengine.api import memcache +from google.appengine.api import datastore_errors +from google.appengine.api import taskqueue +from google.appengine.api import users +from google.appengine.ext import webapp +from google.appengine.ext import db +from handlers import restful +from time import mktime +from utils import authorized +from utils import slugify +from models import Status, Event, Service, Image +from wsgiref.handlers import format_date_time + + +def invalidate_cache(): + if not memcache.delete("frontpage"): + logging.error("Memcache delete failed on frontpage") + taskqueue.add(url='/', method="GET") + + +def aware_to_naive(d): + """Convert an aware date to an naive date, in UTC""" + offset = d.utcoffset() + if offset: + d = d.replace(tzinfo=None) + d = d - offset + return d + + +class NotFoundHandler(restful.Controller): + def get(self): + self.error(404, "Can't find resouce") + + +class ServicesListHandler(restful.Controller): + + def get(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + query = Service.all().order('name') + data = [s.rest(self.base_url(version)) for s in query] + data = {"services": data} + self.json(data) + + @authorized.api("admin") + def post(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + name = self.request.get('name', default_value=None) + description = self.request.get('description', default_value=None) + + if not name or not description: + self.error(400, "Bad Data: Name: %s, Description: %s" \ + % (name, description)) + return + + slug = slugify.slugify(name) + existing_s = Service.get_by_slug(slug) + + if existing_s: + self.error(404, "A sevice with this name already exists") + return + + s = Service(name=name, slug=slug, description=description) + s.put() + + invalidate_cache() + + self.response.set_status(201) + self.json(s.rest(self.base_url(version))) + + +class ServiceInstanceHandler(restful.Controller): + + def get(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s does not exist" % service_slug) + return + + self.json(service.rest(self.base_url(version))) + + @authorized.api("admin") + def post(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + if not service: + self.error(404, "Service %s does not exist" % service_slug) + return + + name = self.request.get('name', default_value=None) + description = self.request.get('description', default_value=None) + + if description: + service.description = description + + if name: + service.name = name + + if name or description: + invalidate_cache() + service.put() + + self.json(service.rest(self.base_url(version))) + + @authorized.api("admin") + def delete(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + query = Event.all() + query.filter('service =', service) + if query: + for e in query: + e.delete() + + invalidate_cache() + service.delete() + self.json(service.rest(self.base_url(version))) + + +class EventsListHandler(restful.Controller): + def get(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + start = self.request.get('start', default_value=None) + end = self.request.get('end', default_value=None) + + query = Event.all() + query.filter('service =', service) + + if start: + try: + _start = aware_to_naive(parse(start)) + query.filter("start >= ", _start) + except: + self.error(400, "Invalid Date: %s" % start) + return + + if end: + try: + _end = aware_to_naive(parse(end)) + query.filter("start <=", _end) + except: + self.error(400, "Invalid Date: %s" % end) + return + + query.order('-start') + + data = [s.rest(self.base_url(version)) for s in query] + self.json({"events": data}) + + @authorized.api("admin") + def post(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + status_slug = self.request.get("status", default_value=None) + message = self.request.get("message", default_value=None) + informational = self.request.get("informational", default_value=None) + + if not message: + self.error(400, "Event message is required") + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + if not status_slug: + event = service.current_event() + if event: + status = event.status + else: + status = Status.get_default() + else: + status = Status.get_by_slug(status_slug) + + if not status: + self.error(404, "Status %s not found" % status_slug) + return + + e = Event(status=status, service=service, message=message) + e.informational = informational and informational == "true" + e.put() + + invalidate_cache() + self.json(e.rest(self.base_url(version))) + + +class CurrentEventHandler(restful.Controller): + def get(self, version, service_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + event = service.current_event() + + if not event: + self.error(404, "No current event for Service %s" % service_slug) + return + + self.json(event.rest(self.base_url(version))) + + +class EventInstanceHandler(restful.Controller): + def get(self, version, service_slug, sid): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + try: + event = Event.get(db.Key(sid)) + except datastore_errors.BadKeyError: + self.error(404, "Event %s not found" % sid) + return + + if not event or service.key() != event.service.key(): + self.error(404, "No event for Service %s with sid = %s" \ + % (service_slug, sid)) + return + + self.json(event.rest(self.base_url(version))) + + @authorized.api("admin") + def delete(self, version, service_slug, sid): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + service = Service.get_by_slug(service_slug) + + if not service: + self.error(404, "Service %s not found" % service_slug) + return + + + try: + event = Event.get(db.Key(sid)) + except datastore_errors.BadKeyError: + self.error(404, "Event %s not found" % sid) + return + + if not event or service.key() != event.service.key(): + self.error(404, "No event for Service %s with sid = %s" \ + % (service_slug, sid)) + return + + event.delete() + invalidate_cache() + + # Why not JSON? + self.success(event.rest(self.base_url(version))) + + +class StatusesListHandler(restful.Controller): + def get(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + query = Status.all().order('name') + + data = [s.rest(self.base_url(version)) for s in query] + self.json({"statuses": data}) + + @authorized.api("admin") + def post(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + name = self.request.get('name', default_value=None) + description = self.request.get('description', default_value=None) + image_slug = self.request.get('image', default_value=None) + default = self.request.get('default', default_value="false") + + if default not in ["true", "false"]: + self.error(400, "Default must be true or false") + return + + if not name or not description or not image_slug: + self.error(400, "Bad Data") + return + + slug = slugify.slugify(name) + status = Status.get_by_slug(slug) + image = Image.get_by_slug(image_slug) + + if status is not None: + self.error(400, "A Status with the slug %s already exists" % slug) + return + + if image is None: + msg = "An Image with the slug %s doesn't exist" % image_slug + self.error(400, msg) + return + + # Reset default status + if default == "true": + for stat in Status.all().filter("default", True): + stat.default = False + stat.put() + + default = default == "true" + status = Status(name=name, slug=slug, description=description, + image=image.path, default=default) + status.put() + invalidate_cache() + + self.response.set_status(201) + self.json(status.rest(self.base_url(version))) + + +class StatusInstanceHandler(restful.Controller): + def get(self, version, status_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + status = Status.get_by_slug(status_slug) + + if not status: + self.error(404, "No status with the slug %s found" % status_slug) + return + + self.json(status.rest(self.base_url(version))) + + @authorized.api("admin") + def post(self, version, status_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + status = Status.get_by_slug(status_slug) + + if not status: + self.error(404, "No status with the slug %s found" % status_slug) + return + + name = self.request.get('name', default_value=None) + image_slug = self.request.get('image', default_value=None) + image = None + default = self.request.get('default', default_value=None) + description = self.request.get('description', default_value=None) + + if image_slug is not None: + image = Image.get_by_slug(image_slug) + + if image is None: + self.error(400, "An Image with the " + "slug %s doesn't exist" % image_slug) + return + + status.image = image.path + + if description is not None: + status.description = description + + if default is not None and default in ["false", "true"]: + + # Reset default status + if default == "true": + for stat in Status.all().filter("default", True): + stat.default = False + stat.put() + + status.default = default == "true" + + if name is not None: + status.name = name + + if description or name or image or default: + status.put() + invalidate_cache() + + self.json(status.rest(self.base_url(version))) + + @authorized.api("admin") + def delete(self, version, status_slug): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + status = Status.get_by_slug(status_slug) + + if not status: + self.error(404, "Status %s not found" % status_slug) + return + + # We may want to think more about this + events = Event.all().filter('status =', status).fetch(1000) + for event in events: + event.delete() + + status.delete() + self.json(status.rest(self.base_url(version))) + + +class LevelListHandler(restful.Controller): + + def get(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + self.json({"levels": ["NORMAL", "WARNING", "ERROR", "CRITICAL"]}) + + +class ImagesListHandler(restful.Controller): + def get(self, version): + if not self.valid_version(version): + self.error(404, "API Version %s not supported" % version) + return + + host = self.request.headers.get('host', 'nohost') + images = [] + + for img in Image.all().fetch(1000): + image = { + "url": "http://" + host + "/images/" + img.path, + "icon_set": img.icon_set, + "name": img.slug, + } + images.append(image) + + self.json({"images": images}) diff --git a/handlers/restful.py b/stashboard/handlers/restful.py similarity index 84% rename from handlers/restful.py rename to stashboard/handlers/restful.py index 7761bd33..f3fe58cb 100755 --- a/handlers/restful.py +++ b/stashboard/handlers/restful.py @@ -1,48 +1,32 @@ # The MIT License -# +# # Copyright (c) 2008 William T. Katz -# +# # Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: -# +# # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. -""" -RESTful Controller - -We want our RESTful controllers to simply throw up their hands if they get -an unhandled HTTP verb. This is better for rich clients and server load -than throwing back lots of useless HTML. - -These inherited methods should be overridden if there's a chance a human -browser is involved. - -TODO: Return more information HTTP status codes that won't autotrip -browser login forms. For example, return status 405 (Method not allowed) -with an Allow header containing the list of valid methods. -""" __author__ = 'William T. Katz' from google.appengine.ext import webapp from google.appengine.ext.webapp import template -import jsonpickle +from django.utils import simplejson as json import logging import os -import config -import cgi # Some useful module methods def send_successful_response(handler, response): @@ -52,7 +36,7 @@ def send_successful_response(handler, response): def get_sent_properties(request_func, propname_list): """ - This maps request strings to values in a hash, optionally run through + This maps request strings to values in a hash, optionally run through a function with previous request values as parameters to the func. 1) key -> just read in the corresponding request value 2) tuple (key, func) -> Read the request value for the string key @@ -127,76 +111,95 @@ def redirect_if_needed(self, *args, **kwargs): else: handler_method(self, *args, **kwargs) return redirect_if_needed - + + class Controller(webapp.RequestHandler): """Responsible for handling all API requests""" + @classmethod + def readonly(cls): + class ReadOnlyHandler(Controller): + + def post(self, *args): + self.error(405, "Method not supported") + + def put(self, *args): + self.error(405, "Method not supported") + + def delete(self, *args): + self.error(405, "Method not supported") + + class ServiceListHandlerReadOnly(ReadOnlyHandler, cls): + pass + + return ServiceListHandlerReadOnly + def base_url(self, version): "Returns the base url for the given host and version" host = self.request.headers.get('host', 'nohost') return self.request.scheme + "://" + host + "/api/" + version - + def valid_version(self, version): return version == "v1" - + def error(self, code, message=None): "Returns the JSON representation of an error message" self.response.set_status(code) - + error = { "error": True, "code": code} if (message): error["message"] = message - + self.json(error) - + def success(self, message=None): "Returns the JSON representation of a success message" self.response.set_status(200) - + success = { "error": False, "code": 200} if (message): success["message"] = message - + self.json(success) - - + + def get(self, *params): self.redirect("/.html") def head(self, *params): pass - + def render(self, templateparams, *args): "Writes templateparams to a given template" - path = config.SITE["template_path"] + path = "" for p in args: path = os.path.join(path, p) - + self.response.out.write(template.render(path, templateparams)) - + def json(self, data): """ - Renders the given data as json. + Renders the given data as json. If callback is valid, renders data as jsonp """ - callback = self.request.get('callback', default_value=None) - - data = cgi.escape(jsonpickle.encode(data)) - + callback = self.request.get('callback', default_value=False) + + data = json.dumps(data) + if callback: - self.response.headers.add_header("Content-Type", "application/javascript") + self.response.headers['Content-Type'] = "application/javascript" data = callback + "(" + data + ");" else: - self.response.headers.add_header("Content-Type", "application/json") - + self.response.headers['Content-Type'] = "application/json" + self.response.out.write(data) - + def text(self, data): "Renders the given data as text/plain" self.response.headers.add_header("Content-Type", "text/plain") self.response.out.write(data) - + def xml(self, data): """ Renders the given data as XML diff --git a/stashboard/handlers/site.py b/stashboard/handlers/site.py new file mode 100644 index 00000000..7d2e38d4 --- /dev/null +++ b/stashboard/handlers/site.py @@ -0,0 +1,209 @@ +# The MIT License +# +# Copyright (c) 2008 William T. Katz +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +__author__ = 'Kyle Conroy' + +import datetime +import calendar +import logging +import os +import re +import string +import urllib +import urlparse + +from google.appengine.api import memcache +from google.appengine.api import users +from google.appengine.ext import webapp +from google.appengine.ext import db + +from datetime import date, timedelta +from django.conf import settings +from django.template.loader import render_to_string +from django.utils import simplejson as json +from time import mktime +from models import Status, Service, Event, Profile +from utils import authorized +from wsgiref.handlers import format_date_time + + +def default_template_data(): + data = { + "title": settings.SITE_NAME, + "report_url": settings.REPORT_URL, + } + + user = users.get_current_user() + if user is not None: + data["user"] = user + data["logout_url"] = users.create_logout_url("/") + data["admin"] = users.is_current_user_admin() + + return data + + +def get_past_days(num): + date = datetime.date.today() + dates = [] + + for i in range(1, num + 1): + dates.append(date - datetime.timedelta(days=i)) + + return dates + + +class BaseHandler(webapp.RequestHandler): + + def render(self, template_values, filename): + self.response.out.write(render_to_string(filename, template_values)) + + def retrieve(self, key): + """ Helper for loading data from memcache """ + item = memcache.get(key) + if item is not None: + return item + else: + item = self.data() + if not memcache.add(key, item): + logging.error("Memcache set failed on %s" % key) + return item + + def not_found(self): + self.error(404) + self.render(default_template_data(), "404.html") + + +class NotFoundHandler(BaseHandler): + + def get(self): + self.error(404) + self.render(default_template_data(), "404.html") + + +class UnauthorizedHandler(webapp.RequestHandler): + def get(self): + self.error(403) + self.render(default_template_data(), "404.html") + + +class RootHandler(BaseHandler): + + def data(self): + services = [] + default_status = Status.get_default() + + for service in Service.all().order("name").fetch(100): + event = service.current_event() + if event is not None: + status = event.status + else: + status = default_status + + today = date.today() + timedelta(days=1) + current, = service.history(1, default_status, start=today) + has_issues = (current["information"] and + status.key() == default_status.key()) + + service_dict = { + "slug": service.slug, + "name": service.name, + "url": service.url(), + "status": status, + "has_issues": has_issues, + "history": service.history(5, default_status), + } + services.append(service_dict) + + return { + "days": get_past_days(5), + "statuses": Status.all().fetch(100), + "services": services, + } + + def get(self): + td = default_template_data() + td.update(self.retrieve("frontpage")) + #td.update(self.data()) + self.render(td, 'index.html') + + +class ServiceHandler(BaseHandler): + + def get(self, service_slug, year=None, month=None, day=None): + service = Service.get_by_slug(service_slug) + + if not service: + self.not_found() + return + + try: + if day: + start_date = date(int(year), int(month), int(day)) + end_date = start_date + timedelta(days=1) + elif month: + start_date = date(int(year), int(month), 1) + days = calendar.monthrange(start_date.year, + start_date.month)[1] + end_date = start_date + timedelta(days=days) + elif year: + start_date = date(int(year), 1, 1) + end_date = start_date + timedelta(days=365) + else: + start_date = None + end_date = None + except ValueError: + self.not_found(404) + return + + events = service.events + + if start_date and end_date: + events.filter('start >= ', start_date).filter('start <', end_date) + + td = default_template_data() + td["service"] = service + td["events"] = events.order("-start").fetch(500) + + self.render(td, 'service.html') + + +class DocumentationHandler(BaseHandler): + + def get(self, page): + td = default_template_data() + + if page == "overview": + td["overview_selected"] = True + self.render(td, 'overview.html') + elif page == "rest": + td["rest_selected"] = True + self.render(td, 'restapi.html') + elif page == "examples": + td["example_selected"] = True + self.render(td, 'examples.html') + else: + self.render({}, '404.html') + +class CredentialsRedirectHandler(BaseHandler): + + def get(self): + self.redirect("/admin/credentials") diff --git a/index.yaml b/stashboard/index.yaml similarity index 100% rename from index.yaml rename to stashboard/index.yaml diff --git a/stashboard/main.py b/stashboard/main.py new file mode 100755 index 00000000..e39a6f42 --- /dev/null +++ b/stashboard/main.py @@ -0,0 +1,102 @@ +# The MIT License +# +# Copyright (c) 2008 William T. Katz +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + + +__author__ = 'Kyle Conroy' + +import os +import sys +import logging +sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'contrib')) + +import appengine_config # Make sure this happens + +from google.appengine.api import memcache +from google.appengine.api import users +from google.appengine.ext import webapp +from google.appengine.ext.webapp.util import run_wsgi_app +from handlers import site, api, admin + +API = [ + (r'/api/(.+)/levels', api.LevelListHandler), #DEPRECATED + (r'/api/(.+)/services/(.+)/events/current', api.CurrentEventHandler), + (r'/api/(.+)/services/(.+)/events', api.EventsListHandler), + (r'/api/(.+)/services/(.+)/events/(.+)', api.EventInstanceHandler), + (r'/api/(.+)/services/(.+)', api.ServiceInstanceHandler), + (r'/api/(.+)/services', api.ServicesListHandler), + (r'/api/(.+)/statuses/(.+)', api.StatusInstanceHandler), + (r'/api/(.+)/statuses', api.StatusesListHandler), + (r'/api/(.+)/status-images', api.ImagesListHandler), + (r'/api/.*', api.NotFoundHandler), + ] + +SITE = [ + (r'/*$', site.RootHandler), + (r'/403.html', site.UnauthorizedHandler), + (r'/404.html', site.NotFoundHandler), + (r'/services/(.+)/(.+)/(.+)/(.+)', site.ServiceHandler), + (r'/services/(.+)/(.+)/(.+)', site.ServiceHandler), + (r'/services/(.+)/(.+)', site.ServiceHandler), + (r'/services/(.+)', site.ServiceHandler), + (r'/documentation/credentials', site.CredentialsRedirectHandler), + (r'/documentation/(.+)', site.DocumentationHandler), + ] + +ADMIN = [ + #(r'/admin/api', admin.SetupHandler), + (r'/admin/setup', admin.SetupHandler), + (r'/admin/services/create', admin.CreateServiceHandler), + (r'/admin/services/(.*)/events/(.*)/delete', admin.DeleteEventHandler), + (r'/admin/services/(.*)/note/create', admin.NoteHandler), + (r'/admin/services/(.*)/events/create', admin.UpdateStatusHandler), + (r'/admin/services/(.*)/delete', admin.DeleteServiceHandler), + (r'/admin/services/(.*)/edit', admin.EditServiceHandler), + (r'/admin/services/(.*)', admin.ServiceInstanceHandler), + (r'/admin/services', admin.ServiceHandler), + (r'/admin/statuses/(.*)/delete', admin.DeleteStatusHandler), + (r'/admin/statuses/(.*)/edit', admin.EditStatusHandler), + (r'/admin/statuses/create', admin.CreateStatusHandler), + (r'/admin/statuses', admin.StatusHandler), + (r'/admin/migrations/(.*)', admin.MigrationStarter), + (r'/admin/migrations', admin.MigrationHandler), + (r'/admin/credentials', admin.CredentialHandler), + (r'/admin/oauth/authorize', admin.OAuthRequestHandler), + (r'/admin/oauth/verify', admin.OAuthVerifyHandler), + (r'/admin/tasks/invalidate-cache', admin.InvalidateCacheHandler), + (r'/admin', admin.RootHandler), + ] + +ROUTES = [] +ROUTES.extend(SITE) +ROUTES.extend(ADMIN) +ROUTES.extend([ ("/admin" + a[0], a[1]) for a in API ]) +ROUTES.extend([ (a[0], a[1].readonly()) for a in API ]) +ROUTES.append((r'/.*$', site.NotFoundHandler)) + +def application(): + return webapp.WSGIApplication(ROUTES, debug=True) + +def main(): + run_wsgi_app(application()) + +if __name__ == "__main__": + main() diff --git a/stashboard/migrations.py b/stashboard/migrations.py new file mode 100644 index 00000000..c0045e50 --- /dev/null +++ b/stashboard/migrations.py @@ -0,0 +1,106 @@ +import logging +from models import Image +from models import Status + +MIGRATIONS = {} + + +def register(migration): + """ Register a migratin with the runner """ + MIGRATIONS[migration.__name__] = migration + + +def find(migration_name): + """ Return the migration for a given class name + + If no migration found, returns None + + Arguments: + key -- Name of a migration class + + """ + if migration_name in MIGRATIONS: + return MIGRATIONS[migration_name] + else: + return None + + +def all(): + """ Return all registred migrations """ + return MIGRATIONS.values() + + +def clear(): + """ Clear all registerd migrations """ + MIGRATIONS.clear() + + +class Migration(object): + """App Engine data migration + + A doc string is where you describe what your migration does + + No output is shown to the user, so make liberal use logging. + + Before running a migration on produciton data, download portitions of + real data into an sample application using the bulk exporter + + Register migrations with the MigrationRunner.register method + """ + @classmethod + def name(cls): + return cls.__name__ + + def start(self): + logging.info("Staring migration %s" % self.__class__.__name__) + self.run() + logging.info("Finished migration %s" % self.__class__.__name__) + + def run(self): + """Run the migration """ + pass + + +class UpdateStatusMigration(Migration): + """ Migrate sample data + + This migration does nothing. NOTHING! + + """ + def run(self): + logging.info("Update each status") + # For each status + for status in Status.all().fetch(100): + + # Set the status to default + status.default = False + + # Update the status url + status.image = "icons/fugue/" + status.image + ".png" + + # Save the status + status.put() + + # Get the up status and make it default + default_status = Status.get_by_slug("up") + + if default_status is None: + logging.error("Could not find the up status") + return + + default_status.default = True + default_status.put() + logging.info("Set up status as the default") + + +class AddImagesMigration(Migration): + """ Add images to the database """ + + def run(self): + logging.info("Load the images into the database") + Image.load_defaults() + logging.info("Loading complete") + + +register(AddImagesMigration) +register(UpdateStatusMigration) diff --git a/stashboard/models.py b/stashboard/models.py new file mode 100644 index 00000000..20123e1d --- /dev/null +++ b/stashboard/models.py @@ -0,0 +1,281 @@ +# Copyright (c) 2010 Twilio Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import os +import datetime +import logging +import urlparse +from datetime import timedelta +from datetime import date +from google.appengine.ext import db +from django.utils import simplejson as json +from time import mktime +from wsgiref.handlers import format_date_time + +class Image(db.Model): + """A service to track + + Properties: + slug -- stirng: URL friendly version of the name + name -- string: The name of this service + path -- stirng: The path to the image + + """ + slug = db.StringProperty(required=True) + icon_set = db.StringProperty(required=True) + path = db.StringProperty(required=True) + + @classmethod + def get_by_slug(cls, slug): + return cls.all().filter('slug = ', slug).get() + + @classmethod + def load_defaults(cls): + path = os.path.join(os.path.dirname(__file__), "fixtures/images.json") + images = json.load(open(path)) + for i in images: + image = Image(slug=i["name"], icon_set=i["set"], path=i["url"]) + image.put() + + def absolute_url(self): + return "/images/" + self.path + + +class Service(db.Model): + """A service to track + + Properties: + name -- string: The name of this service + description -- string: The function of the service + slug -- stirng: URL friendly version of the name + + """ + @staticmethod + def get_by_slug(service_slug): + return Service.all().filter('slug = ', service_slug).get() + + slug = db.StringProperty(required=True) + name = db.StringProperty(required=True) + description = db.StringProperty(required=True) + + def current_event(self): + event = self.events.order('-start').get() + return event + + def url(self): + return "/services/%s" % self.slug + + #Specialty function for front page + def history(self, days, default, start=None): + """ Return the past n days of activity AFTER the start date. + + Arguments: + days -- The number of days of activity to calculate + default -- The status to use as the base status + + Keyword Arguments + start -- The day to look before (defaults to today) + + This funciton is currently only used on the front page + """ + start = start or date.today() + ago = start - timedelta(days=days) + + events = self.events.filter('start >=', ago) \ + .filter('start <', start).fetch(100) + + stats = {} + + for i in range(days): + start = start - timedelta(days=1) + stats[start.day] = { + "image": default.image, + "name": default.name, + "day": start, + "information": False, + } + + for event in events: + if event.status.slug != default.slug: + stats[event.start.day]["image"] = "icons/fugue/information.png" + stats[event.start.day]["information"] = True + stats[event.start.day]["name"] = "information" + + history = stats.values() + history.sort() + history.reverse() + + return history + + + def compare(self, other_status): + return 0 + + def sid(self): + return unicode(self.key()) + + def resource_url(self): + return "/services/" + self.slug + + def rest(self, base_url): + """ Return a Python object representing this model""" + + m = {} + m["name"] = unicode(self.name) + m["id"] = unicode(self.slug) + m["description"] = unicode(self.description) + m["url"] = base_url + self.resource_url() + + event = self.current_event() + if event: + m["current-event"] = event.rest(base_url) + else: + m["current-event"] = None + + return m + +class Status(db.Model): + """A possible system status + + Properties: + name -- string: The friendly name of this status + slug -- stirng: The identifier for the status + description -- string: The state this status represents + image -- string: Image in /images/status + + """ + @classmethod + def get_by_slug(cls, status_slug): + return cls.all().filter('slug = ', status_slug).get() + + @classmethod + def get_default(cls): + return cls.all().filter('default = ', True).get() + + @classmethod + def load_defaults(cls): + """ + Install the default statuses. xI am not sure where these should live just yet + """ + if not cls.get_by_slug("down"): + d = cls(name="Down", slug="down", + image="icons/fugue/cross-circle.png", + description="The service is currently down") + d.put() + + if not cls.get_by_slug("up"): + u = cls(name="Up", slug="up", default=True, + image="icons/fugue/tick-circle.png", + description="The service is up") + u.put() + + if not cls.get_by_slug("warning"): + w = cls(name="Warning", slug="warning", + image="icons/fugue/exclamation.png", + description="The service is experiencing intermittent problems") + w.put() + + name = db.StringProperty(required=True) + slug = db.StringProperty(required=True) + description = db.StringProperty(required=True) + image = db.StringProperty(required=True) + default = db.BooleanProperty(default=False) + + # Deprecated + severity = db.IntegerProperty(default=10) + + def image_url(self): + return "/images/" + unicode(self.image) + + def resource_url(self): + return "/statuses/" + unicode(self.slug) + + def rest(self, base_url): + """ Return a Python object representing this model""" + + m = {} + m["default"] = self.default + m["name"] = unicode(self.name) + m["id"] = unicode(self.slug) + m["description"] = unicode(self.description) + m["url"] = base_url + self.resource_url() + o = urlparse.urlparse(base_url) + m["image"] = o.scheme + "://" + o.netloc + self.image_url() + + # Maintain v1 requirement + if self.severity == 30: + m["level"] = "WARNING" + elif self.severity == 40: + m["level"] = "ERROR" + elif self.severity == 50: + m["level"] = "CRITICAL" + else: + m["level"] = "NORMAL" + + return m + + +class Event(db.Model): + + start = db.DateTimeProperty(required=True, auto_now_add=True) + + # We want this to be required, but it would break all current installs + # Instead, we handle it in the rest method + informational = db.BooleanProperty(default=False) + status = db.ReferenceProperty(Status, required=True) + message = db.TextProperty(required=True) + service = db.ReferenceProperty(Service, required=True, + collection_name="events") + + def duration(self): + # calculate the difference between start and end + # should evantually be stored + pass + + def sid(self): + return unicode(self.key()) + + def resource_url(self): + return self.service.resource_url() + "/events/" + self.sid() + + def rest(self, base_url): + """ Return a Python object representing this model""" + + m = {} + m["sid"] = self.sid() + + stamp = mktime(self.start.timetuple()) + m["timestamp"] = format_date_time(stamp) + m["status"] = self.status.rest(base_url) + m["message"] = unicode(self.message) + m["url"] = base_url + self.resource_url() + + if self.informational: + m["informational"] = self.informational + else: + m["informational"] = False + + return m + +class Profile(db.Model): + owner = db.UserProperty(required=True) + token = db.StringProperty(required=True) + secret = db.StringProperty(required=True) + diff --git a/stashboard/settings.py b/stashboard/settings.py new file mode 100644 index 00000000..6c20a737 --- /dev/null +++ b/stashboard/settings.py @@ -0,0 +1,14 @@ +import os + +DEBUG = False + +SITE_NAME = "Stashboard" +SITE_AUTHOR = "Colonel Mustache" +SITE_URL = "http://stashbooard.appspot.com" +REPORT_URL = "mailto:help@stashboard.org" + +# OAuth Consumer Credentials +CONSUMER_KEY = 'anonymous' +CONSUMER_SECRET = 'anonymous' + +TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), "templates")) diff --git a/stashboard/static/css/gh-buttons.css b/stashboard/static/css/gh-buttons.css new file mode 100644 index 00000000..0f712c7b --- /dev/null +++ b/stashboard/static/css/gh-buttons.css @@ -0,0 +1,388 @@ +/* ------------------------------------------ +CSS3 GITHUB BUTTONS (Nicolas Gallagher) +Licensed under Unlicense +http://github.com/necolas/css3-github-buttons +------------------------------------------ */ + + +/* ------------------------------------------------------------------------------------------------------------- BUTTON */ + +.button { + position: relative; + overflow: visible; + display: inline-block; + padding: 0.5em 1em; + border: 1px solid #d4d4d4; + margin: 0; + text-decoration: none; + text-shadow: 1px 1px 0 #fff; + font:11px/normal sans-serif; + color: #333; + white-space: nowrap; + cursor: pointer; + outline: none; + background-color: #ececec; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec)); + background-image: -moz-linear-gradient(#f4f4f4, #ececec); + background-image: -o-linear-gradient(#f4f4f4, #ececec); + background-image: linear-gradient(#f4f4f4, #ececec); + -webkit-background-clip: padding; + -moz-background-clip: padding; + -o-background-clip: padding-box; + /*background-clip: padding-box;*/ /* commented out due to Opera 11.10 bug */ + -webkit-border-radius: 0.2em; + -moz-border-radius: 0.2em; + border-radius: 0.2em; + /* IE hacks */ + zoom: 1; + *display: inline; +} + +.button:hover, +.button:focus, +.button:active { + border-color: #3072b3; + border-bottom-color: #2a65a0; + text-decoration: none; + text-shadow: -1px -1px 0 rgba(0,0,0,0.3); + color: #fff; + background-color: #3072b3; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#599bdc), to(#3072b3)); + background-image: -moz-linear-gradient(#599bdc, #3072b3); + background-image: -o-linear-gradient(#599bdc, #3072b3); + background-image: linear-gradient(#599bdc, #3072b3); +} + +.button:active, +.button.active { + border-color: #2a65a0; + border-bottom-color: #3884CF; + color: #fff; + background-color: #3072b3; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3072b3), to(#599bdc)); + background-image: -moz-linear-gradient(#3072b3, #599bdc); + background-image: -o-linear-gradient(#3072b3, #599bdc); + background-image: linear-gradient(#3072b3, #599bdc); +} + +/* overrides extra padding on button elements in Firefox */ +.button::-moz-focus-inner { + padding: 0; + border: 0; +} + +/* ............................................................................................................. Icons */ + +.button.icon:before { + content: ""; + position: relative; + top: 1px; + float:left; + width: 12px; + height: 12px; + margin: 0 0.75em 0 -0.25em; + background: url(gh-icons.png) 0 99px no-repeat; +} + +.button.arrowup.icon:before { background-position: 0 0; } +.button.arrowup.icon:hover:before, +.button.arrowup.icon:focus:before, +.button.arrowup.icon:active:before { background-position: -12px 0; } + +.button.arrowdown.icon:before { background-position: 0 -12px; } +.button.arrowdown.icon:hover:before, +.button.arrowdown.icon:focus:before, +.button.arrowdown.icon:active:before { background-position: -12px -12px; } + +.button.arrowleft.icon:before { background-position: 0 -24px; } +.button.arrowleft.icon:hover:before, +.button.arrowleft.icon:focus:before, +.button.arrowleft.icon:active:before { background-position: -12px -24px; } + +.button.arrowright.icon:before { float:right; margin: 0 -0.25em 0 0.5em; background-position: 0 -36px; } +.button.arrowright.icon:hover:before, +.button.arrowright.icon:focus:before, +.button.arrowright.icon:active:before { background-position: -12px -36px; } + +.button.approve.icon:before { background-position: 0 -48px; } +.button.approve.icon:hover:before, +.button.approve.icon:focus:before, +.button.approve.icon:active:before { background-position: -12px -48px; } + +.button.add.icon:before { background-position: 0 -288px; } +.button.add.icon:hover:before, +.button.add.icon:focus:before, +.button.add.icon:active:before { background-position: -12px -288px; } + +.button.remove.icon:before { background-position: 0 -60px; } +.button.remove.icon:hover:before, +.button.remove.icon:focus:before, +.button.remove.icon:active:before { background-position: -12px -60px; } + +.button.log.icon:before { background-position: 0 -72px; } +.button.log.icon:hover:before, +.button.log.icon:focus:before, +.button.log.icon:active:before { background-position: -12px -72px; } + +.button.calendar.icon:before { background-position: 0 -84px; } +.button.calendar.icon:hover:before, +.button.calendar.icon:focus:before, +.button.calendar.icon:active:before { background-position: -12px -84px; } + +.button.chat.icon:before { background-position: 0 -96px; } +.button.chat.icon:hover:before, +.button.chat.icon:focus:before, +.button.chat.icon:active:before { background-position: -12px -96px; } + +.button.clock.icon:before { background-position: 0 -108px; } +.button.clock.icon:hover:before, +.button.clock.icon:focus:before, +.button.clock.icon:active:before { background-position: -12px -108px; } + +.button.settings.icon:before { background-position: 0 -120px; } +.button.settings.icon:hover:before, +.button.settings.icon:focus:before, +.button.settings.icon:active:before { background-position: -12px -120px; } + +.button.comment.icon:before { background-position: 0 -132px; } +.button.comment.icon:hover:before, +.button.comment.icon:focus:before, +.button.comment.icon:active:before { background-position: -12px -132px; } + +.button.fork.icon:before { background-position: 0 -144px; } +.button.fork.icon:hover:before, +.button.fork.icon:focus:before, +.button.fork.icon:active:before { background-position: -12px -144px; } + +.button.like.icon:before { background-position: 0 -156px; } +.button.like.icon:hover:before, +.button.like.icon:focus:before, +.button.like.icon:active:before { background-position: -12px -156px; } + +.button.favorite.icon:before { background-position: 0 -348px; } +.button.favorite.icon:hover:before, +.button.favorite.icon:focus:before, +.button.favorite.icon:active:before { background-position: -12px -348px; } + +.button.home.icon:before { background-position: 0 -168px; } +.button.home.icon:hover:before, +.button.home.icon:focus:before, +.button.home.icon:active:before { background-position: -12px -168px; } + +.button.key.icon:before { background-position: 0 -180px; } +.button.key.icon:hover:before, +.button.key.icon:focus:before, +.button.key.icon:active:before { background-position: -12px -180px; } + +.button.lock.icon:before { background-position: 0 -192px; } +.button.lock.icon:hover:before, +.button.lock.icon:focus:before, +.button.lock.icon:active:before { background-position: -12px -192px; } + +.button.unlock.icon:before { background-position: 0 -204px; } +.button.unlock.icon:hover:before, +.button.unlock.icon:focus:before, +.button.unlock.icon:active:before { background-position: -12px -204px; } + +.button.loop.icon:before { background-position: 0 -216px; } +.button.loop.icon:hover:before, +.button.loop.icon:focus:before, +.button.loop.icon:active:before { background-position: -12px -216px; } + +.button.search.icon:before { background-position: 0 -228px; } +.button.search.icon:hover:before, +.button.search.icon:focus:before, +.button.search.icon:active:before { background-position: -12px -228px; } + +.button.mail.icon:before { background-position: 0 -240px; } +.button.mail.icon:hover:before, +.button.mail.icon:focus:before, +.button.mail.icon:active:before { background-position: -12px -240px; } + +.button.move.icon:before { background-position: 0 -252px; } +.button.move.icon:hover:before, +.button.move.icon:focus:before, +.button.move.icon:active:before { background-position: -12px -252px; } + +.button.edit.icon:before { background-position: 0 -264px; } +.button.edit.icon:hover:before, +.button.edit.icon:focus:before, +.button.edit.icon:active:before { background-position: -12px -264px; } + +.button.pin.icon:before { background-position: 0 -276px; } +.button.pin.icon:hover:before, +.button.pin.icon:focus:before, +.button.pin.icon:active:before { background-position: -12px -276px; } + +.button.reload.icon:before { background-position: 0 -300px; } +.button.reload.icon:hover:before, +.button.reload.icon:focus:before, +.button.reload.icon:active:before { background-position: -12px -300px; } + +.button.rss.icon:before { background-position: 0 -312px; } +.button.rss.icon:hover:before, +.button.rss.icon:focus:before, +.button.rss.icon:active:before { background-position: -12px -312px; } + +.button.tag.icon:before { background-position: 0 -324px; } +.button.tag.icon:hover:before, +.button.tag.icon:focus:before, +.button.tag.icon:active:before { background-position: -12px -324px; } + +.button.trash.icon:before { background-position: 0 -336px; } +.button.trash.icon:hover:before, +.button.trash.icon:focus:before, +.button.trash.icon:active:before { background-position: -12px -336px; } + +.button.user.icon:before { background-position: 0 -360px; } +.button.user.icon:hover:before, +.button.user.icon:focus:before, +.button.user.icon:active:before { background-position: -12px -360px; } + + +/* ------------------------------------------------------------------------------------------------------------- BUTTON EXTENSIONS */ + +/* ............................................................................................................. Primary */ + +.button.primary { + font-weight: bold; +} + +/* ............................................................................................................. Danger */ + +.button.danger { + color: #900; +} + +.button.danger:hover, +.button.danger:focus, +.button.danger:active { + border-color: #b53f3a; + border-bottom-color: #a0302a; + color: #fff; + background-color: #dc5f59; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dc5f59), to(#b33630)); + background-image: -moz-linear-gradient(#dc5f59, #b33630); + background-image: -o-linear-gradient(#dc5f59, #b33630); + background-image: linear-gradient(#dc5f59, #b33630); +} + +.button.danger:active, +.button.danger.active { + border-color: #a0302a; + border-bottom-color: #bf4843; + background-color: #b33630; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b33630), to(#dc5f59)); + background-image: -moz-linear-gradient(#b33630, #dc5f59); + background-image: -o-linear-gradient(#b33630, #dc5f59); + background-image: linear-gradient(#b33630, #dc5f59); +} + +/* ............................................................................................................. Pill */ + +.button.pill { + -webkit-border-radius: 50em; + -moz-border-radius: 50em; + border-radius: 50em; +} + +/* ............................................................................................................. Big */ + +.button.big { + font-size: 14px; +} + +.button.big.icon:before { top: 0; } + + +/* ------------------------------------------------------------------------------------------------------------- BUTTON GROUPS */ + +/* ............................................................................................................. Standard */ + +.button-group { + display: inline-block; + list-style: none; + padding: 0; + margin: 0; + /* IE hacks */ + zoom: 1; + *display: inline; +} + +.button + .button, +.button + .button-group, +.button-group + .button, +.button-group + .button-group { + margin-left: 15px; +} + +.button-group li { + float: left; + padding: 0; + margin: 0; +} + +.button-group .button { + float: left; + margin-left: -1px; +} + +.button-group > .button:not(:first-child):not(:last-child), +.button-group li:not(:first-child):not(:last-child) .button { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.button-group > .button:first-child, +.button-group li:first-child .button { + margin-left: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.button-group > .button:last-child, +.button-group li:last-child > .button { + -webkit-border-top-left-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +/* ............................................................................................................. Minor */ + +.button-group.minor-group .button { + border: 1px solid #d4d4d4; + text-shadow: none; + background-image: none; + background-color: #fff; +} + +.button-group.minor-group .button:hover, +.button-group.minor-group .button:focus, +.button-group.minor-group .button:active { + background-color: #599bdc; +} + +.button-group.minor-group .button:active, +.button-group.minor-group .button.active { + background-color: #3072b3; +} + +.button-group.minor-group .button.icon:before { + opacity: 0.8; +} + +/* ------------------------------------------------------------------------------------------------------------- BUTTON CONTAINER */ +/* For mixing buttons and button groups, e.g., in a navigation bar */ + +.button-container .button, +.button-container .button-group { + vertical-align: top; +} \ No newline at end of file diff --git a/stashboard/static/css/gh-icons.png b/stashboard/static/css/gh-icons.png new file mode 100644 index 00000000..1c76039d Binary files /dev/null and b/stashboard/static/css/gh-icons.png differ diff --git a/static/css/prettify.css b/stashboard/static/css/prettify.css similarity index 100% rename from static/css/prettify.css rename to stashboard/static/css/prettify.css diff --git a/stashboard/static/css/reset.css b/stashboard/static/css/reset.css new file mode 100644 index 00000000..cf3d1dd1 --- /dev/null +++ b/stashboard/static/css/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/stashboard/static/css/style.css b/stashboard/static/css/style.css new file mode 100755 index 00000000..f389d769 --- /dev/null +++ b/stashboard/static/css/style.css @@ -0,0 +1,469 @@ +html, body{ + height: 100%; +} + +body{ + font:12px arial,helvetica,verdana,sans-serif; + background: rgb(247, 247, 247); +} + +a { + color:#333; + text-decoration:none; +} + +a:hover { + color:#666; +} + +em { + font-style: italic; +} + +#wrapper { + width: 900px; min-height: 100%; + height: auto !important; height: 100%; + margin: 0 auto -3em; +} + +h1 {font-size: 32px; font-weight: bold;} +h2 {font-size: 32px; font-weight: bold;} +h3 {font-size: 24px; font-weight: bold;} +h3.date-range {color: #999; margin-top: 20px} + +header {height: 70px;} + +header h1 {margin: 15px; float: left; height: 40px; line-height: 40px;} +header h1 span {font-weight: normal;} +header h2 {margin: 15px 0; float: left; line-height: 67px;} +header .button-container { float: right; margin-top: 20px;} +#logo { height: 40px; width: 54px; float: left; margin: 15px 0;} + +#status { height: 200px; } +#status h2 { font-size: 60px; color: #FFF; text-align: center; padding-top: 65px;text-shadow: 2px 2px 0px #000;} + +#content { + border: 1px solid rgb(228, 228, 228); + background: white; + padding: 20px; + position: relative; +} + +.dialog { display: none; } + +#sidebar { float: right; margin: 20px; width: 250px; } + +#sidebar .panel { margin-bottom: 20px; } +#sidebar .panel { margin-bottom:20px; } +#sidebar .panel h3 { margin-bottom:7px; } +#sidebar .panel ul li { + background:url(images/li.gif) no-repeat 0 3px; + color:#7F7F7F;line-height:1.2em; + border-top:1px solid #BBB; + padding:4px 0 4px 16px; +} + +nav { + height: 50px; +} + +nav ul { + background: #4476b5; + position: absolute; + top: 0px; + left: 0px; + right: 0px; +} + +nav li { + float: left; + height: 50px; + margin: 0 20px; + line-height: 50px; +} + +nav li a { + display:block; + font-size:15px; + font-weight:bold; + text-decoration:none; + color: #F3FBEC; +} + +nav li a:hover { + color: #F3FBEC; + text-decoration:underline; +} + +nav .selected { + background:url("../images/sub-nav-selected-arrow.png") no-repeat scroll center bottom transparent; +} + +/* DATA TABLES */ +.data { + width: 100%; + border-spacing:10; + font-size: 1.1em; + border-collapse: separate; + border-left:1px solid #E4E4E4; + border-top:1px solid #E4E4E4; +} + +.data a { + text-decoration: underline; +} + +.data thead { + background: #EEEEEE; +} + +.data th { + font-size: 16px; + font-weight: bold; + text-align: center; + padding: 10px; + border-bottom: 1px solid rgb(228, 228, 228); + border-right: 1px solid rgb(228, 228, 228); +} + +.data tr { + font-size: 16px; +} + +.data td { + padding: 10px; + border-bottom: 1px solid rgb(228, 228, 228); + border-right: 1px solid rgb(228, 228, 228); + vertical-align: middle; + height: 25px; +} + + +.data .time { width: 20%; } +.data .today { background: rgb(228, 228, 228); } +.data .highlight { background: rgb(247, 247, 247); } +.data .status, .data .date, .data .today { text-align: center; } +.data .action { width: 5px; } + +.data .status img { + max-width: 20px; +} + +/* Front page table */ + +#services { + border-left: none; + border-top: none; +} + +#services th { + font-size: 20px; +} + +#services th:first-child { + text-align: left; +} + +#services thead { + background: none; +} + +#events { margin-top: 20px; } +#events .status { width: 10%; } +#events .time { text-align: center; } + +#submit { + background: rgb(228, 228, 228); + border: 1px solid #ccc; + margin: 20px 0px; + padding: 10px; + text-align: right; +} + +#submit label { + float: left; + clear: left; + width: 55px; + padding: 10px; +} + +#allgood { + border: 1px solid #86c440; + background: #daf1b8; + padding: 40px; + text-align: center; + margin-top: 10px; + font-size: 20px; +} + +#allgood img, #allgood p { + display: inline-block; + vertical-align: middle; +} + +#submit h3 {text-align: left;} + +#submit .update-message { float: left; width: 390px; height: 100px; padding: 3px;} +#submit .update-status { float: left; margin: 10px 0px;} +#submit .update-submit { clear: left; display: block; margin-left: auto; width: 150px;} + +#legend h4 { color: #999; font-size: 18px; margin: 20px 0 5px 0;} +#legend ul {font-size: 12px} +#legend li {margin-right: 10px; display: inline-block;} +#legend img, #legend p {vertical-align: middle; display: inline-block;} + +footer, #push {height: 3em;} +footer {width: 900px; margin: auto;} +footer ul {padding: 10px 0px;} +footer ul li {display: inline-block;} +footer ul.left { float: left;} +footer ul.left li {margin-right: 7px} +footer ul.right { float: right;} +#icons, #icons a{ color: #ccc; } + +td.status a{position: relative;} +td.status a .information {position: absolute; top: 0px; left: 1px; z-index: 500;} + +.dialog label, .dialog textarea, .dialog input + { margin: 10px; clear: right;} + +.dialog label {display: block;} + +.dialog textarea { width: 400px; height: 75px;} + +.breadcrumb { font-weight: normal;} + +#add-note, #update-status { float: right; margin-left: 15px} +#add-event-model {display: none;} + +#delete-service, #edit-service {margin-top: 20px} +#delete-service {float: right} +#delete-service-modal {display: none} + +#documentation { + font-size: 14px; +} + +#documentation a { color: #4476B5; text-decoration: underline;} + +#documentation p { margin: 10px 0px; } +#documentation h2 { margin: 20px 0 10px 0; } +#documentation h3 { margin: 15px 0px 10px 0; font-size: 24px; color:#555555;} +#documentation h4 { margin: 10px 0px; font-size: 22px; color: #4476B5;} +#documentation h5 { margin: 10px 0px; font-size: 16px;} + +#documentation table { + font-size: 12px; +} + +#documentation table td, #documentation table th { + padding: 10px; + border: 1px solid #555555; +} + +#documentation table td { +} + +#documentation table th { + background: #ccc; +} + +#documentation table caption {font-style: italic; text-align: right;} + +#documentation blockquote, pre { + background: #F0F0F0; + margin: 10px 0; + padding: 10px; + width:auto; +} + +#documentation blockquote p { + margin: 0; +} + +#powered { + font-family: courier, monospace; + font-size: 10px; +} + +#powered img { + width: 27px; +} + +ul.admin .button { + float: right; + margin-left: 5px; +} + +ul.admin li { + padding: 5px; + border-bottom: 1px solid #CCC; +} + +ul.admin .name { + font-size: 20px; +} + +ul.admin a .name:hover { + font-size: 20px; + text-decoration: underline; +} + +#create { + margin-top: 10px; +} + +dl.form dd{ + margin-bottom: 20px; +} + +dl.form dt{ + font-size: 14px; + margin-bottom: 3px; +} + +dl.form input[type=text] { + width: 500px; + padding: 5px; + font-size: 16px; +} + +dl.form textarea { + width: 500px; + padding: 5px; + font-size: 16px; + height: 100px; +} + +form.delete p { + margin-bottom: 20px; + font-size: 16px +} + +form.delete strong { + font-weight: bold; +} + +form.admin h1{ + margin-bottom: 20px; +} + +.error { + display: none; + background: #EFA8AA; + width: 500px; + padding: 7px; + border: 1px solid #D62A11; + color: #D62A11; + font-weight: bold; + margin-bottom: 20px; +} + +form.admin ul.images { + width: 550px; +} + +form.admin ul.images li { + display: inline-block; + vertical-align: top; + margin: 5px; +} + +form.admin ul.images li img, form.admin ul.images li input{ + display: inline-block; + vertical-align: middle; +} + +form.admin ul.images li img { + max-width: 20px; +} + +#editbar { + float: right; +} + +#notfound { + text-align: center; +} + +#notfound img, #notfound section { + display: inline-block; + vertical-align: middle; +} + +#notfound p { + font-size: 16px; +} + +#notfound img { + width: 350px; +} + +#setup h1, #setup p { + margin-bottom: 20px; +} + +#setup p { + font-size: 16px; +} + +.sym { + max-width: 20px; +} + +#migrations li{ + font-size: 22px; +} + +#notice { + padding: 10px; + margin-bottom: 10px; + background: #EEE; +} + +.admin h1 { + margin-bottom: 10px; +} + +#oauth img, #oauth div{ + display: inline-block; + vertical-align: middle; +} + +#oauth img { + width: 200px; +} + +#oauth div { + margin-left: 30px; +} + +#oauth p { + margin-top: 20px; + padding: 10px 20px; + background: #ffa49c; + border-radius: 10px; + border: 1px solid red; + -moz-border-radius: 10px; +} + +#oauth p a { + margin-left: 30px; +} + +#oauth table tr td{ + padding: 6px; +} + +#oauth table tr td{ + font-family: monospace; +} + +#oauth table tr td:first-child{ + font:14px arial,helvetica,verdana,sans-serif; + text-align: right; + font-weight: bold; +} + + + diff --git a/static/favicon.ico b/stashboard/static/favicon.ico similarity index 100% rename from static/favicon.ico rename to stashboard/static/favicon.ico diff --git a/static/images/status/broom.png b/stashboard/static/images/icons/fugue/broom.png similarity index 100% rename from static/images/status/broom.png rename to stashboard/static/images/icons/fugue/broom.png diff --git a/static/images/status/bug.png b/stashboard/static/images/icons/fugue/bug.png similarity index 100% rename from static/images/status/bug.png rename to stashboard/static/images/icons/fugue/bug.png diff --git a/static/images/status/clock.png b/stashboard/static/images/icons/fugue/clock.png similarity index 100% rename from static/images/status/clock.png rename to stashboard/static/images/icons/fugue/clock.png diff --git a/static/images/status/cross-circle.png b/stashboard/static/images/icons/fugue/cross-circle.png similarity index 100% rename from static/images/status/cross-circle.png rename to stashboard/static/images/icons/fugue/cross-circle.png diff --git a/static/images/status/exclamation.png b/stashboard/static/images/icons/fugue/exclamation.png similarity index 100% rename from static/images/status/exclamation.png rename to stashboard/static/images/icons/fugue/exclamation.png diff --git a/static/images/status/flag.png b/stashboard/static/images/icons/fugue/flag.png similarity index 100% rename from static/images/status/flag.png rename to stashboard/static/images/icons/fugue/flag.png diff --git a/static/images/status/hard-hat.png b/stashboard/static/images/icons/fugue/hard-hat.png similarity index 100% rename from static/images/status/hard-hat.png rename to stashboard/static/images/icons/fugue/hard-hat.png diff --git a/static/images/status/heart.png b/stashboard/static/images/icons/fugue/heart.png similarity index 100% rename from static/images/status/heart.png rename to stashboard/static/images/icons/fugue/heart.png diff --git a/static/images/status/information-small.png b/stashboard/static/images/icons/fugue/information-small.png similarity index 100% rename from static/images/status/information-small.png rename to stashboard/static/images/icons/fugue/information-small.png diff --git a/static/images/status/information-white.png b/stashboard/static/images/icons/fugue/information-white.png similarity index 100% rename from static/images/status/information-white.png rename to stashboard/static/images/icons/fugue/information-white.png diff --git a/static/images/status/information.png b/stashboard/static/images/icons/fugue/information.png similarity index 100% rename from static/images/status/information.png rename to stashboard/static/images/icons/fugue/information.png diff --git a/static/images/status/lock.png b/stashboard/static/images/icons/fugue/lock.png similarity index 100% rename from static/images/status/lock.png rename to stashboard/static/images/icons/fugue/lock.png diff --git a/static/images/status/plug.png b/stashboard/static/images/icons/fugue/plug.png similarity index 100% rename from static/images/status/plug.png rename to stashboard/static/images/icons/fugue/plug.png diff --git a/static/images/status/plus-circle.png b/stashboard/static/images/icons/fugue/plus-circle.png similarity index 100% rename from static/images/status/plus-circle.png rename to stashboard/static/images/icons/fugue/plus-circle.png diff --git a/static/images/status/question-white.png b/stashboard/static/images/icons/fugue/question-white.png similarity index 100% rename from static/images/status/question-white.png rename to stashboard/static/images/icons/fugue/question-white.png diff --git a/static/images/status/question.png b/stashboard/static/images/icons/fugue/question.png similarity index 100% rename from static/images/status/question.png rename to stashboard/static/images/icons/fugue/question.png diff --git a/static/images/status/tick-circle.png b/stashboard/static/images/icons/fugue/tick-circle.png similarity index 100% rename from static/images/status/tick-circle.png rename to stashboard/static/images/icons/fugue/tick-circle.png diff --git a/static/images/status/traffic-cone.png b/stashboard/static/images/icons/fugue/traffic-cone.png similarity index 100% rename from static/images/status/traffic-cone.png rename to stashboard/static/images/icons/fugue/traffic-cone.png diff --git a/static/images/status/wrench.png b/stashboard/static/images/icons/fugue/wrench.png similarity index 100% rename from static/images/status/wrench.png rename to stashboard/static/images/icons/fugue/wrench.png diff --git a/stashboard/static/images/icons/iconic/arrow_down.png b/stashboard/static/images/icons/iconic/arrow_down.png new file mode 100644 index 00000000..248bb80f Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_down.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_down_alt1.png b/stashboard/static/images/icons/iconic/arrow_down_alt1.png new file mode 100644 index 00000000..c37f8701 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_down_alt1.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_down_alt2.png b/stashboard/static/images/icons/iconic/arrow_down_alt2.png new file mode 100644 index 00000000..309de7fe Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_down_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_left.png b/stashboard/static/images/icons/iconic/arrow_left.png new file mode 100644 index 00000000..01ae6bba Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_left.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_left_alt1.png b/stashboard/static/images/icons/iconic/arrow_left_alt1.png new file mode 100644 index 00000000..0e8ab485 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_left_alt1.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_left_alt2.png b/stashboard/static/images/icons/iconic/arrow_left_alt2.png new file mode 100644 index 00000000..956324a0 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_left_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_right.png b/stashboard/static/images/icons/iconic/arrow_right.png new file mode 100644 index 00000000..98e720f5 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_right.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_right_alt1.png b/stashboard/static/images/icons/iconic/arrow_right_alt1.png new file mode 100644 index 00000000..915d25e2 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_right_alt1.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_right_alt2.png b/stashboard/static/images/icons/iconic/arrow_right_alt2.png new file mode 100644 index 00000000..1e38c3de Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_right_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_up.png b/stashboard/static/images/icons/iconic/arrow_up.png new file mode 100644 index 00000000..ac482c1d Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_up.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_up_alt1.png b/stashboard/static/images/icons/iconic/arrow_up_alt1.png new file mode 100644 index 00000000..ddf1fdce Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_up_alt1.png differ diff --git a/stashboard/static/images/icons/iconic/arrow_up_alt2.png b/stashboard/static/images/icons/iconic/arrow_up_alt2.png new file mode 100644 index 00000000..2a3ee512 Binary files /dev/null and b/stashboard/static/images/icons/iconic/arrow_up_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/article.png b/stashboard/static/images/icons/iconic/article.png new file mode 100644 index 00000000..600b4f78 Binary files /dev/null and b/stashboard/static/images/icons/iconic/article.png differ diff --git a/stashboard/static/images/icons/iconic/at.png b/stashboard/static/images/icons/iconic/at.png new file mode 100644 index 00000000..d9695e90 Binary files /dev/null and b/stashboard/static/images/icons/iconic/at.png differ diff --git a/stashboard/static/images/icons/iconic/bolt.png b/stashboard/static/images/icons/iconic/bolt.png new file mode 100644 index 00000000..92591c5e Binary files /dev/null and b/stashboard/static/images/icons/iconic/bolt.png differ diff --git a/stashboard/static/images/icons/iconic/book.png b/stashboard/static/images/icons/iconic/book.png new file mode 100644 index 00000000..ba1c9598 Binary files /dev/null and b/stashboard/static/images/icons/iconic/book.png differ diff --git a/stashboard/static/images/icons/iconic/book_alt.png b/stashboard/static/images/icons/iconic/book_alt.png new file mode 100644 index 00000000..44563a76 Binary files /dev/null and b/stashboard/static/images/icons/iconic/book_alt.png differ diff --git a/stashboard/static/images/icons/iconic/box.png b/stashboard/static/images/icons/iconic/box.png new file mode 100644 index 00000000..582e1442 Binary files /dev/null and b/stashboard/static/images/icons/iconic/box.png differ diff --git a/stashboard/static/images/icons/iconic/calendar.png b/stashboard/static/images/icons/iconic/calendar.png new file mode 100644 index 00000000..49d68fa6 Binary files /dev/null and b/stashboard/static/images/icons/iconic/calendar.png differ diff --git a/stashboard/static/images/icons/iconic/calendar_alt_fill.png b/stashboard/static/images/icons/iconic/calendar_alt_fill.png new file mode 100644 index 00000000..dbe256af Binary files /dev/null and b/stashboard/static/images/icons/iconic/calendar_alt_fill.png differ diff --git a/stashboard/static/images/icons/iconic/calendar_alt_stroke.png b/stashboard/static/images/icons/iconic/calendar_alt_stroke.png new file mode 100644 index 00000000..df3df826 Binary files /dev/null and b/stashboard/static/images/icons/iconic/calendar_alt_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/cd.png b/stashboard/static/images/icons/iconic/cd.png new file mode 100644 index 00000000..08af0ccc Binary files /dev/null and b/stashboard/static/images/icons/iconic/cd.png differ diff --git a/stashboard/static/images/icons/iconic/chat.png b/stashboard/static/images/icons/iconic/chat.png new file mode 100644 index 00000000..2fa374cd Binary files /dev/null and b/stashboard/static/images/icons/iconic/chat.png differ diff --git a/stashboard/static/images/icons/iconic/chat_alt_fill.png b/stashboard/static/images/icons/iconic/chat_alt_fill.png new file mode 100644 index 00000000..8dd7d8a7 Binary files /dev/null and b/stashboard/static/images/icons/iconic/chat_alt_fill.png differ diff --git a/stashboard/static/images/icons/iconic/chat_alt_stroke.png b/stashboard/static/images/icons/iconic/chat_alt_stroke.png new file mode 100644 index 00000000..30e7a2b5 Binary files /dev/null and b/stashboard/static/images/icons/iconic/chat_alt_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/check_alt.png b/stashboard/static/images/icons/iconic/check_alt.png new file mode 100644 index 00000000..0c17d697 Binary files /dev/null and b/stashboard/static/images/icons/iconic/check_alt.png differ diff --git a/stashboard/static/images/icons/iconic/clock.png b/stashboard/static/images/icons/iconic/clock.png new file mode 100644 index 00000000..bd00e1e9 Binary files /dev/null and b/stashboard/static/images/icons/iconic/clock.png differ diff --git a/stashboard/static/images/icons/iconic/cog.png b/stashboard/static/images/icons/iconic/cog.png new file mode 100644 index 00000000..c303f410 Binary files /dev/null and b/stashboard/static/images/icons/iconic/cog.png differ diff --git a/stashboard/static/images/icons/iconic/cog_alt.png b/stashboard/static/images/icons/iconic/cog_alt.png new file mode 100644 index 00000000..f1a9a86d Binary files /dev/null and b/stashboard/static/images/icons/iconic/cog_alt.png differ diff --git a/stashboard/static/images/icons/iconic/comment_alt1_fill.png b/stashboard/static/images/icons/iconic/comment_alt1_fill.png new file mode 100644 index 00000000..22e5061f Binary files /dev/null and b/stashboard/static/images/icons/iconic/comment_alt1_fill.png differ diff --git a/stashboard/static/images/icons/iconic/comment_alt1_stroke.png b/stashboard/static/images/icons/iconic/comment_alt1_stroke.png new file mode 100644 index 00000000..a7da78bf Binary files /dev/null and b/stashboard/static/images/icons/iconic/comment_alt1_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/compass.png b/stashboard/static/images/icons/iconic/compass.png new file mode 100644 index 00000000..fbe3bc78 Binary files /dev/null and b/stashboard/static/images/icons/iconic/compass.png differ diff --git a/stashboard/static/images/icons/iconic/cursor.png b/stashboard/static/images/icons/iconic/cursor.png new file mode 100644 index 00000000..028c15d1 Binary files /dev/null and b/stashboard/static/images/icons/iconic/cursor.png differ diff --git a/stashboard/static/images/icons/iconic/denied.png b/stashboard/static/images/icons/iconic/denied.png new file mode 100644 index 00000000..02023034 Binary files /dev/null and b/stashboard/static/images/icons/iconic/denied.png differ diff --git a/stashboard/static/images/icons/iconic/denied_alt.png b/stashboard/static/images/icons/iconic/denied_alt.png new file mode 100644 index 00000000..de28c197 Binary files /dev/null and b/stashboard/static/images/icons/iconic/denied_alt.png differ diff --git a/stashboard/static/images/icons/iconic/dial.png b/stashboard/static/images/icons/iconic/dial.png new file mode 100644 index 00000000..45cddf25 Binary files /dev/null and b/stashboard/static/images/icons/iconic/dial.png differ diff --git a/stashboard/static/images/icons/iconic/document_fill.png b/stashboard/static/images/icons/iconic/document_fill.png new file mode 100644 index 00000000..6f29b97d Binary files /dev/null and b/stashboard/static/images/icons/iconic/document_fill.png differ diff --git a/stashboard/static/images/icons/iconic/document_stroke.png b/stashboard/static/images/icons/iconic/document_stroke.png new file mode 100644 index 00000000..14b4988d Binary files /dev/null and b/stashboard/static/images/icons/iconic/document_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/eject.png b/stashboard/static/images/icons/iconic/eject.png new file mode 100644 index 00000000..6d9fe55a Binary files /dev/null and b/stashboard/static/images/icons/iconic/eject.png differ diff --git a/stashboard/static/images/icons/iconic/equalizer.png b/stashboard/static/images/icons/iconic/equalizer.png new file mode 100644 index 00000000..ced02f0b Binary files /dev/null and b/stashboard/static/images/icons/iconic/equalizer.png differ diff --git a/stashboard/static/images/icons/iconic/eyedropper.png b/stashboard/static/images/icons/iconic/eyedropper.png new file mode 100644 index 00000000..4544a875 Binary files /dev/null and b/stashboard/static/images/icons/iconic/eyedropper.png differ diff --git a/stashboard/static/images/icons/iconic/first.png b/stashboard/static/images/icons/iconic/first.png new file mode 100644 index 00000000..8d9abeba Binary files /dev/null and b/stashboard/static/images/icons/iconic/first.png differ diff --git a/stashboard/static/images/icons/iconic/folder_fill.png b/stashboard/static/images/icons/iconic/folder_fill.png new file mode 100644 index 00000000..f0c1018b Binary files /dev/null and b/stashboard/static/images/icons/iconic/folder_fill.png differ diff --git a/stashboard/static/images/icons/iconic/folder_stroke.png b/stashboard/static/images/icons/iconic/folder_stroke.png new file mode 100644 index 00000000..0ba3b278 Binary files /dev/null and b/stashboard/static/images/icons/iconic/folder_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/fullscreen.png b/stashboard/static/images/icons/iconic/fullscreen.png new file mode 100644 index 00000000..d86f3ac5 Binary files /dev/null and b/stashboard/static/images/icons/iconic/fullscreen.png differ diff --git a/stashboard/static/images/icons/iconic/fullscreen_alt.png b/stashboard/static/images/icons/iconic/fullscreen_alt.png new file mode 100644 index 00000000..bcc9582a Binary files /dev/null and b/stashboard/static/images/icons/iconic/fullscreen_alt.png differ diff --git a/stashboard/static/images/icons/iconic/fullscreen_exit.png b/stashboard/static/images/icons/iconic/fullscreen_exit.png new file mode 100644 index 00000000..e938cdd1 Binary files /dev/null and b/stashboard/static/images/icons/iconic/fullscreen_exit.png differ diff --git a/stashboard/static/images/icons/iconic/fullscreen_exit_alt.png b/stashboard/static/images/icons/iconic/fullscreen_exit_alt.png new file mode 100644 index 00000000..377b64ab Binary files /dev/null and b/stashboard/static/images/icons/iconic/fullscreen_exit_alt.png differ diff --git a/stashboard/static/images/icons/iconic/home.png b/stashboard/static/images/icons/iconic/home.png new file mode 100644 index 00000000..02ae1d21 Binary files /dev/null and b/stashboard/static/images/icons/iconic/home.png differ diff --git a/stashboard/static/images/icons/iconic/image.png b/stashboard/static/images/icons/iconic/image.png new file mode 100644 index 00000000..89d3932e Binary files /dev/null and b/stashboard/static/images/icons/iconic/image.png differ diff --git a/stashboard/static/images/icons/iconic/information.png b/stashboard/static/images/icons/iconic/information.png new file mode 100644 index 00000000..4a5f9929 Binary files /dev/null and b/stashboard/static/images/icons/iconic/information.png differ diff --git a/stashboard/static/images/icons/iconic/key_fill.png b/stashboard/static/images/icons/iconic/key_fill.png new file mode 100644 index 00000000..4b216e20 Binary files /dev/null and b/stashboard/static/images/icons/iconic/key_fill.png differ diff --git a/stashboard/static/images/icons/iconic/key_stroke.png b/stashboard/static/images/icons/iconic/key_stroke.png new file mode 100644 index 00000000..72a255bd Binary files /dev/null and b/stashboard/static/images/icons/iconic/key_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/last.png b/stashboard/static/images/icons/iconic/last.png new file mode 100644 index 00000000..3b5ec6e3 Binary files /dev/null and b/stashboard/static/images/icons/iconic/last.png differ diff --git a/stashboard/static/images/icons/iconic/left_quote.png b/stashboard/static/images/icons/iconic/left_quote.png new file mode 100644 index 00000000..e408916b Binary files /dev/null and b/stashboard/static/images/icons/iconic/left_quote.png differ diff --git a/stashboard/static/images/icons/iconic/left_quote_alt.png b/stashboard/static/images/icons/iconic/left_quote_alt.png new file mode 100644 index 00000000..e91d0936 Binary files /dev/null and b/stashboard/static/images/icons/iconic/left_quote_alt.png differ diff --git a/stashboard/static/images/icons/iconic/link.png b/stashboard/static/images/icons/iconic/link.png new file mode 100644 index 00000000..94e97728 Binary files /dev/null and b/stashboard/static/images/icons/iconic/link.png differ diff --git a/stashboard/static/images/icons/iconic/loop.png b/stashboard/static/images/icons/iconic/loop.png new file mode 100644 index 00000000..fb9d6e2a Binary files /dev/null and b/stashboard/static/images/icons/iconic/loop.png differ diff --git a/stashboard/static/images/icons/iconic/magnifying_glass.png b/stashboard/static/images/icons/iconic/magnifying_glass.png new file mode 100644 index 00000000..3ad5a5ad Binary files /dev/null and b/stashboard/static/images/icons/iconic/magnifying_glass.png differ diff --git a/stashboard/static/images/icons/iconic/magnifying_glass_alt.png b/stashboard/static/images/icons/iconic/magnifying_glass_alt.png new file mode 100644 index 00000000..a006f6b3 Binary files /dev/null and b/stashboard/static/images/icons/iconic/magnifying_glass_alt.png differ diff --git a/stashboard/static/images/icons/iconic/map_pin_fill.png b/stashboard/static/images/icons/iconic/map_pin_fill.png new file mode 100644 index 00000000..f87dabcf Binary files /dev/null and b/stashboard/static/images/icons/iconic/map_pin_fill.png differ diff --git a/stashboard/static/images/icons/iconic/map_pin_stroke.png b/stashboard/static/images/icons/iconic/map_pin_stroke.png new file mode 100644 index 00000000..69b67e0e Binary files /dev/null and b/stashboard/static/images/icons/iconic/map_pin_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/minus_alt.png b/stashboard/static/images/icons/iconic/minus_alt.png new file mode 100644 index 00000000..df29cf3e Binary files /dev/null and b/stashboard/static/images/icons/iconic/minus_alt.png differ diff --git a/stashboard/static/images/icons/iconic/moon_fill.png b/stashboard/static/images/icons/iconic/moon_fill.png new file mode 100644 index 00000000..5ea4479e Binary files /dev/null and b/stashboard/static/images/icons/iconic/moon_fill.png differ diff --git a/stashboard/static/images/icons/iconic/moon_stroke.png b/stashboard/static/images/icons/iconic/moon_stroke.png new file mode 100644 index 00000000..87147e7d Binary files /dev/null and b/stashboard/static/images/icons/iconic/moon_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/move.png b/stashboard/static/images/icons/iconic/move.png new file mode 100644 index 00000000..c25995d9 Binary files /dev/null and b/stashboard/static/images/icons/iconic/move.png differ diff --git a/stashboard/static/images/icons/iconic/move_alt1.png b/stashboard/static/images/icons/iconic/move_alt1.png new file mode 100644 index 00000000..06d167f3 Binary files /dev/null and b/stashboard/static/images/icons/iconic/move_alt1.png differ diff --git a/stashboard/static/images/icons/iconic/move_alt2.png b/stashboard/static/images/icons/iconic/move_alt2.png new file mode 100644 index 00000000..687e0709 Binary files /dev/null and b/stashboard/static/images/icons/iconic/move_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/move_horizontal_alt2.png b/stashboard/static/images/icons/iconic/move_horizontal_alt2.png new file mode 100644 index 00000000..cb40273a Binary files /dev/null and b/stashboard/static/images/icons/iconic/move_horizontal_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/move_vertical_alt2.png b/stashboard/static/images/icons/iconic/move_vertical_alt2.png new file mode 100644 index 00000000..d10076e8 Binary files /dev/null and b/stashboard/static/images/icons/iconic/move_vertical_alt2.png differ diff --git a/stashboard/static/images/icons/iconic/movie.png b/stashboard/static/images/icons/iconic/movie.png new file mode 100644 index 00000000..5b9c2baa Binary files /dev/null and b/stashboard/static/images/icons/iconic/movie.png differ diff --git a/stashboard/static/images/icons/iconic/new_window.png b/stashboard/static/images/icons/iconic/new_window.png new file mode 100644 index 00000000..bcc8b190 Binary files /dev/null and b/stashboard/static/images/icons/iconic/new_window.png differ diff --git a/stashboard/static/images/icons/iconic/pen.png b/stashboard/static/images/icons/iconic/pen.png new file mode 100644 index 00000000..c4f1f148 Binary files /dev/null and b/stashboard/static/images/icons/iconic/pen.png differ diff --git a/stashboard/static/images/icons/iconic/pen_alt_fill.png b/stashboard/static/images/icons/iconic/pen_alt_fill.png new file mode 100644 index 00000000..4e01fb88 Binary files /dev/null and b/stashboard/static/images/icons/iconic/pen_alt_fill.png differ diff --git a/stashboard/static/images/icons/iconic/pen_alt_stroke.png b/stashboard/static/images/icons/iconic/pen_alt_stroke.png new file mode 100644 index 00000000..09f187ac Binary files /dev/null and b/stashboard/static/images/icons/iconic/pen_alt_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/pin.png b/stashboard/static/images/icons/iconic/pin.png new file mode 100644 index 00000000..4d94582e Binary files /dev/null and b/stashboard/static/images/icons/iconic/pin.png differ diff --git a/stashboard/static/images/icons/iconic/play_alt.png b/stashboard/static/images/icons/iconic/play_alt.png new file mode 100644 index 00000000..a5d37a63 Binary files /dev/null and b/stashboard/static/images/icons/iconic/play_alt.png differ diff --git a/stashboard/static/images/icons/iconic/plus.png b/stashboard/static/images/icons/iconic/plus.png new file mode 100644 index 00000000..55107c00 Binary files /dev/null and b/stashboard/static/images/icons/iconic/plus.png differ diff --git a/stashboard/static/images/icons/iconic/plus_alt.png b/stashboard/static/images/icons/iconic/plus_alt.png new file mode 100644 index 00000000..9d4685e4 Binary files /dev/null and b/stashboard/static/images/icons/iconic/plus_alt.png differ diff --git a/stashboard/static/images/icons/iconic/read_more.png b/stashboard/static/images/icons/iconic/read_more.png new file mode 100644 index 00000000..364efa27 Binary files /dev/null and b/stashboard/static/images/icons/iconic/read_more.png differ diff --git a/stashboard/static/images/icons/iconic/right_quote.png b/stashboard/static/images/icons/iconic/right_quote.png new file mode 100644 index 00000000..a1e6c46e Binary files /dev/null and b/stashboard/static/images/icons/iconic/right_quote.png differ diff --git a/stashboard/static/images/icons/iconic/right_quote_alt.png b/stashboard/static/images/icons/iconic/right_quote_alt.png new file mode 100644 index 00000000..6bc993b7 Binary files /dev/null and b/stashboard/static/images/icons/iconic/right_quote_alt.png differ diff --git a/stashboard/static/images/icons/iconic/rss.png b/stashboard/static/images/icons/iconic/rss.png new file mode 100644 index 00000000..4e8ac0e7 Binary files /dev/null and b/stashboard/static/images/icons/iconic/rss.png differ diff --git a/stashboard/static/images/icons/iconic/rss_alt.png b/stashboard/static/images/icons/iconic/rss_alt.png new file mode 100644 index 00000000..7696c145 Binary files /dev/null and b/stashboard/static/images/icons/iconic/rss_alt.png differ diff --git a/stashboard/static/images/icons/iconic/spin_alt.png b/stashboard/static/images/icons/iconic/spin_alt.png new file mode 100644 index 00000000..bd789bd9 Binary files /dev/null and b/stashboard/static/images/icons/iconic/spin_alt.png differ diff --git a/stashboard/static/images/icons/iconic/star.png b/stashboard/static/images/icons/iconic/star.png new file mode 100644 index 00000000..d8f798a7 Binary files /dev/null and b/stashboard/static/images/icons/iconic/star.png differ diff --git a/stashboard/static/images/icons/iconic/stop.png b/stashboard/static/images/icons/iconic/stop.png new file mode 100644 index 00000000..bd31ab42 Binary files /dev/null and b/stashboard/static/images/icons/iconic/stop.png differ diff --git a/stashboard/static/images/icons/iconic/sun.png b/stashboard/static/images/icons/iconic/sun.png new file mode 100644 index 00000000..e133bb83 Binary files /dev/null and b/stashboard/static/images/icons/iconic/sun.png differ diff --git a/stashboard/static/images/icons/iconic/tag_fill.png b/stashboard/static/images/icons/iconic/tag_fill.png new file mode 100644 index 00000000..1e363c40 Binary files /dev/null and b/stashboard/static/images/icons/iconic/tag_fill.png differ diff --git a/stashboard/static/images/icons/iconic/tag_stroke.png b/stashboard/static/images/icons/iconic/tag_stroke.png new file mode 100644 index 00000000..e1d5f5ae Binary files /dev/null and b/stashboard/static/images/icons/iconic/tag_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/trash_fill.png b/stashboard/static/images/icons/iconic/trash_fill.png new file mode 100644 index 00000000..fca60b6e Binary files /dev/null and b/stashboard/static/images/icons/iconic/trash_fill.png differ diff --git a/stashboard/static/images/icons/iconic/trash_stroke.png b/stashboard/static/images/icons/iconic/trash_stroke.png new file mode 100644 index 00000000..b3d93cf4 Binary files /dev/null and b/stashboard/static/images/icons/iconic/trash_stroke.png differ diff --git a/stashboard/static/images/icons/iconic/undo.png b/stashboard/static/images/icons/iconic/undo.png new file mode 100644 index 00000000..a9d1b958 Binary files /dev/null and b/stashboard/static/images/icons/iconic/undo.png differ diff --git a/stashboard/static/images/icons/iconic/x_alt.png b/stashboard/static/images/icons/iconic/x_alt.png new file mode 100644 index 00000000..c012dfec Binary files /dev/null and b/stashboard/static/images/icons/iconic/x_alt.png differ diff --git a/static/images/logo.png b/stashboard/static/images/logo.png similarity index 100% rename from static/images/logo.png rename to stashboard/static/images/logo.png diff --git a/stashboard/static/images/mustacheman.png b/stashboard/static/images/mustacheman.png new file mode 100644 index 00000000..927071cc Binary files /dev/null and b/stashboard/static/images/mustacheman.png differ diff --git a/stashboard/static/images/oauth_logo.jpg b/stashboard/static/images/oauth_logo.jpg new file mode 100644 index 00000000..d12c9781 Binary files /dev/null and b/stashboard/static/images/oauth_logo.jpg differ diff --git a/static/images/poweredbystash.png b/stashboard/static/images/poweredbystash.png similarity index 100% rename from static/images/poweredbystash.png rename to stashboard/static/images/poweredbystash.png diff --git a/static/images/small-information.png b/stashboard/static/images/small-information.png similarity index 100% rename from static/images/small-information.png rename to stashboard/static/images/small-information.png diff --git a/static/images/sub-nav-selected-arrow.png b/stashboard/static/images/sub-nav-selected-arrow.png similarity index 100% rename from static/images/sub-nav-selected-arrow.png rename to stashboard/static/images/sub-nav-selected-arrow.png diff --git a/static/images/widget/blue.png b/stashboard/static/images/widget/blue.png similarity index 100% rename from static/images/widget/blue.png rename to stashboard/static/images/widget/blue.png diff --git a/static/images/widget/green.png b/stashboard/static/images/widget/green.png similarity index 100% rename from static/images/widget/green.png rename to stashboard/static/images/widget/green.png diff --git a/static/images/widget/red.png b/stashboard/static/images/widget/red.png similarity index 100% rename from static/images/widget/red.png rename to stashboard/static/images/widget/red.png diff --git a/static/images/widget/yellow.png b/stashboard/static/images/widget/yellow.png similarity index 100% rename from static/images/widget/yellow.png rename to stashboard/static/images/widget/yellow.png diff --git a/stashboard/static/js/admin.js b/stashboard/static/js/admin.js new file mode 100644 index 00000000..2626808d --- /dev/null +++ b/stashboard/static/js/admin.js @@ -0,0 +1,37 @@ +var stashboard = (function (parent, $) { + + $(document).ready(function(){ + + $("form.admin").submit(function(e){ + e.preventDefault(); + $.post($("form.admin").attr("action"), + $("form.admin").serialize(), function(data){ + location.href = $("form.admin link").attr("href"); + }, "json") + .error(function(jqXHR){ + var data = JSON.parse(jqXHR.responseText); + $(".error").html(data.message); + $(".error").show(); + }); + }); + + $("form.delete").submit(function(e){ + e.preventDefault(); + $.ajax({ + type: "DELETE", + data: {}, + dataType: "json", + url: $("form.delete").attr("action"), + success: function(data){ + location.href = $("form.delete link").attr("href"); + }, + error: function(data){ + $(".error").html(data.message); + $(".error").show(); + } + }); + }); + + }); + +}(stashboard || {}, jQuery)); \ No newline at end of file diff --git a/stashboard/static/js/backbone.js b/stashboard/static/js/backbone.js new file mode 100644 index 00000000..161b401e --- /dev/null +++ b/stashboard/static/js/backbone.js @@ -0,0 +1,27 @@ +// Backbone.js 0.3.3 +// (c) 2010 Jeremy Ashkenas, DocumentCloud Inc. +// Backbone may be freely distributed under the MIT license. +// For all details and documentation: +// http://documentcloud.github.com/backbone +(function(){var e;e=typeof exports!=="undefined"?exports:this.Backbone={};e.VERSION="0.3.3";var f=this._;if(!f&&typeof require!=="undefined")f=require("underscore")._;var h=this.jQuery||this.Zepto;e.emulateHTTP=false;e.emulateJSON=false;e.Events={bind:function(a,b){this._callbacks||(this._callbacks={});(this._callbacks[a]||(this._callbacks[a]=[])).push(b);return this},unbind:function(a,b){var c;if(a){if(c=this._callbacks)if(b){c=c[a];if(!c)return this;for(var d=0,g=c.length;d/g,">").replace(/"/g, +""")},set:function(a,b){b||(b={});if(!a)return this;if(a.attributes)a=a.attributes;var c=this.attributes,d=this._escapedAttributes;if(!b.silent&&this.validate&&!this._performValidation(a,b))return false;if("id"in a)this.id=a.id;for(var g in a){var i=a[g];if(!f.isEqual(c[g],i)){c[g]=i;delete d[g];if(!b.silent){this._changed=true;this.trigger("change:"+g,this,i,b)}}}!b.silent&&this._changed&&this.change(b);return this},unset:function(a,b){b||(b={});var c={};c[a]=void 0;if(!b.silent&&this.validate&& +!this._performValidation(c,b))return false;delete this.attributes[a];delete this._escapedAttributes[a];if(!b.silent){this._changed=true;this.trigger("change:"+a,this,void 0,b);this.change(b)}return this},clear:function(a){a||(a={});var b=this.attributes,c={};for(attr in b)c[attr]=void 0;if(!a.silent&&this.validate&&!this._performValidation(c,a))return false;this.attributes={};this._escapedAttributes={};if(!a.silent){this._changed=true;for(attr in b)this.trigger("change:"+attr,this,void 0,a);this.change(a)}return this}, +fetch:function(a){a||(a={});var b=this,c=j(a.error,b,a);(this.sync||e.sync)("read",this,function(d){if(!b.set(b.parse(d),a))return false;a.success&&a.success(b,d)},c);return this},save:function(a,b){b||(b={});if(a&&!this.set(a,b))return false;var c=this,d=j(b.error,c,b),g=this.isNew()?"create":"update";(this.sync||e.sync)(g,this,function(i){if(!c.set(c.parse(i),b))return false;b.success&&b.success(c,i)},d);return this},destroy:function(a){a||(a={});var b=this,c=j(a.error,b,a);(this.sync||e.sync)("delete", +this,function(d){b.collection&&b.collection.remove(b);a.success&&a.success(b,d)},c);return this},url:function(){var a=k(this.collection);if(this.isNew())return a;return a+(a.charAt(a.length-1)=="/"?"":"/")+this.id},parse:function(a){return a},clone:function(){return new this.constructor(this)},isNew:function(){return!this.id},change:function(a){this.trigger("change",this,a);this._previousAttributes=f.clone(this.attributes);this._changed=false},hasChanged:function(a){if(a)return this._previousAttributes[a]!= +this.attributes[a];return this._changed},changedAttributes:function(a){a||(a=this.attributes);var b=this._previousAttributes,c=false,d;for(d in a)if(!f.isEqual(b[d],a[d])){c=c||{};c[d]=a[d]}return c},previous:function(a){if(!a||!this._previousAttributes)return null;return this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},_performValidation:function(a,b){var c=this.validate(a);if(c){b.error?b.error(this,c):this.trigger("error",this,c,b);return false}return true}}); +e.Collection=function(a,b){b||(b={});if(b.comparator){this.comparator=b.comparator;delete b.comparator}this._boundOnModelEvent=f.bind(this._onModelEvent,this);this._reset();a&&this.refresh(a,{silent:true});this.initialize(a,b)};f.extend(e.Collection.prototype,e.Events,{model:e.Model,initialize:function(){},toJSON:function(){return this.map(function(a){return a.toJSON()})},add:function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c').hide().appendTo("body")[0].contentWindow; +"onhashchange"in window&&!a?h(window).bind("hashchange",this.checkUrl):setInterval(this.checkUrl,this.interval);return this.loadUrl()},route:function(a,b){this.handlers.push({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();if(a==this.fragment&&this.iframe)a=this.getFragment(this.iframe.location);if(a==this.fragment||a==decodeURIComponent(this.fragment))return false;if(this.iframe)window.location.hash=this.iframe.location.hash=a;this.loadUrl()},loadUrl:function(){var a=this.fragment= +this.getFragment();return f.any(this.handlers,function(b){if(b.route.test(a)){b.callback(a);return true}})},saveLocation:function(a){a=(a||"").replace(l,"");if(this.fragment!=a){window.location.hash=this.fragment=a;if(this.iframe&&a!=this.getFragment(this.iframe.location)){this.iframe.document.open().close();this.iframe.location.hash=a}}}});e.View=function(a){this._configure(a||{});this._ensureElement();this.delegateEvents();this.initialize(a)};var q=/^(\w+)\s*(.*)$/;f.extend(e.View.prototype,e.Events, +{tagName:"div",$:function(a){return h(a,this.el)},initialize:function(){},render:function(){return this},remove:function(){h(this.el).remove();return this},make:function(a,b,c){a=document.createElement(a);b&&h(a).attr(b);c&&h(a).html(c);return a},delegateEvents:function(a){if(a||(a=this.events)){h(this.el).unbind();for(var b in a){var c=a[b],d=b.match(q),g=d[1];d=d[2];c=f.bind(this[c],this);d===""?h(this.el).bind(g,c):h(this.el).delegate(d,g,c)}}},_configure:function(a){if(this.options)a=f.extend({}, +this.options,a);if(a.model)this.model=a.model;if(a.collection)this.collection=a.collection;if(a.el)this.el=a.el;if(a.id)this.id=a.id;if(a.className)this.className=a.className;if(a.tagName)this.tagName=a.tagName;this.options=a},_ensureElement:function(){if(!this.el){var a={};if(this.id)a.id=this.id;if(this.className)a["class"]=this.className;this.el=this.make(this.tagName,a)}}});var m=function(a,b){var c=r(this,a,b);c.extend=m;return c};e.Model.extend=e.Collection.extend=e.Controller.extend=e.View.extend= +m;var s={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};e.sync=function(a,b,c,d){var g=s[a];a=a==="create"||a==="update"?JSON.stringify(b.toJSON()):null;b={url:k(b),type:g,contentType:"application/json",data:a,dataType:"json",processData:false,success:c,error:d};if(e.emulateJSON){b.contentType="application/x-www-form-urlencoded";b.processData=true;b.data=a?{model:a}:{}}if(e.emulateHTTP)if(g==="PUT"||g==="DELETE"){if(e.emulateJSON)b.data._method=g;b.type="POST";b.beforeSend=function(i){i.setRequestHeader("X-HTTP-Method-Override", +g)}}h.ajax(b)};var n=function(){},r=function(a,b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){return a.apply(this,arguments)};n.prototype=a.prototype;d.prototype=new n;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},k=function(a){if(!(a&&a.url))throw Error("A 'url' property or function must be specified");return f.isFunction(a.url)?a.url():a.url},j=function(a,b,c){return function(d){a?a(b,d):b.trigger("error",b,d,c)}}})(); diff --git a/static/js/prettify.js b/stashboard/static/js/prettify.js similarity index 100% rename from static/js/prettify.js rename to stashboard/static/js/prettify.js diff --git a/stashboard/static/js/stashboard.js b/stashboard/static/js/stashboard.js new file mode 100644 index 00000000..36aae9c5 --- /dev/null +++ b/stashboard/static/js/stashboard.js @@ -0,0 +1,65 @@ +var stashboard = (function (parent, $) { + + var Service = Backbone.Model.extend({ + + loadHistory: function() { + // pass + }, + + loadStatus: function() { + url = "/api/v1/services/" + this.get("slug") + "/events/current"; + $.getJSON(url, {}, function(data){ + this.set({"status": data}); + }); + }, + + + }); + + var ServiceList = Backbone.Collection.extend({ + model: Service + }); + + var Services = new ServiceList; + + var ServiceView = Backbone.View.extend({ + + initialize: function() { + _.bindAll(this, 'status'); + + // The table row already exists in the DOM + this.el = $("#" + this.model.slug); + this.model.bind('change:status', this.status); + //this.model.bind('change:history', this.history); + this.model.view = this; + + // Load the history and status + //this.model.loadHistory(); + this.model.loadStatus(); + }, + + status: function() { + console.log(this.model.status); + } + + }); + + var ServicesView = Backbone.View.extend({ + + initialize: function() { + Services.bind('refresh', this.fetchAdditional); + }, + + fetchAdditional: function() { + Services.each(function(m) { + new ServiceView({model: m}); + }); + } + + }); + + var App = new ServicesView; + parent.services = Services; + + return parent; +}(stashboard || {}, jQuery)); \ No newline at end of file diff --git a/stashboard/static/js/underscore.js b/stashboard/static/js/underscore.js new file mode 100644 index 00000000..f502cf9f --- /dev/null +++ b/stashboard/static/js/underscore.js @@ -0,0 +1,26 @@ +// Underscore.js 1.1.6 +// (c) 2011 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the MIT license. +// Portions of Underscore are inspired or borrowed from Prototype, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore +(function(){var p=this,C=p._,m={},i=Array.prototype,n=Object.prototype,f=i.slice,D=i.unshift,E=n.toString,l=n.hasOwnProperty,s=i.forEach,t=i.map,u=i.reduce,v=i.reduceRight,w=i.filter,x=i.every,y=i.some,o=i.indexOf,z=i.lastIndexOf;n=Array.isArray;var F=Object.keys,q=Function.prototype.bind,b=function(a){return new j(a)};typeof module!=="undefined"&&module.exports?(module.exports=b,b._=b):p._=b;b.VERSION="1.1.6";var h=b.each=b.forEach=function(a,c,d){if(a!=null)if(s&&a.forEach===s)a.forEach(c,d);else if(b.isNumber(a.length))for(var e= +0,k=a.length;e=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a, +c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};h(a,function(a,b,f){b=c?c.call(d,a,b,f):a;bd?1:0}),"value")};b.sortedIndex=function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=f.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c), +e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=function(a,b){return function(){if(--a<1)return b.apply(this,arguments)}};b.keys=F||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)l.call(a,d)&&(b[b.length]=d);return b};b.values=function(a){return b.map(a, +b.identity)};b.functions=b.methods=function(a){return b.filter(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a){h(f.call(arguments,1),function(b){for(var d in b)b[d]!==void 0&&(a[d]=b[d])});return a};b.defaults=function(a){h(f.call(arguments,1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,c){if(a===c)return!0;var d=typeof a;if(d!= +typeof c)return!1;if(a==c)return!0;if(!a&&c||a&&!c)return!1;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return!1;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return!1;if(a.length&&a.length!==c.length)return!1;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return!1; +for(var f in a)if(!(f in c)||!b.isEqual(a[f],c[f]))return!1;return!0};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(l.call(a,c))return!1;return!0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=n||function(a){return E.call(a)==="[object Array]"};b.isArguments=function(a){return!(!a||!l.call(a,"callee"))};b.isFunction=function(a){return!(!a||!a.constructor||!a.call||!a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)}; +b.isNumber=function(a){return!!(a===0||a&&a.toExponential&&a.toFixed)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===!0||a===!1};b.isDate=function(a){return!(!a||!a.getTimezoneOffset||!a.setUTCFullYear)};b.isRegExp=function(a){return!(!a||!a.test||!a.exec||!(a.ignoreCase||a.ignoreCase===!1))};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.noConflict=function(){p._=C;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e= +0;e/g,interpolate:/<%=([\s\S]+?)%>/g};b.template=function(a,c){var d=b.templateSettings;d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.interpolate,function(a,b){return"',"+b.replace(/\\'/g,"'")+",'"}).replace(d.evaluate|| +null,function(a,b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+"__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');";d=new Function("obj",d);return c?d(c):d};var j=function(a){this._wrapped=a};b.prototype=j.prototype;var r=function(a,c){return c?b(a).chain():a},H=function(a,c){j.prototype[a]=function(){var a=f.call(arguments);D.call(a,this._wrapped);return r(c.apply(b,a),this._chain)}};b.mixin(b);h(["pop","push","reverse","shift","sort", +"splice","unshift"],function(a){var b=i[a];j.prototype[a]=function(){b.apply(this._wrapped,arguments);return r(this._wrapped,this._chain)}});h(["concat","join","slice"],function(a){var b=i[a];j.prototype[a]=function(){return r(b.apply(this._wrapped,arguments),this._chain)}});j.prototype.chain=function(){this._chain=!0;return this};j.prototype.value=function(){return this._wrapped}})(); diff --git a/static/widget/statusalert.js b/stashboard/static/js/widget/statusalert.js similarity index 100% rename from static/widget/statusalert.js rename to stashboard/static/js/widget/statusalert.js diff --git a/stashboard/templates/404.html b/stashboard/templates/404.html new file mode 100644 index 00000000..dde648dc --- /dev/null +++ b/stashboard/templates/404.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block content %} + +
    +
    +

    Hmm, I couldn't find that page.

    +

    + At least we still have our mustaches +

    +

    + Man with mustache +
    + +{% endblock %} diff --git a/stashboard/templates/_legend.html b/stashboard/templates/_legend.html new file mode 100644 index 00000000..f0cf96bc --- /dev/null +++ b/stashboard/templates/_legend.html @@ -0,0 +1,11 @@ +
    +

    Status Legend

    +
      + {% for status in statuses %} +
    • + {{ status.title }} +

      {{ status.description }}

      +
    • + {% endfor %} +
    +
    diff --git a/stashboard/templates/admin/admin.html b/stashboard/templates/admin/admin.html new file mode 100644 index 00000000..81416624 --- /dev/null +++ b/stashboard/templates/admin/admin.html @@ -0,0 +1,27 @@ +{% extends "base.html" %} + +{% block js %} + + +{% endblock %} + +{% block content %} + + +{% block section %} + +{% endblock %} + +{% endblock %} diff --git a/stashboard/templates/admin/credentials.html b/stashboard/templates/admin/credentials.html new file mode 100644 index 00000000..95c555db --- /dev/null +++ b/stashboard/templates/admin/credentials.html @@ -0,0 +1,51 @@ +{% extends "admin/admin.html" %} + +{% block section%} +
    +

    OAuth Credentials

    + + OAuth Logo + +
    + + + + + + + + + + + + + {% if authorized %} + + + + + + + + + + + + {% endif %} + +
    Consumer Key:{{ consumer_key }}
    Consumer Secret:{{ consumer_secret }}
    OAuth Token:{{ oauth_token }}
    OAuth Token Secret:{{ oauth_token_secret }}
    + + {% if not authorized %} + +

    + You haven't authorized your account with StashBoard + Authorize Now +

    + + {% endif %} + +
    + +
    + +{% endblock %} diff --git a/stashboard/templates/admin/events_create.html b/stashboard/templates/admin/events_create.html new file mode 100644 index 00000000..64260784 --- /dev/null +++ b/stashboard/templates/admin/events_create.html @@ -0,0 +1,30 @@ +{% extends "admin/admin.html" %} + +{% block section %} +
    + +

    Update Status of {{ service.name }}

    + +
    {{ error }}
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/events_delete.html b/stashboard/templates/admin/events_delete.html new file mode 100644 index 00000000..6e0c207e --- /dev/null +++ b/stashboard/templates/admin/events_delete.html @@ -0,0 +1,17 @@ +{% extends "admin/admin.html" %} + +{% block section %} +
    + +
    {{ error }}
    + +

    Are you sure you want to delete this event?

    + + + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/events_note.html b/stashboard/templates/admin/events_note.html new file mode 100644 index 00000000..565746a2 --- /dev/null +++ b/stashboard/templates/admin/events_note.html @@ -0,0 +1,24 @@ +{% extends "admin/admin.html" %} + +{% block section %} +
    + +

    Add Note on {{ service.name }}

    + +
    {{ error }}
    + + + +
    +
    +
    +
    + + + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/migrations.html b/stashboard/templates/admin/migrations.html new file mode 100644 index 00000000..a0887cad --- /dev/null +++ b/stashboard/templates/admin/migrations.html @@ -0,0 +1,23 @@ +{% extends "admin/admin.html" %} + +{% block section %} + +{% if notice %} +
    + {{ notice }} +
    +{% endif %} + +
      + {% for migration in migrations %} +
    • +
      + + +
      + {{ migration.name }} +
    • + {% endfor %} +
    + +{% endblock %} diff --git a/stashboard/templates/admin/services.html b/stashboard/templates/admin/services.html new file mode 100644 index 00000000..ab432dea --- /dev/null +++ b/stashboard/templates/admin/services.html @@ -0,0 +1,21 @@ +{% extends "admin/admin.html" %} + +{% block section %} + +

    Services

    + + + + + Create a Service + + +{% endblock %} diff --git a/stashboard/templates/admin/services_create.html b/stashboard/templates/admin/services_create.html new file mode 100644 index 00000000..6830341c --- /dev/null +++ b/stashboard/templates/admin/services_create.html @@ -0,0 +1,30 @@ +{% extends "admin/admin.html" %} + +{% block section %} + + +
    + +

    {{ action|title }} a Service

    + +
    {{ error }}
    + +
    +
    +
    +
    +
    +
    + + {% if slug %} + + {% else %} + + {% endif%} + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/services_delete.html b/stashboard/templates/admin/services_delete.html new file mode 100644 index 00000000..ced10661 --- /dev/null +++ b/stashboard/templates/admin/services_delete.html @@ -0,0 +1,17 @@ +{% extends "admin/admin.html" %} + +{% block section %} +
    + +
    {{ error }}
    + +

    Are you sure you want to delete the {{ name }} service?

    + + + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/services_instance.html b/stashboard/templates/admin/services_instance.html new file mode 100644 index 00000000..41a7d7e8 --- /dev/null +++ b/stashboard/templates/admin/services_instance.html @@ -0,0 +1,60 @@ +{% extends "admin/admin.html" %} + +{% block section %} + + + +

    {{ service.name }}

    + +

    {{ service.description }}

    + +{% if start_date %} +

    + {{ start_date|date:"n/j/Y" }} +

    +{% endif %} + + + + + + + + + + + + {% for e in events %} + + + + + + + {% empty %} + + {% endfor %} + +
    Date (GMT)StatusMessage +
    {{ e.start|timesince }} ago{{ e.status.title }}{{ e.message }}Delete
    No events!
    + + +{% endblock %} diff --git a/stashboard/templates/admin/setup.html b/stashboard/templates/admin/setup.html new file mode 100644 index 00000000..2b5ccdde --- /dev/null +++ b/stashboard/templates/admin/setup.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block content %} + +
    + +

    Your status dashboard is one click away

    + +

    We just need to install some sensible defaults before you get going

    + + + +
    + +{% endblock %} diff --git a/stashboard/templates/admin/status.html b/stashboard/templates/admin/status.html new file mode 100644 index 00000000..395e77d6 --- /dev/null +++ b/stashboard/templates/admin/status.html @@ -0,0 +1,21 @@ +{% extends "admin/admin.html" %} + +{% block section %} + +

    Statuses

    + +
      + {% for status in statuses %} +
    • + {{ status.name }} + Delete + Edit +
    • + {% endfor %} +
    + + + Create a Status + + +{% endblock %} diff --git a/stashboard/templates/admin/status_create.html b/stashboard/templates/admin/status_create.html new file mode 100644 index 00000000..ecf063f9 --- /dev/null +++ b/stashboard/templates/admin/status_create.html @@ -0,0 +1,45 @@ +{% extends "admin/admin.html" %} + +{% block section %} + + +
    + +

    {{ action|title }} a Status

    + +
    {{ error }}
    + +
    +
    +
    +
    +
    +
    +
    +
      + {% for i in images %} +
    • + + {{ i.slug }} +
    • + {% endfor %} +
    +
    +
    +
    + Yes +
    +
    + + {% if slug %} + + {% else %} + + {% endif%} + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/status_delete.html b/stashboard/templates/admin/status_delete.html new file mode 100644 index 00000000..c311c8ee --- /dev/null +++ b/stashboard/templates/admin/status_delete.html @@ -0,0 +1,17 @@ +{% extends "admin/admin.html" %} + +{% block section %} +
    + +
    {{ error }}
    + +

    Are you sure you want to delete the {{ status.name}} status?

    + + + + + +
    +{% endblock %} diff --git a/stashboard/templates/admin/status_edit.html b/stashboard/templates/admin/status_edit.html new file mode 100644 index 00000000..87284c32 --- /dev/null +++ b/stashboard/templates/admin/status_edit.html @@ -0,0 +1,45 @@ +{% extends "admin/admin.html" %} + +{% block section %} + + +
    + +

    {{ action|title }} a Status

    + +
    {{ error }}
    + +
    +
    +
    +
    +
    +
    +
    +
      + {% for i in images %} +
    • + + {{ i.slug }} +
    • + {% endfor %} +
    +
    +
    +
    + Yes +
    +
    + + {% if slug %} + + {% else %} + + {% endif%} + + + +
    +{% endblock %} diff --git a/views/default/authentication.html b/stashboard/templates/authentication.html similarity index 100% rename from views/default/authentication.html rename to stashboard/templates/authentication.html diff --git a/stashboard/templates/base.html b/stashboard/templates/base.html new file mode 100644 index 00000000..1c73bb8d --- /dev/null +++ b/stashboard/templates/base.html @@ -0,0 +1,49 @@ + + + + + {{ title }} + + + + {% block js %} + {% endblock %} + + +
    +
    +
    + {% if admin %} + Admin + {% endif %} + Report an Issue +
    + +

    {{ title }}

    +
    +
    + {% block content %} + {% endblock %} +
    +
    +
    + + {% block js_end %} + {% endblock %} + + diff --git a/views/default/basic/_legend.html b/stashboard/templates/basic/_legend.html similarity index 100% rename from views/default/basic/_legend.html rename to stashboard/templates/basic/_legend.html diff --git a/views/default/basic/base.html b/stashboard/templates/basic/base.html similarity index 100% rename from views/default/basic/base.html rename to stashboard/templates/basic/base.html diff --git a/views/default/basic/index.html b/stashboard/templates/basic/index.html similarity index 100% rename from views/default/basic/index.html rename to stashboard/templates/basic/index.html diff --git a/views/default/basic/service.html b/stashboard/templates/basic/service.html similarity index 100% rename from views/default/basic/service.html rename to stashboard/templates/basic/service.html diff --git a/stashboard/templates/documentation.html b/stashboard/templates/documentation.html new file mode 100644 index 00000000..4c20cb02 --- /dev/null +++ b/stashboard/templates/documentation.html @@ -0,0 +1,39 @@ +{% extends "base.html" %} +{% block js %} + + + + +{% endblock %} + +{% block content %} + + + + +
    + + {% block document %} + + {% endblock %} + + + +
    + +{% endblock %} diff --git a/views/default/examples.html b/stashboard/templates/examples.html similarity index 95% rename from views/default/examples.html rename to stashboard/templates/examples.html index 59b0f1a7..e7721ae9 100644 --- a/views/default/examples.html +++ b/stashboard/templates/examples.html @@ -6,9 +6,9 @@ >

    The following examples will use the StashBoard REST API to create a service, create a status, and then create an event with the new status for the new service. Sample code is provided for Python, Ruby, and PHP.

    If you haven't already, head over to the API Credentials section to obtain your API key. Please note that you must be an administrator to make changes via the REST API.

    If you haven't already, head over to the Application admin to obtain an OAuth token. Please note that you must be an administrator to make changes via the REST API.

    Python

    + + + Service + Current + {% for day in days %} + {{ day|date:"N d" }} + {% endfor %} + + + + {% for service in services %} + + + {{ service.name }} + + + + {% if service.has_issues %} + Had Issues + {% endif %} + {{ service.status.title }} + + + {% for h in service.history %} + + {% if h.information %} + + {{ h.title }} + + {% else %} + {{ h.title }} + {% endif %} + + {% endfor %} + {% endfor %} + + + +{% include "_legend.html" %} + +{% endblock %} diff --git a/views/default/notfound.html b/stashboard/templates/notfound.html similarity index 100% rename from views/default/notfound.html rename to stashboard/templates/notfound.html diff --git a/views/default/overview.html b/stashboard/templates/overview.html similarity index 100% rename from views/default/overview.html rename to stashboard/templates/overview.html diff --git a/views/default/post.html b/stashboard/templates/post.html similarity index 100% rename from views/default/post.html rename to stashboard/templates/post.html diff --git a/views/default/profile.html b/stashboard/templates/profile.html similarity index 100% rename from views/default/profile.html rename to stashboard/templates/profile.html diff --git a/views/default/restapi.html b/stashboard/templates/restapi.html similarity index 100% rename from views/default/restapi.html rename to stashboard/templates/restapi.html diff --git a/stashboard/templates/service.html b/stashboard/templates/service.html new file mode 100644 index 00000000..0364a06f --- /dev/null +++ b/stashboard/templates/service.html @@ -0,0 +1,53 @@ +{% extends "base.html" %} + +{% block content %} + +

    {{ service.name }}

    + +

    {{ service.description }}

    + +{% if start_date %} +

    + {{ start_date|date:"n/j/Y" }} +

    +{% endif %} + +{% if events %} + + + + + + + + + + {% for e in events %} + + + {% if e.informational %} + + + {% else %} + + + {% endif %} + + {% endfor %} + +
    TimeStatusMessage
    {{ e.start|timesince }} agoInformation{{ e.message }}{{ e.status.title }}{{ e.message }}
    +{% else %} +
    +
    +
    + Up + {% if start_date %} +

    No events here! The service was up and running for this time range.

    + {% else %} +

    No strange events, this service is up and running smoothly.

    + {% endif %} +
    +{% endif %} + +{% endblock %} + diff --git a/views/default/statusform.html b/stashboard/templates/statusform.html similarity index 100% rename from views/default/statusform.html rename to stashboard/templates/statusform.html diff --git a/views/default/unauthorized.html b/stashboard/templates/unauthorized.html similarity index 100% rename from views/default/unauthorized.html rename to stashboard/templates/unauthorized.html diff --git a/utils/external/__init__.py b/stashboard/utils/__init__.py similarity index 100% rename from utils/external/__init__.py rename to stashboard/utils/__init__.py diff --git a/stashboard/utils/authorized.py b/stashboard/utils/authorized.py new file mode 100755 index 00000000..683d8092 --- /dev/null +++ b/stashboard/utils/authorized.py @@ -0,0 +1,118 @@ +# The MIT License +# +# Copyright (c) 2008 William T. Katz +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +""" +authorized.py + +Created by William Katz on 2008-05-04. +Copyright (c) 2008 Publishare LLC. Distributed under MIT License. +""" +__author__ = 'William T. Katz' + +from google.appengine.api import users +from google.appengine.api import oauth + +import logging +import os + +def api(role): + """ + A decorator to enforce user roles in context of the API + """ + def wrapper(handler_method): + def check_login(self, *args, **kwargs): + host = self.request.headers.get('host', 'nohost') + try: + user = oauth.get_current_user() + admin = oauth.is_current_user_admin() + except oauth.OAuthRequestError, e: + admin = False + + if not admin: + user = users.get_current_user() + admin = users.is_current_user_admin() + + if not user: + logging.error("Unauthorized API access attempt") + self.error(403, "Authorization Failure") + elif role == "admin" and admin: + logging.info("Role is %s so will allow handler", role) + handler_method(self, *args, **kwargs) + elif user: + logging.error("User not in admin role") + self.error(403, "User not in admin role: %s" % role) + else: + logging.error("Unknown api role: %s", role) + self.error(403, "Unknown api role: %s" % role) + + return check_login + return wrapper + +def role(role): + """ + A decorator to enforce user roles, currently 'user' (logged in) + and 'admin'. + + To use it, decorate your handler methods like this: + + import authorized + @authorized.role("admin") + def get(self): + user = users.GetCurrentUser(self) + self.response.out.write('Hello, ' + user.nickname()) + + If this decorator is applied to a GET handler, we check if the + user is logged in and redirect her to the create_login_url() if not. + + For HTTP verbs other than GET, we cannot do redirects to the login + url because the return redirects are done as GETs (not the original + HTTP verb for the handler). So if the user is not logged in, we + return an error. + """ + def wrapper(handler_method): + def check_login(self, *args, **kwargs): + + user = users.get_current_user() + + if not user: + if self.request.method != 'GET': + logging.debug("Not user - aborting") + self.error(403) + else: + logging.debug("User not logged in -- force login") + self.redirect(users.create_login_url(self.request.uri)) + elif role == "user" or (role == "admin" and + users.is_current_user_admin()): + logging.debug("Role is %s so will allow handler", role) + handler_method(self, *args, **kwargs) + else: + if self.request.method == 'GET': + logging.debug("Unknown role (%s) on GET", role) + self.redirect("/403.html") + else: + logging.debug("Unknown role: %s", role) + self.error(403) # User didn't meet role. + # TODO: Give better feedback/status code. + return check_login + return wrapper + + diff --git a/utils/slugify.py b/stashboard/utils/slugify.py similarity index 100% rename from utils/slugify.py rename to stashboard/utils/slugify.py diff --git a/static/css/images/button_bg.png b/static/css/images/button_bg.png deleted file mode 100755 index 93f6f7ff..00000000 Binary files a/static/css/images/button_bg.png and /dev/null differ diff --git a/static/css/images/datepicker.gif b/static/css/images/datepicker.gif deleted file mode 100755 index 0aa2893c..00000000 Binary files a/static/css/images/datepicker.gif and /dev/null differ diff --git a/static/css/images/icon_sprite.png b/static/css/images/icon_sprite.png deleted file mode 100755 index 636c80f2..00000000 Binary files a/static/css/images/icon_sprite.png and /dev/null differ diff --git a/static/css/images/progress_bar.gif b/static/css/images/progress_bar.gif deleted file mode 100755 index 156fbb53..00000000 Binary files a/static/css/images/progress_bar.gif and /dev/null differ diff --git a/static/css/images/slider_h_bg.gif b/static/css/images/slider_h_bg.gif deleted file mode 100755 index 9f615a55..00000000 Binary files a/static/css/images/slider_h_bg.gif and /dev/null differ diff --git a/static/css/images/slider_handles.png b/static/css/images/slider_handles.png deleted file mode 100755 index b95a46ec..00000000 Binary files a/static/css/images/slider_handles.png and /dev/null differ diff --git a/static/css/images/slider_v_bg.gif b/static/css/images/slider_v_bg.gif deleted file mode 100755 index cc740a1c..00000000 Binary files a/static/css/images/slider_v_bg.gif and /dev/null differ diff --git a/static/css/images/tab_bg.gif b/static/css/images/tab_bg.gif deleted file mode 100755 index e19be23c..00000000 Binary files a/static/css/images/tab_bg.gif and /dev/null differ diff --git a/static/css/images/the_gradient.gif b/static/css/images/the_gradient.gif deleted file mode 100755 index b99b833d..00000000 Binary files a/static/css/images/the_gradient.gif and /dev/null differ diff --git a/static/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/static/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png deleted file mode 100755 index 954e22db..00000000 Binary files a/static/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png and /dev/null differ diff --git a/static/css/images/ui-bg_diagonals-thick_20_666666_40x40.png b/static/css/images/ui-bg_diagonals-thick_20_666666_40x40.png deleted file mode 100755 index 64ece570..00000000 Binary files a/static/css/images/ui-bg_diagonals-thick_20_666666_40x40.png and /dev/null differ diff --git a/static/css/images/ui-bg_flat_10_000000_40x100.png b/static/css/images/ui-bg_flat_10_000000_40x100.png deleted file mode 100755 index abdc0108..00000000 Binary files a/static/css/images/ui-bg_flat_10_000000_40x100.png and /dev/null differ diff --git a/static/css/images/ui-bg_glass_100_f6f6f6_1x400.png b/static/css/images/ui-bg_glass_100_f6f6f6_1x400.png deleted file mode 100755 index 9b383f4d..00000000 Binary files a/static/css/images/ui-bg_glass_100_f6f6f6_1x400.png and /dev/null differ diff --git a/static/css/images/ui-bg_glass_100_fdf5ce_1x400.png b/static/css/images/ui-bg_glass_100_fdf5ce_1x400.png deleted file mode 100755 index 45db83dc..00000000 Binary files a/static/css/images/ui-bg_glass_100_fdf5ce_1x400.png and /dev/null differ diff --git a/static/css/images/ui-bg_glass_65_ffffff_1x400.png b/static/css/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100755 index 42ccba26..00000000 Binary files a/static/css/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ diff --git a/static/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/static/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png deleted file mode 100755 index 39d5824d..00000000 Binary files a/static/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png and /dev/null differ diff --git a/static/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/static/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png deleted file mode 100755 index f1273672..00000000 Binary files a/static/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png and /dev/null differ diff --git a/static/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/static/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png deleted file mode 100755 index 359397ac..00000000 Binary files a/static/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png and /dev/null differ diff --git a/static/css/images/ui-icons_222222_256x240.png b/static/css/images/ui-icons_222222_256x240.png deleted file mode 100755 index b273ff11..00000000 Binary files a/static/css/images/ui-icons_222222_256x240.png and /dev/null differ diff --git a/static/css/images/ui-icons_228ef1_256x240.png b/static/css/images/ui-icons_228ef1_256x240.png deleted file mode 100755 index a641a371..00000000 Binary files a/static/css/images/ui-icons_228ef1_256x240.png and /dev/null differ diff --git a/static/css/images/ui-icons_ef8c08_256x240.png b/static/css/images/ui-icons_ef8c08_256x240.png deleted file mode 100755 index 85e63e9f..00000000 Binary files a/static/css/images/ui-icons_ef8c08_256x240.png and /dev/null differ diff --git a/static/css/images/ui-icons_ffd27a_256x240.png b/static/css/images/ui-icons_ffd27a_256x240.png deleted file mode 100755 index e117effa..00000000 Binary files a/static/css/images/ui-icons_ffd27a_256x240.png and /dev/null differ diff --git a/static/css/images/ui-icons_ffffff_256x240.png b/static/css/images/ui-icons_ffffff_256x240.png deleted file mode 100755 index 42f8f992..00000000 Binary files a/static/css/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/static/css/jqueryui.css b/static/css/jqueryui.css deleted file mode 100755 index fff5881e..00000000 --- a/static/css/jqueryui.css +++ /dev/null @@ -1,519 +0,0 @@ -/* -* Aristo for jQuery UI -* Licensed under Creative Commons Attribution-Share Alike 3.0 with permission from 280 North and Pinvoke. -*/ - -/* -* jQuery UI CSS Framework -* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) -* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. -*/ - -/* === Layout helpers === */ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* === Interaction Cues === */ -.ui-state-disabled { cursor: default !important; } - - -/* === Icons === */ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* === Misc visuals === -*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - - -/* === Component containers === */ -.ui-widget { font-family: Helvetica, Arial, sans-serif; outline: none;} -.ui-widget a { outline: none; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; color: #333333; background: #FFFFFF; } -.ui-widget-content a { color: #333333; } -.ui-widget-header { border: 1px solid #8ab0c6; background: #a7cfe6; color: #ffffff; font-weight: bold; } -.ui-widget-header a { color: #ffffff; } - -/* === Interaction states === */ -.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #5F83B9; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #749aaf; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } -.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* === Interaction Cues === */ -.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0px !important; -webkit-border-radius: 0px !important; border-radius: 0px !important; font-size: 11px; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #0d2054; } -.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0px !important; -webkit-border-radius: 0px !important; border-radius: 0px !important; font-size: 11px; } -.ui-state-error a, .ui-widget-content .ui-state-error a { color: #280b0b; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #280b0b; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } -.ui-state-highlight p, .ui-state-error p { margin: 8px 0px; padding: 1px 0px; } -.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin: -1px 8px 0px 0px !important; } - -/* === Icons === */ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_222222_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0px no-repeat !important; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background: url(images/icon_sprite.png) 0px 0px no-repeat !important; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - -/* === Corner radius === */ -.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } -.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } - -/* === Overlays === */ -.ui-widget-overlay { background: #222d3f; opacity: .70; filter:Alpha(Opacity=70); } -.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } - -/* === Resizable === */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} - -/* === Accordion === */ - -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; background: url(images/button_bg.png) repeat-x; } -.ui-accordion .ui-accordion-header .ui-state-default { background-position: 0px 0px; } -.ui-accordion .ui-accordion-header.ui-state-active { background-position: 0px -33px; border-color: #749aaf !important; } -.ui-accordion .ui-accordion-header.ui-state-hover, .ui-accordion h3.ui-state-default { border-color: #aaaaaa; } -.ui-accordion .ui-accordion-header.ui-state-active a { color:#1c4257; } -.ui-accordion .ui-accordion-header .ui-icon { background: url(images/icon_sprite.png); } -.ui-accordion .ui-state-active .ui-icon { background-position: 0px -64px; } -.ui-accordion .ui-state-default .ui-icon { background-position: -16px -80px; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 12px; padding: .5em .5em .5em .7em; font-weight: bold; color:#4f4f4f; text-shadow: 0px 1px 0px rgba(255,255,255,0.7); } -.ui-accordion-icons .ui-accordion-header a { padding-left: 24px; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -7px; } -.ui-accordion .ui-accordion-content { background: #f8fcfe; padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; font-size: 11px; border-color: #749aaf; } -.ui-accordion .ui-accordion-content-active { display: block; } -.ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } -.ui-accordion .ui-state-active { } - -/* === Autocomplete === */ -.ui-autocomplete { position: absolute; z-index: 2 !important; cursor: default; background: #FFFFFF; border: 0px none !important; padding: 0px !important; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); } -.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; } -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* === Menu === */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - border: 0px none; - padding:.2em .4em; - line-height:1.5; - -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - background: #5f83b9; - color: #FFFFFF; - text-shadow: 0px 1px 1px #234386; - font-weight: normal; -} - -/* === Button === */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; border: 0px none; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3em; } -button.ui-button-icons-only { width: 3.2em; } -.ui-button span { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; border: 1px solid; } - - -/* === INPUT:SUBMIT BUG FIX === */ -input.ui-button { background: url(images/button_bg.png) 0px 0px repeat-x !important; color: #4f4f4f; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; border: 1px solid #b6b6b6; outline: none; } -input.ui-button:hover { background: url(images/button_bg.png) 0px 0px repeat-x !important; color: #313131; border-color: #9d9d9d; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); -webkit-box-shadow: 0px 0px 8px rgba(212,212,212,1); box-shadow: 0px 0px 8px rgba(212,212,212,1); } -input.ui-button:active { background: url(images/button_bg.png) 0px bottom repeat-x !important; color: #4f4f4f; border-color: #b6b6b6; } - -/* === IE6 AND IE7 BUTTON WIDTH FIX === */ -.ui-button { *display: inline !important; } - -.ui-state-default .ui-button-text { background: url(images/button_bg.png) 0px 0px repeat-x !important; color: #4f4f4f; border-color: #b6b6b6; } -.ui-state-hover .ui-button-text { background: url(images/button_bg.png) 0px 0px repeat-x !important; color: #313131; border-color: #9d9d9d; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); -webkit-box-shadow: 0px 0px 8px rgba(212,212,212,1); box-shadow: 0px 0px 8px rgba(212,212,212,1); } -.ui-state-active .ui-button-text { background: url(images/button_bg.png) 0px bottom repeat-x !important; color: #4f4f4f; border-color: #b6b6b6; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; font-weight: bold; font-size: 14px; text-shadow: 0px 1px 0px rgba(255,255,255,0.8); } -.ui-button-text-only .ui-button-text { padding: 5px 12px; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: 5px; text-indent: -9999999px; } -.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: 5px 12px 5px 25px; } -.ui-button-text-icons .ui-button-text { padding-right: 1.8em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button .ui-icon { border: 0px none; } -.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; margin-left: 6px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon .ui-icon-primary, .ui-button-text-icons .ui-icon-primary, .ui-button-icons-only .ui-icon-primary { left: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } -.ui-buttonset, .ui-buttonset span { -moz-border-radius: 0px !important; -webkit-border-radius: 0px !important; border-radius: 0px !important; } -.ui-corner-left .ui-button-text { -moz-border-radius-topleft: 4px !important; -webkit-border-top-left-radius: 4px !important; border-top-left-radius: 4px !important; -moz-border-radius-bottomleft: 4px !important; -webkit-border-bottom-left-radius: 4px !important; border-bottom-left-radius: 4px !important; } -.ui-corner-right .ui-button-text { -moz-border-radius-topright: 4px !important; -webkit-border-top-right-radius: 4px !important; border-top-right-radius: 4px !important; -moz-border-radius-bottomright: 4px !important; -webkit-border-bottom-right-radius: 4px !important; border-bottom-right-radius: 4px !important; } -.ui-buttonset .ui-state-active .ui-button-text { cursor: default; background: url(images/button_bg.png) 0px -33px repeat-x !important; color: #1c4257; border-color: #7096ab; -moz-box-shadow: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ - - - - - -/* === Dialog === */ -.ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; background: #FFFFFF; -moz-box-shadow: 0px 5px 8px rgba(0,0,0,0.8); -webkit-box-shadow: 0px 5px 8px rgba(0,0,0,0.8); box-shadow: 0px 5px 8px rgba(0,0,0,0.8); } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; border-width: 0px 0px 1px 0px; border-color: #979797; background: url(images/the_gradient.gif) 0px 0px repeat-x; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 13px; color: #000000; text-shadow: 0px 1px 0px rgba(255,255,255,0.8); } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: 6px; top: 50%; width: 16px; margin: -9px 0 0 0; height: 16px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0px -16px no-repeat; } -.ui-dialog-titlebar .ui-state-hover { -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: 0px none; background: transparent; } -.ui-dialog .ui-state-hover span { background-position: -16px -16px ; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; font-size: 12px; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; background: transparent !important; border: 0px none; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } - -/* === Slider === */ -.ui-slider { position: relative; text-align: left; border: 0px none; } -.ui-state-focus .ui-slider-handle { border: 0px none; } -.ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: pointer; } -.ui-slider .ui-state-hover { background-position: 0px 0px !important; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } -.ui-slider .ui-state-default { border: 0px none; } - -.ui-slider-horizontal { height: 5px; background: url(images/slider_h_bg.gif) 0px 0px repeat-x;} -.ui-slider-horizontal .ui-slider-handle { top: -9px; margin-left: -12px; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; background: url(images/slider_h_bg.gif) 0px -5px repeat-x; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: 5px; height: 100px; background: url(images/slider_v_bg.gif) -5px 0px repeat-y; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: -.6em; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; background: url(images/slider_v_bg.gif) 0px 0px repeat-y; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } - -/* === Tabs === */ -.ui-tabs { background: #FFFFFF; position: relative; padding: .2em; zoom: 1; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: 0px none; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { border-color: #a8a8a8; border-width: 0px 0px 1px 0px; margin: 0; padding: 0; background: transparent; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border: 0; padding: 1em 1.4em; background: none; font-size: 12px; border-color: #a8a8a8; border-width: 0px 1px 1px 1px; border-style: solid; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px;} -.ui-tabs .ui-tabs-hide { display: none !important; } -.ui-tabs .ui-state-default { background: #cccccc url(images/button_bg.png) 0px 0px repeat-x; border-color: #a8a8a8; } - .ui-tabs .ui-state-default a { color: #4f4f4f !important; text-shadow: 0px 1px 0px rgba(255,255,255,0.8); } -.ui-tabs .ui-state-active { background: #FFFFFF; } -.ui-tabs-panel .ui-button { border-width: 0px; background: transparent; } - -/* === Datepicker === */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; background: #FFFFFF url(images/datepicker.gif) left top repeat-x; -moz-box-shadow: 0px 5px 10px rgba(0,0,0,0.8); -webkit-box-shadow: 0px 5px 10px rgba(0,0,0,0.8); box-shadow: 0px 5px 10px rgba(0,0,0,0.8); } -.ui-datepicker .ui-datepicker-header { position:relative; padding:2px 0px 6px 0px; background: transparent; -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: 0px none; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 16px; height: 16px; border: 0px none; cursor: pointer; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-header .ui-state-hover { background: transparent; border: 0px none; } -.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } -.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } -.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } -.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; color: #000000; text-shadow: 0px 1px 0px rgba(255,255,255,0.8); } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: 10px; border-collapse: collapse; margin: 0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: 2px 3px 3px; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker-buttonpane button { background: url(images/button_bg.png) 0px 0px repeat-x !important; color: #4f4f4f !important; border-color: #b6b6b6 !important; font-weight: bold !important; font-size: 12px; text-shadow: 0px 1px 0px rgba(255,255,255,0.8); } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } -.ui-datepicker .ui-datepicker-calendar a { background: transparent; border: 0px none; } -.ui-datepicker .ui-datepicker-calendar .ui-state-active { } -.ui-datepicker .ui-datepicker-calendar a.ui-state-hover { color: #1c4257; } -.ui-datepicker .ui-datepicker-current-day .ui-state-default { background: #5f83b9; color: #FFFFFF !important; text-shadow: 0px 1px 1px #234386; font-weight: bold; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -} - -/* === Progressbar === */ -.ui-progressbar { height: 12px; text-align: left; background: url(images/progress_bar.gif) 0px -14px repeat-x; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0px 0px repeat-x; } \ No newline at end of file diff --git a/static/css/reset.css b/static/css/reset.css deleted file mode 100644 index 1c85489d..00000000 --- a/static/css/reset.css +++ /dev/null @@ -1,53 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ */ -/* v1.0 | 20080212 */ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - background: transparent; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} - -/* remember to define focus styles! */ -:focus { - outline: 0; -} - -/* remember to highlight inserts somehow! */ -ins { - text-decoration: none; -} -del { - text-decoration: line-through; -} - -/* tables still need 'cellspacing="0"' in the markup */ -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/static/css/style.css b/static/css/style.css deleted file mode 100755 index 70f3781d..00000000 --- a/static/css/style.css +++ /dev/null @@ -1,214 +0,0 @@ -html, body{height: 100%;} -body{font:12px arial,helvetica,verdana,sans-serif;background: rgb(247, 247, 247);} - -a{color:#333;text-decoration:none;} -a:hover{color:#666;} - -#wrapper { width: 900px; min-height: 100%; - height: auto !important; height: 100%; margin: 0 auto -3em; - } - -h1 {font-size: 32px;} -h2 {font-size: 32px;} -h3 {font-size: 24px;} -h3.date-range {color: #999; margin-top: 20px} - -#header {height: 70px;} - -#header h1 {margin: 15px; float: left; height: 40px; line-height: 40px;} -#header h1 span {font-weight: normal;} -#header h2 {margin: 15px 0; float: left; line-height: 67px;} -#logo { height: 40px; float: left; margin: 15px 0;} - -#notice { - float: right; margin-top:17px; - border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; - padding: 10px; display: none; -} - -#notice.error { background: #FCF0F0; border: 1px solid #E2D0D0; } -#notice.success { background: green; } -#notice.info { background: yellow; } -#notice a { font-family: Arial; font-weight: bold;padding-left: 10px;} - -#status { height: 200px; } -#status h2 { font-size: 60px; color: #FFF; text-align: center; padding-top: 65px;text-shadow: 2px 2px 0px #000;} - -#content { - border: 1px solid rgb(228, 228, 228); - background: white; -} - -.frame { padding: 20px;} -.dialog { display: none; } - -#sidebar { float: right; margin: 20px; width: 250px; } - -#sidebar .panel { margin-bottom: 20px; } -#sidebar .panel { margin-bottom:20px; } -#sidebar .panel h3 { margin-bottom:7px; } -#sidebar .panel ul li { - background:url(images/li.gif) no-repeat 0 3px; - color:#7F7F7F;line-height:1.2em; - border-top:1px solid #BBB; - padding:4px 0 4px 16px; -} - -#add-service { margin-top: 20px;} -#add-status { margin-top: 20px;} - - - -/* wordpress entries styling - main content column */ -#webservices table { width: 100%; border-spacing:10; font-size: 1.1em;} -#webservices th {text-align: left;font-size: 20px;padding: 10px;border-bottom: 1px solid rgb(228, 228, 228);border-right: 1px solid rgb(228, 228, 228);} -#webservices tr {font-size: 16px;} -#webservices td {padding: 10px;border-bottom: 1px solid rgb(228, 228, 228);border-right: 1px solid rgb(228, 228, 228); vertical-align: middle;} -#webservices .today {background: rgb(228, 228, 228);} -#webservices .highlight {background: rgb(247, 247, 247);} -#webservices .status, #webservices .date, #webservices .today, .delete {text-align: center;} -#webservices table a {text-decoration: underline;} - -#webservices .event-log {margin-top: 20px; border-collapse: separate; border-left:1px solid #E4E4E4;border-top:1px solid #E4E4E4;} -#webservices .event-log thead {background:none repeat scroll 0 0 #EEEEEE;} -#webservices .event-log th {font-size: 16px;text-align: center;} -#webservices .event-log td {fonst-size: 14px;} -#webservices .event-log td:first-child {text-align: center;} -.status-header {width: 10%;} -.time-header {width: 20%;} -.delete-header {width: 8%;} - -#submit { - background: rgb(228, 228, 228); - border: 1px solid #ccc; - margin: 20px 0px; - padding: 10px; - text-align: right; -} - -#submit label { - float: left; - clear: left; - width: 55px; - padding: 10px; -} - -#submit h3 {text-align: left;} - -#submit .update-message { float: left; width: 390px; height: 100px; padding: 3px;} -#submit .update-status { float: left; margin: 10px 0px;} -#submit .update-submit { clear: left; display: block; margin-left: auto; width: 150px;} - -#legend table tr, #legend table th {font-size: 12px} -#legend h4 { color: #999; font-size: 18px; margin: 20px 0 5px 0;} -#legend table {border: solid 2px rgb(228, 228, 228);width: auto} -#legend table tr td:first-child {width: 16px;} -#legend td {padding: 5px} - - -#footer, #push {height: 3em;} -#footer {padding: 0 30px; width: 900px; margin: auto;} -#footer ul {padding: 10px 0px;} -#footer ul.left { float: left;} -#footer ul.right { float: right;} -#footer ul li {display: inline;} -#icons, #icons a{ color: #ccc; } - -td.status a{position: relative;} -td.status a .information {position: absolute; top: 0px; left: 1px; z-index: 500;} - -.dialog label, .dialog textarea, .dialog input - { margin: 10px; clear: right;} - -.dialog label {display: block;} - -.dialog textarea { width: 400px; height: 75px;} - -.breadcrumb { font-weight: normal;} - -#add-note, #update-status { float: right; margin-left: 15px} -#add-event-model {display: none;} - -#delete-service, #edit-service {margin-top: 20px} -#delete-service {float: right} -#delete-service-modal {display: none} - -#documentation { - font-size: 14px; -} - -#documentation a { color: #4476B5; text-decoration: underline;} - -#documentation p { margin: 10px 0px; } -#documentation h2 { margin: 20px 0 10px 0; } -#documentation h3 { margin: 15px 0px 10px 0; font-size: 24px; color:#555555;} -#documentation h4 { margin: 10px 0px; font-size: 22px; color: #4476B5;} -#documentation h5 { margin: 10px 0px; font-size: 16px;} - -#documentation table { - font-size: 12px; -} - -#documentation table td, #documentation table th { - padding: 10px; - border: 1px solid #555555; -} - -#documentation table td { -} - -#documentation table th { - background: #ccc; -} - -#documentation table caption {font-style: italic; text-align: right;} - - -#documentation nav ul { - height: 50px; background: #4476b5; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - broder-radius: 10px; - margin-bottom: 20px; - -} - -#documentation nav li { - float: left; - height: 50px; - margin: 0 20px; - line-height: 50px; -} - -#documentation nav li a { - display:block; - font-size:15px; - font-weight:bold; - text-decoration:none; - color: #F3FBEC; -} - -#documentation nav .selected { - background:url("../images/sub-nav-selected-arrow.png") no-repeat scroll center bottom transparent; -} - - - -#documentation blockquote, pre { - background: #F0F0F0; - margin: 10px 0; - padding: 10px; - width:auto; -} - -#documentation blockquote p { - margin: 0; -} - -#powered { - font-family: courier, monospace; - font-size: 10px; -} - - - diff --git a/static/images/status/address-book--arrow.png b/static/images/status/address-book--arrow.png deleted file mode 100755 index 2f4286ac..00000000 Binary files a/static/images/status/address-book--arrow.png and /dev/null differ diff --git a/static/images/status/address-book--exclamation.png b/static/images/status/address-book--exclamation.png deleted file mode 100755 index 527f6a16..00000000 Binary files a/static/images/status/address-book--exclamation.png and /dev/null differ diff --git a/static/images/status/address-book--minus.png b/static/images/status/address-book--minus.png deleted file mode 100755 index b315cda0..00000000 Binary files a/static/images/status/address-book--minus.png and /dev/null differ diff --git a/static/images/status/address-book--pencil.png b/static/images/status/address-book--pencil.png deleted file mode 100755 index 7abf41ac..00000000 Binary files a/static/images/status/address-book--pencil.png and /dev/null differ diff --git a/static/images/status/address-book--plus.png b/static/images/status/address-book--plus.png deleted file mode 100755 index 35facf6b..00000000 Binary files a/static/images/status/address-book--plus.png and /dev/null differ diff --git a/static/images/status/address-book-blue.png b/static/images/status/address-book-blue.png deleted file mode 100755 index 485fc361..00000000 Binary files a/static/images/status/address-book-blue.png and /dev/null differ diff --git a/static/images/status/address-book-open.png b/static/images/status/address-book-open.png deleted file mode 100755 index 621ca402..00000000 Binary files a/static/images/status/address-book-open.png and /dev/null differ diff --git a/static/images/status/address-book.png b/static/images/status/address-book.png deleted file mode 100755 index 91f7f871..00000000 Binary files a/static/images/status/address-book.png and /dev/null differ diff --git a/static/images/status/alarm-clock--arrow.png b/static/images/status/alarm-clock--arrow.png deleted file mode 100755 index 6fe38efd..00000000 Binary files a/static/images/status/alarm-clock--arrow.png and /dev/null differ diff --git a/static/images/status/alarm-clock--exclamation.png b/static/images/status/alarm-clock--exclamation.png deleted file mode 100755 index 8368fd5c..00000000 Binary files a/static/images/status/alarm-clock--exclamation.png and /dev/null differ diff --git a/static/images/status/alarm-clock--minus.png b/static/images/status/alarm-clock--minus.png deleted file mode 100755 index 013b66c9..00000000 Binary files a/static/images/status/alarm-clock--minus.png and /dev/null differ diff --git a/static/images/status/alarm-clock--pencil.png b/static/images/status/alarm-clock--pencil.png deleted file mode 100755 index b94dfbf2..00000000 Binary files a/static/images/status/alarm-clock--pencil.png and /dev/null differ diff --git a/static/images/status/alarm-clock--plus.png b/static/images/status/alarm-clock--plus.png deleted file mode 100755 index 24b8ec87..00000000 Binary files a/static/images/status/alarm-clock--plus.png and /dev/null differ diff --git a/static/images/status/alarm-clock-blue.png b/static/images/status/alarm-clock-blue.png deleted file mode 100755 index 4821bf49..00000000 Binary files a/static/images/status/alarm-clock-blue.png and /dev/null differ diff --git a/static/images/status/alarm-clock-select-remain.png b/static/images/status/alarm-clock-select-remain.png deleted file mode 100755 index e6d7bd4f..00000000 Binary files a/static/images/status/alarm-clock-select-remain.png and /dev/null differ diff --git a/static/images/status/alarm-clock-select.png b/static/images/status/alarm-clock-select.png deleted file mode 100755 index 05a741a5..00000000 Binary files a/static/images/status/alarm-clock-select.png and /dev/null differ diff --git a/static/images/status/alarm-clock.png b/static/images/status/alarm-clock.png deleted file mode 100755 index 518bdc11..00000000 Binary files a/static/images/status/alarm-clock.png and /dev/null differ diff --git a/static/images/status/anchor.png b/static/images/status/anchor.png deleted file mode 100755 index 5b49a83f..00000000 Binary files a/static/images/status/anchor.png and /dev/null differ diff --git a/static/images/status/application--arrow.png b/static/images/status/application--arrow.png deleted file mode 100755 index 5163bbbc..00000000 Binary files a/static/images/status/application--arrow.png and /dev/null differ diff --git a/static/images/status/application--exclamation.png b/static/images/status/application--exclamation.png deleted file mode 100755 index a78a0b34..00000000 Binary files a/static/images/status/application--exclamation.png and /dev/null differ diff --git a/static/images/status/application--minus.png b/static/images/status/application--minus.png deleted file mode 100755 index 923f0f5c..00000000 Binary files a/static/images/status/application--minus.png and /dev/null differ diff --git a/static/images/status/application--pencil.png b/static/images/status/application--pencil.png deleted file mode 100755 index ed282436..00000000 Binary files a/static/images/status/application--pencil.png and /dev/null differ diff --git a/static/images/status/application--plus.png b/static/images/status/application--plus.png deleted file mode 100755 index 80cfa3c2..00000000 Binary files a/static/images/status/application--plus.png and /dev/null differ diff --git a/static/images/status/application-block.png b/static/images/status/application-block.png deleted file mode 100755 index b6976147..00000000 Binary files a/static/images/status/application-block.png and /dev/null differ diff --git a/static/images/status/application-blog.png b/static/images/status/application-blog.png deleted file mode 100755 index 33b2358b..00000000 Binary files a/static/images/status/application-blog.png and /dev/null differ diff --git a/static/images/status/application-blue.png b/static/images/status/application-blue.png deleted file mode 100755 index 9d372aab..00000000 Binary files a/static/images/status/application-blue.png and /dev/null differ diff --git a/static/images/status/application-browser.png b/static/images/status/application-browser.png deleted file mode 100755 index eea81af0..00000000 Binary files a/static/images/status/application-browser.png and /dev/null differ diff --git a/static/images/status/application-detail.png b/static/images/status/application-detail.png deleted file mode 100755 index 964c687c..00000000 Binary files a/static/images/status/application-detail.png and /dev/null differ diff --git a/static/images/status/application-dialog.png b/static/images/status/application-dialog.png deleted file mode 100755 index 2140ecd8..00000000 Binary files a/static/images/status/application-dialog.png and /dev/null differ diff --git a/static/images/status/application-dock-090.png b/static/images/status/application-dock-090.png deleted file mode 100755 index 89ec10f5..00000000 Binary files a/static/images/status/application-dock-090.png and /dev/null differ diff --git a/static/images/status/application-dock-180.png b/static/images/status/application-dock-180.png deleted file mode 100755 index cdcbfbab..00000000 Binary files a/static/images/status/application-dock-180.png and /dev/null differ diff --git a/static/images/status/application-dock-270.png b/static/images/status/application-dock-270.png deleted file mode 100755 index dd0778e5..00000000 Binary files a/static/images/status/application-dock-270.png and /dev/null differ diff --git a/static/images/status/application-dock-tab.png b/static/images/status/application-dock-tab.png deleted file mode 100755 index 95bbc9ca..00000000 Binary files a/static/images/status/application-dock-tab.png and /dev/null differ diff --git a/static/images/status/application-dock.png b/static/images/status/application-dock.png deleted file mode 100755 index 0e51904b..00000000 Binary files a/static/images/status/application-dock.png and /dev/null differ diff --git a/static/images/status/application-document.png b/static/images/status/application-document.png deleted file mode 100755 index 17586b70..00000000 Binary files a/static/images/status/application-document.png and /dev/null differ diff --git a/static/images/status/application-documents.png b/static/images/status/application-documents.png deleted file mode 100755 index 9dba3ba2..00000000 Binary files a/static/images/status/application-documents.png and /dev/null differ diff --git a/static/images/status/application-export.png b/static/images/status/application-export.png deleted file mode 100755 index 555887a2..00000000 Binary files a/static/images/status/application-export.png and /dev/null differ diff --git a/static/images/status/application-form.png b/static/images/status/application-form.png deleted file mode 100755 index a1638fe1..00000000 Binary files a/static/images/status/application-form.png and /dev/null differ diff --git a/static/images/status/application-home.png b/static/images/status/application-home.png deleted file mode 100755 index 6a27adeb..00000000 Binary files a/static/images/status/application-home.png and /dev/null differ diff --git a/static/images/status/application-icon.png b/static/images/status/application-icon.png deleted file mode 100755 index c9523d3d..00000000 Binary files a/static/images/status/application-icon.png and /dev/null differ diff --git a/static/images/status/application-image.png b/static/images/status/application-image.png deleted file mode 100755 index 915d63f5..00000000 Binary files a/static/images/status/application-image.png and /dev/null differ diff --git a/static/images/status/application-import.png b/static/images/status/application-import.png deleted file mode 100755 index 922cb074..00000000 Binary files a/static/images/status/application-import.png and /dev/null differ diff --git a/static/images/status/application-list.png b/static/images/status/application-list.png deleted file mode 100755 index daf0bbf0..00000000 Binary files a/static/images/status/application-list.png and /dev/null differ diff --git a/static/images/status/application-monitor.png b/static/images/status/application-monitor.png deleted file mode 100755 index 0f1c2fd7..00000000 Binary files a/static/images/status/application-monitor.png and /dev/null differ diff --git a/static/images/status/application-network.png b/static/images/status/application-network.png deleted file mode 100755 index 3ba7262e..00000000 Binary files a/static/images/status/application-network.png and /dev/null differ diff --git a/static/images/status/application-rename.png b/static/images/status/application-rename.png deleted file mode 100755 index 1faecb86..00000000 Binary files a/static/images/status/application-rename.png and /dev/null differ diff --git a/static/images/status/application-resize-actual.png b/static/images/status/application-resize-actual.png deleted file mode 100755 index 274d529f..00000000 Binary files a/static/images/status/application-resize-actual.png and /dev/null differ diff --git a/static/images/status/application-resize-full.png b/static/images/status/application-resize-full.png deleted file mode 100755 index 9d81b7f9..00000000 Binary files a/static/images/status/application-resize-full.png and /dev/null differ diff --git a/static/images/status/application-resize.png b/static/images/status/application-resize.png deleted file mode 100755 index 47e55289..00000000 Binary files a/static/images/status/application-resize.png and /dev/null differ diff --git a/static/images/status/application-run.png b/static/images/status/application-run.png deleted file mode 100755 index 286f46f0..00000000 Binary files a/static/images/status/application-run.png and /dev/null differ diff --git a/static/images/status/application-search-result.png b/static/images/status/application-search-result.png deleted file mode 100755 index b502bedd..00000000 Binary files a/static/images/status/application-search-result.png and /dev/null differ diff --git a/static/images/status/application-share.png b/static/images/status/application-share.png deleted file mode 100755 index dc5cecd1..00000000 Binary files a/static/images/status/application-share.png and /dev/null differ diff --git a/static/images/status/application-sidebar-collapse.png b/static/images/status/application-sidebar-collapse.png deleted file mode 100755 index 53abfcfc..00000000 Binary files a/static/images/status/application-sidebar-collapse.png and /dev/null differ diff --git a/static/images/status/application-sidebar-expand.png b/static/images/status/application-sidebar-expand.png deleted file mode 100755 index 6dd673ef..00000000 Binary files a/static/images/status/application-sidebar-expand.png and /dev/null differ diff --git a/static/images/status/application-sidebar-list.png b/static/images/status/application-sidebar-list.png deleted file mode 100755 index 65f6e11c..00000000 Binary files a/static/images/status/application-sidebar-list.png and /dev/null differ diff --git a/static/images/status/application-sidebar.png b/static/images/status/application-sidebar.png deleted file mode 100755 index 03688c5f..00000000 Binary files a/static/images/status/application-sidebar.png and /dev/null differ diff --git a/static/images/status/application-small-blue.png b/static/images/status/application-small-blue.png deleted file mode 100755 index 8c676399..00000000 Binary files a/static/images/status/application-small-blue.png and /dev/null differ diff --git a/static/images/status/application-small-list-blue.png b/static/images/status/application-small-list-blue.png deleted file mode 100755 index c8cdba27..00000000 Binary files a/static/images/status/application-small-list-blue.png and /dev/null differ diff --git a/static/images/status/application-small-list.png b/static/images/status/application-small-list.png deleted file mode 100755 index 97ef8389..00000000 Binary files a/static/images/status/application-small-list.png and /dev/null differ diff --git a/static/images/status/application-small.png b/static/images/status/application-small.png deleted file mode 100755 index 79485a23..00000000 Binary files a/static/images/status/application-small.png and /dev/null differ diff --git a/static/images/status/application-split-tile.png b/static/images/status/application-split-tile.png deleted file mode 100755 index 47b3012a..00000000 Binary files a/static/images/status/application-split-tile.png and /dev/null differ diff --git a/static/images/status/application-split-vertical.png b/static/images/status/application-split-vertical.png deleted file mode 100755 index 50e735da..00000000 Binary files a/static/images/status/application-split-vertical.png and /dev/null differ diff --git a/static/images/status/application-split.png b/static/images/status/application-split.png deleted file mode 100755 index 815c6088..00000000 Binary files a/static/images/status/application-split.png and /dev/null differ diff --git a/static/images/status/application-table.png b/static/images/status/application-table.png deleted file mode 100755 index d1719ae9..00000000 Binary files a/static/images/status/application-table.png and /dev/null differ diff --git a/static/images/status/application-task.png b/static/images/status/application-task.png deleted file mode 100755 index dbedd45c..00000000 Binary files a/static/images/status/application-task.png and /dev/null differ diff --git a/static/images/status/application-terminal.png b/static/images/status/application-terminal.png deleted file mode 100755 index de569e17..00000000 Binary files a/static/images/status/application-terminal.png and /dev/null differ diff --git a/static/images/status/application-text-image.png b/static/images/status/application-text-image.png deleted file mode 100755 index 822b8458..00000000 Binary files a/static/images/status/application-text-image.png and /dev/null differ diff --git a/static/images/status/application-text.png b/static/images/status/application-text.png deleted file mode 100755 index 855b693e..00000000 Binary files a/static/images/status/application-text.png and /dev/null differ diff --git a/static/images/status/application-tree.png b/static/images/status/application-tree.png deleted file mode 100755 index c0408719..00000000 Binary files a/static/images/status/application-tree.png and /dev/null differ diff --git a/static/images/status/application-wave.png b/static/images/status/application-wave.png deleted file mode 100755 index cce78c7e..00000000 Binary files a/static/images/status/application-wave.png and /dev/null differ diff --git a/static/images/status/application.png b/static/images/status/application.png deleted file mode 100755 index ea60171b..00000000 Binary files a/static/images/status/application.png and /dev/null differ diff --git a/static/images/status/applications-blue.png b/static/images/status/applications-blue.png deleted file mode 100755 index 4cb6cca2..00000000 Binary files a/static/images/status/applications-blue.png and /dev/null differ diff --git a/static/images/status/applications-stack.png b/static/images/status/applications-stack.png deleted file mode 100755 index ab3e4b2a..00000000 Binary files a/static/images/status/applications-stack.png and /dev/null differ diff --git a/static/images/status/applications.png b/static/images/status/applications.png deleted file mode 100755 index 3f372a5b..00000000 Binary files a/static/images/status/applications.png and /dev/null differ diff --git a/static/images/status/arrow-000-medium.png b/static/images/status/arrow-000-medium.png deleted file mode 100755 index 651d40eb..00000000 Binary files a/static/images/status/arrow-000-medium.png and /dev/null differ diff --git a/static/images/status/arrow-000-small.png b/static/images/status/arrow-000-small.png deleted file mode 100755 index cfc2e249..00000000 Binary files a/static/images/status/arrow-000-small.png and /dev/null differ diff --git a/static/images/status/arrow-045-medium.png b/static/images/status/arrow-045-medium.png deleted file mode 100755 index 4bde99b3..00000000 Binary files a/static/images/status/arrow-045-medium.png and /dev/null differ diff --git a/static/images/status/arrow-045-small.png b/static/images/status/arrow-045-small.png deleted file mode 100755 index 205fa168..00000000 Binary files a/static/images/status/arrow-045-small.png and /dev/null differ diff --git a/static/images/status/arrow-045.png b/static/images/status/arrow-045.png deleted file mode 100755 index 7aab5e0e..00000000 Binary files a/static/images/status/arrow-045.png and /dev/null differ diff --git a/static/images/status/arrow-090-medium.png b/static/images/status/arrow-090-medium.png deleted file mode 100755 index b2a251bb..00000000 Binary files a/static/images/status/arrow-090-medium.png and /dev/null differ diff --git a/static/images/status/arrow-090-small.png b/static/images/status/arrow-090-small.png deleted file mode 100755 index f5dc6f89..00000000 Binary files a/static/images/status/arrow-090-small.png and /dev/null differ diff --git a/static/images/status/arrow-090.png b/static/images/status/arrow-090.png deleted file mode 100755 index 4e4f5b8a..00000000 Binary files a/static/images/status/arrow-090.png and /dev/null differ diff --git a/static/images/status/arrow-135-medium.png b/static/images/status/arrow-135-medium.png deleted file mode 100755 index 4a9abd72..00000000 Binary files a/static/images/status/arrow-135-medium.png and /dev/null differ diff --git a/static/images/status/arrow-135-small.png b/static/images/status/arrow-135-small.png deleted file mode 100755 index 644979a4..00000000 Binary files a/static/images/status/arrow-135-small.png and /dev/null differ diff --git a/static/images/status/arrow-135.png b/static/images/status/arrow-135.png deleted file mode 100755 index d3d084f0..00000000 Binary files a/static/images/status/arrow-135.png and /dev/null differ diff --git a/static/images/status/arrow-180-medium.png b/static/images/status/arrow-180-medium.png deleted file mode 100755 index 732bea88..00000000 Binary files a/static/images/status/arrow-180-medium.png and /dev/null differ diff --git a/static/images/status/arrow-180-small.png b/static/images/status/arrow-180-small.png deleted file mode 100755 index 5c129613..00000000 Binary files a/static/images/status/arrow-180-small.png and /dev/null differ diff --git a/static/images/status/arrow-180.png b/static/images/status/arrow-180.png deleted file mode 100755 index fc135550..00000000 Binary files a/static/images/status/arrow-180.png and /dev/null differ diff --git a/static/images/status/arrow-225-medium.png b/static/images/status/arrow-225-medium.png deleted file mode 100755 index 6bebb79d..00000000 Binary files a/static/images/status/arrow-225-medium.png and /dev/null differ diff --git a/static/images/status/arrow-225-small.png b/static/images/status/arrow-225-small.png deleted file mode 100755 index aa229299..00000000 Binary files a/static/images/status/arrow-225-small.png and /dev/null differ diff --git a/static/images/status/arrow-225.png b/static/images/status/arrow-225.png deleted file mode 100755 index 66305ec9..00000000 Binary files a/static/images/status/arrow-225.png and /dev/null differ diff --git a/static/images/status/arrow-270-medium.png b/static/images/status/arrow-270-medium.png deleted file mode 100755 index 377400ec..00000000 Binary files a/static/images/status/arrow-270-medium.png and /dev/null differ diff --git a/static/images/status/arrow-270-small.png b/static/images/status/arrow-270-small.png deleted file mode 100755 index 3c3511d4..00000000 Binary files a/static/images/status/arrow-270-small.png and /dev/null differ diff --git a/static/images/status/arrow-270.png b/static/images/status/arrow-270.png deleted file mode 100755 index 8d5209b6..00000000 Binary files a/static/images/status/arrow-270.png and /dev/null differ diff --git a/static/images/status/arrow-315-medium.png b/static/images/status/arrow-315-medium.png deleted file mode 100755 index 88306950..00000000 Binary files a/static/images/status/arrow-315-medium.png and /dev/null differ diff --git a/static/images/status/arrow-315-small.png b/static/images/status/arrow-315-small.png deleted file mode 100755 index d62a6360..00000000 Binary files a/static/images/status/arrow-315-small.png and /dev/null differ diff --git a/static/images/status/arrow-315.png b/static/images/status/arrow-315.png deleted file mode 100755 index 4215c56c..00000000 Binary files a/static/images/status/arrow-315.png and /dev/null differ diff --git a/static/images/status/arrow-branch-000-left.png b/static/images/status/arrow-branch-000-left.png deleted file mode 100755 index 9cc0e8bc..00000000 Binary files a/static/images/status/arrow-branch-000-left.png and /dev/null differ diff --git a/static/images/status/arrow-branch-090-left.png b/static/images/status/arrow-branch-090-left.png deleted file mode 100755 index ed1ecaad..00000000 Binary files a/static/images/status/arrow-branch-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-branch-090.png b/static/images/status/arrow-branch-090.png deleted file mode 100755 index f099fe1a..00000000 Binary files a/static/images/status/arrow-branch-090.png and /dev/null differ diff --git a/static/images/status/arrow-branch-180-left.png b/static/images/status/arrow-branch-180-left.png deleted file mode 100755 index d8f00fcd..00000000 Binary files a/static/images/status/arrow-branch-180-left.png and /dev/null differ diff --git a/static/images/status/arrow-branch-180.png b/static/images/status/arrow-branch-180.png deleted file mode 100755 index 6b1d804e..00000000 Binary files a/static/images/status/arrow-branch-180.png and /dev/null differ diff --git a/static/images/status/arrow-branch-270-left.png b/static/images/status/arrow-branch-270-left.png deleted file mode 100755 index 93ea04f7..00000000 Binary files a/static/images/status/arrow-branch-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-branch-270.png b/static/images/status/arrow-branch-270.png deleted file mode 100755 index 9b418337..00000000 Binary files a/static/images/status/arrow-branch-270.png and /dev/null differ diff --git a/static/images/status/arrow-branch.png b/static/images/status/arrow-branch.png deleted file mode 100755 index c21b3027..00000000 Binary files a/static/images/status/arrow-branch.png and /dev/null differ diff --git a/static/images/status/arrow-circle-045-left.png b/static/images/status/arrow-circle-045-left.png deleted file mode 100755 index 8ffb1daf..00000000 Binary files a/static/images/status/arrow-circle-045-left.png and /dev/null differ diff --git a/static/images/status/arrow-circle-135-left.png b/static/images/status/arrow-circle-135-left.png deleted file mode 100755 index 3cc332d0..00000000 Binary files a/static/images/status/arrow-circle-135-left.png and /dev/null differ diff --git a/static/images/status/arrow-circle-135.png b/static/images/status/arrow-circle-135.png deleted file mode 100755 index 7c85dce2..00000000 Binary files a/static/images/status/arrow-circle-135.png and /dev/null differ diff --git a/static/images/status/arrow-circle-225-left.png b/static/images/status/arrow-circle-225-left.png deleted file mode 100755 index fe97c4a0..00000000 Binary files a/static/images/status/arrow-circle-225-left.png and /dev/null differ diff --git a/static/images/status/arrow-circle-225.png b/static/images/status/arrow-circle-225.png deleted file mode 100755 index d72696a6..00000000 Binary files a/static/images/status/arrow-circle-225.png and /dev/null differ diff --git a/static/images/status/arrow-circle-315-left.png b/static/images/status/arrow-circle-315-left.png deleted file mode 100755 index 69f3e22e..00000000 Binary files a/static/images/status/arrow-circle-315-left.png and /dev/null differ diff --git a/static/images/status/arrow-circle-315.png b/static/images/status/arrow-circle-315.png deleted file mode 100755 index 8baf084b..00000000 Binary files a/static/images/status/arrow-circle-315.png and /dev/null differ diff --git a/static/images/status/arrow-circle-double-135.png b/static/images/status/arrow-circle-double-135.png deleted file mode 100755 index 6d68b75b..00000000 Binary files a/static/images/status/arrow-circle-double-135.png and /dev/null differ diff --git a/static/images/status/arrow-circle-double.png b/static/images/status/arrow-circle-double.png deleted file mode 100755 index ba5ebd1f..00000000 Binary files a/static/images/status/arrow-circle-double.png and /dev/null differ diff --git a/static/images/status/arrow-circle.png b/static/images/status/arrow-circle.png deleted file mode 100755 index dda71327..00000000 Binary files a/static/images/status/arrow-circle.png and /dev/null differ diff --git a/static/images/status/arrow-continue-000-top.png b/static/images/status/arrow-continue-000-top.png deleted file mode 100755 index 8da1c17a..00000000 Binary files a/static/images/status/arrow-continue-000-top.png and /dev/null differ diff --git a/static/images/status/arrow-continue-090-left.png b/static/images/status/arrow-continue-090-left.png deleted file mode 100755 index d77d18c6..00000000 Binary files a/static/images/status/arrow-continue-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-continue-090.png b/static/images/status/arrow-continue-090.png deleted file mode 100755 index 1efc2f7b..00000000 Binary files a/static/images/status/arrow-continue-090.png and /dev/null differ diff --git a/static/images/status/arrow-continue-180-top.png b/static/images/status/arrow-continue-180-top.png deleted file mode 100755 index ba543225..00000000 Binary files a/static/images/status/arrow-continue-180-top.png and /dev/null differ diff --git a/static/images/status/arrow-continue-180.png b/static/images/status/arrow-continue-180.png deleted file mode 100755 index 3d9c10ad..00000000 Binary files a/static/images/status/arrow-continue-180.png and /dev/null differ diff --git a/static/images/status/arrow-continue-270-left.png b/static/images/status/arrow-continue-270-left.png deleted file mode 100755 index c2c89547..00000000 Binary files a/static/images/status/arrow-continue-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-continue-270.png b/static/images/status/arrow-continue-270.png deleted file mode 100755 index 649554ff..00000000 Binary files a/static/images/status/arrow-continue-270.png and /dev/null differ diff --git a/static/images/status/arrow-continue.png b/static/images/status/arrow-continue.png deleted file mode 100755 index 80343118..00000000 Binary files a/static/images/status/arrow-continue.png and /dev/null differ diff --git a/static/images/status/arrow-curve-000-double.png b/static/images/status/arrow-curve-000-double.png deleted file mode 100755 index 6bd0479d..00000000 Binary files a/static/images/status/arrow-curve-000-double.png and /dev/null differ diff --git a/static/images/status/arrow-curve-000-left.png b/static/images/status/arrow-curve-000-left.png deleted file mode 100755 index d86d04b6..00000000 Binary files a/static/images/status/arrow-curve-000-left.png and /dev/null differ diff --git a/static/images/status/arrow-curve-090-left.png b/static/images/status/arrow-curve-090-left.png deleted file mode 100755 index 17c37a5b..00000000 Binary files a/static/images/status/arrow-curve-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-curve-090.png b/static/images/status/arrow-curve-090.png deleted file mode 100755 index ddcb8393..00000000 Binary files a/static/images/status/arrow-curve-090.png and /dev/null differ diff --git a/static/images/status/arrow-curve-180-double.png b/static/images/status/arrow-curve-180-double.png deleted file mode 100755 index d4e5b802..00000000 Binary files a/static/images/status/arrow-curve-180-double.png and /dev/null differ diff --git a/static/images/status/arrow-curve-180-left.png b/static/images/status/arrow-curve-180-left.png deleted file mode 100755 index 2a361a07..00000000 Binary files a/static/images/status/arrow-curve-180-left.png and /dev/null differ diff --git a/static/images/status/arrow-curve-180.png b/static/images/status/arrow-curve-180.png deleted file mode 100755 index aa4dd4e2..00000000 Binary files a/static/images/status/arrow-curve-180.png and /dev/null differ diff --git a/static/images/status/arrow-curve-270-left.png b/static/images/status/arrow-curve-270-left.png deleted file mode 100755 index e49ba073..00000000 Binary files a/static/images/status/arrow-curve-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-curve-270.png b/static/images/status/arrow-curve-270.png deleted file mode 100755 index 9b712516..00000000 Binary files a/static/images/status/arrow-curve-270.png and /dev/null differ diff --git a/static/images/status/arrow-curve.png b/static/images/status/arrow-curve.png deleted file mode 100755 index 56776f5f..00000000 Binary files a/static/images/status/arrow-curve.png and /dev/null differ diff --git a/static/images/status/arrow-in.png b/static/images/status/arrow-in.png deleted file mode 100755 index 4cab0990..00000000 Binary files a/static/images/status/arrow-in.png and /dev/null differ diff --git a/static/images/status/arrow-join-090.png b/static/images/status/arrow-join-090.png deleted file mode 100755 index 7bc641ac..00000000 Binary files a/static/images/status/arrow-join-090.png and /dev/null differ diff --git a/static/images/status/arrow-join-180.png b/static/images/status/arrow-join-180.png deleted file mode 100755 index a46006e5..00000000 Binary files a/static/images/status/arrow-join-180.png and /dev/null differ diff --git a/static/images/status/arrow-join-270.png b/static/images/status/arrow-join-270.png deleted file mode 100755 index 230c18b1..00000000 Binary files a/static/images/status/arrow-join-270.png and /dev/null differ diff --git a/static/images/status/arrow-join.png b/static/images/status/arrow-join.png deleted file mode 100755 index 52d62d17..00000000 Binary files a/static/images/status/arrow-join.png and /dev/null differ diff --git a/static/images/status/arrow-merge-000-left.png b/static/images/status/arrow-merge-000-left.png deleted file mode 100755 index 3fe5ce69..00000000 Binary files a/static/images/status/arrow-merge-000-left.png and /dev/null differ diff --git a/static/images/status/arrow-merge-090-left.png b/static/images/status/arrow-merge-090-left.png deleted file mode 100755 index 95560ae6..00000000 Binary files a/static/images/status/arrow-merge-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-merge-090.png b/static/images/status/arrow-merge-090.png deleted file mode 100755 index 4a5af5b7..00000000 Binary files a/static/images/status/arrow-merge-090.png and /dev/null differ diff --git a/static/images/status/arrow-merge-180-left.png b/static/images/status/arrow-merge-180-left.png deleted file mode 100755 index c499e694..00000000 Binary files a/static/images/status/arrow-merge-180-left.png and /dev/null differ diff --git a/static/images/status/arrow-merge-180.png b/static/images/status/arrow-merge-180.png deleted file mode 100755 index 475389bc..00000000 Binary files a/static/images/status/arrow-merge-180.png and /dev/null differ diff --git a/static/images/status/arrow-merge-270-left.png b/static/images/status/arrow-merge-270-left.png deleted file mode 100755 index 5711ca7d..00000000 Binary files a/static/images/status/arrow-merge-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-merge-270.png b/static/images/status/arrow-merge-270.png deleted file mode 100755 index 0d7b9a9f..00000000 Binary files a/static/images/status/arrow-merge-270.png and /dev/null differ diff --git a/static/images/status/arrow-merge.png b/static/images/status/arrow-merge.png deleted file mode 100755 index dd52be60..00000000 Binary files a/static/images/status/arrow-merge.png and /dev/null differ diff --git a/static/images/status/arrow-move.png b/static/images/status/arrow-move.png deleted file mode 100755 index 391a01fc..00000000 Binary files a/static/images/status/arrow-move.png and /dev/null differ diff --git a/static/images/status/arrow-out.png b/static/images/status/arrow-out.png deleted file mode 100755 index b8df9d6f..00000000 Binary files a/static/images/status/arrow-out.png and /dev/null differ diff --git a/static/images/status/arrow-repeat-once.png b/static/images/status/arrow-repeat-once.png deleted file mode 100755 index 4e037cd0..00000000 Binary files a/static/images/status/arrow-repeat-once.png and /dev/null differ diff --git a/static/images/status/arrow-repeat.png b/static/images/status/arrow-repeat.png deleted file mode 100755 index 9456866b..00000000 Binary files a/static/images/status/arrow-repeat.png and /dev/null differ diff --git a/static/images/status/arrow-resize-045.png b/static/images/status/arrow-resize-045.png deleted file mode 100755 index 2545f672..00000000 Binary files a/static/images/status/arrow-resize-045.png and /dev/null differ diff --git a/static/images/status/arrow-resize-090.png b/static/images/status/arrow-resize-090.png deleted file mode 100755 index 27e35fda..00000000 Binary files a/static/images/status/arrow-resize-090.png and /dev/null differ diff --git a/static/images/status/arrow-resize-135.png b/static/images/status/arrow-resize-135.png deleted file mode 100755 index 6af336ad..00000000 Binary files a/static/images/status/arrow-resize-135.png and /dev/null differ diff --git a/static/images/status/arrow-resize.png b/static/images/status/arrow-resize.png deleted file mode 100755 index 5e4a9e0c..00000000 Binary files a/static/images/status/arrow-resize.png and /dev/null differ diff --git a/static/images/status/arrow-return-000-left.png b/static/images/status/arrow-return-000-left.png deleted file mode 100755 index 43c6917f..00000000 Binary files a/static/images/status/arrow-return-000-left.png and /dev/null differ diff --git a/static/images/status/arrow-return-090-left.png b/static/images/status/arrow-return-090-left.png deleted file mode 100755 index 5e5b5641..00000000 Binary files a/static/images/status/arrow-return-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-return-090.png b/static/images/status/arrow-return-090.png deleted file mode 100755 index 8a91639b..00000000 Binary files a/static/images/status/arrow-return-090.png and /dev/null differ diff --git a/static/images/status/arrow-return-180-left.png b/static/images/status/arrow-return-180-left.png deleted file mode 100755 index d39f06d5..00000000 Binary files a/static/images/status/arrow-return-180-left.png and /dev/null differ diff --git a/static/images/status/arrow-return-180.png b/static/images/status/arrow-return-180.png deleted file mode 100755 index e85e64ff..00000000 Binary files a/static/images/status/arrow-return-180.png and /dev/null differ diff --git a/static/images/status/arrow-return-270-left.png b/static/images/status/arrow-return-270-left.png deleted file mode 100755 index 8df13fdd..00000000 Binary files a/static/images/status/arrow-return-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-return-270.png b/static/images/status/arrow-return-270.png deleted file mode 100755 index be51d819..00000000 Binary files a/static/images/status/arrow-return-270.png and /dev/null differ diff --git a/static/images/status/arrow-return.png b/static/images/status/arrow-return.png deleted file mode 100755 index 8f08679b..00000000 Binary files a/static/images/status/arrow-return.png and /dev/null differ diff --git a/static/images/status/arrow-retweet.png b/static/images/status/arrow-retweet.png deleted file mode 100755 index fe8a632c..00000000 Binary files a/static/images/status/arrow-retweet.png and /dev/null differ diff --git a/static/images/status/arrow-skip-090.png b/static/images/status/arrow-skip-090.png deleted file mode 100755 index 578d3982..00000000 Binary files a/static/images/status/arrow-skip-090.png and /dev/null differ diff --git a/static/images/status/arrow-skip-180.png b/static/images/status/arrow-skip-180.png deleted file mode 100755 index 77ffb1cd..00000000 Binary files a/static/images/status/arrow-skip-180.png and /dev/null differ diff --git a/static/images/status/arrow-skip-270.png b/static/images/status/arrow-skip-270.png deleted file mode 100755 index ebcd4ff2..00000000 Binary files a/static/images/status/arrow-skip-270.png and /dev/null differ diff --git a/static/images/status/arrow-skip.png b/static/images/status/arrow-skip.png deleted file mode 100755 index 2e8f4159..00000000 Binary files a/static/images/status/arrow-skip.png and /dev/null differ diff --git a/static/images/status/arrow-split-090.png b/static/images/status/arrow-split-090.png deleted file mode 100755 index d3cff02c..00000000 Binary files a/static/images/status/arrow-split-090.png and /dev/null differ diff --git a/static/images/status/arrow-split-180.png b/static/images/status/arrow-split-180.png deleted file mode 100755 index 3e5ea1b4..00000000 Binary files a/static/images/status/arrow-split-180.png and /dev/null differ diff --git a/static/images/status/arrow-split-270.png b/static/images/status/arrow-split-270.png deleted file mode 100755 index bec81839..00000000 Binary files a/static/images/status/arrow-split-270.png and /dev/null differ diff --git a/static/images/status/arrow-split.png b/static/images/status/arrow-split.png deleted file mode 100755 index 66837aca..00000000 Binary files a/static/images/status/arrow-split.png and /dev/null differ diff --git a/static/images/status/arrow-step-out.png b/static/images/status/arrow-step-out.png deleted file mode 100755 index 9cfce038..00000000 Binary files a/static/images/status/arrow-step-out.png and /dev/null differ diff --git a/static/images/status/arrow-step-over.png b/static/images/status/arrow-step-over.png deleted file mode 100755 index ddf04dee..00000000 Binary files a/static/images/status/arrow-step-over.png and /dev/null differ diff --git a/static/images/status/arrow-step.png b/static/images/status/arrow-step.png deleted file mode 100755 index 9b1dbf76..00000000 Binary files a/static/images/status/arrow-step.png and /dev/null differ diff --git a/static/images/status/arrow-stop-090.png b/static/images/status/arrow-stop-090.png deleted file mode 100755 index cf936261..00000000 Binary files a/static/images/status/arrow-stop-090.png and /dev/null differ diff --git a/static/images/status/arrow-stop-180.png b/static/images/status/arrow-stop-180.png deleted file mode 100755 index 0ca4499c..00000000 Binary files a/static/images/status/arrow-stop-180.png and /dev/null differ diff --git a/static/images/status/arrow-stop-270.png b/static/images/status/arrow-stop-270.png deleted file mode 100755 index d8625408..00000000 Binary files a/static/images/status/arrow-stop-270.png and /dev/null differ diff --git a/static/images/status/arrow-stop.png b/static/images/status/arrow-stop.png deleted file mode 100755 index e383d6bc..00000000 Binary files a/static/images/status/arrow-stop.png and /dev/null differ diff --git a/static/images/status/arrow-switch-090.png b/static/images/status/arrow-switch-090.png deleted file mode 100755 index 546c87f9..00000000 Binary files a/static/images/status/arrow-switch-090.png and /dev/null differ diff --git a/static/images/status/arrow-switch-180.png b/static/images/status/arrow-switch-180.png deleted file mode 100755 index 7b708808..00000000 Binary files a/static/images/status/arrow-switch-180.png and /dev/null differ diff --git a/static/images/status/arrow-switch-270.png b/static/images/status/arrow-switch-270.png deleted file mode 100755 index 38a4b237..00000000 Binary files a/static/images/status/arrow-switch-270.png and /dev/null differ diff --git a/static/images/status/arrow-switch.png b/static/images/status/arrow-switch.png deleted file mode 100755 index ab3dd302..00000000 Binary files a/static/images/status/arrow-switch.png and /dev/null differ diff --git a/static/images/status/arrow-transition-090.png b/static/images/status/arrow-transition-090.png deleted file mode 100755 index 1dbe75fc..00000000 Binary files a/static/images/status/arrow-transition-090.png and /dev/null differ diff --git a/static/images/status/arrow-transition-180.png b/static/images/status/arrow-transition-180.png deleted file mode 100755 index d5acbcab..00000000 Binary files a/static/images/status/arrow-transition-180.png and /dev/null differ diff --git a/static/images/status/arrow-transition-270.png b/static/images/status/arrow-transition-270.png deleted file mode 100755 index d230b385..00000000 Binary files a/static/images/status/arrow-transition-270.png and /dev/null differ diff --git a/static/images/status/arrow-transition.png b/static/images/status/arrow-transition.png deleted file mode 100755 index 1dcf01ad..00000000 Binary files a/static/images/status/arrow-transition.png and /dev/null differ diff --git a/static/images/status/arrow-turn-000-left.png b/static/images/status/arrow-turn-000-left.png deleted file mode 100755 index 783f82d7..00000000 Binary files a/static/images/status/arrow-turn-000-left.png and /dev/null differ diff --git a/static/images/status/arrow-turn-090-left.png b/static/images/status/arrow-turn-090-left.png deleted file mode 100755 index eccb0346..00000000 Binary files a/static/images/status/arrow-turn-090-left.png and /dev/null differ diff --git a/static/images/status/arrow-turn-090.png b/static/images/status/arrow-turn-090.png deleted file mode 100755 index 425dcb2a..00000000 Binary files a/static/images/status/arrow-turn-090.png and /dev/null differ diff --git a/static/images/status/arrow-turn-180-left.png b/static/images/status/arrow-turn-180-left.png deleted file mode 100755 index 0f491d2b..00000000 Binary files a/static/images/status/arrow-turn-180-left.png and /dev/null differ diff --git a/static/images/status/arrow-turn-180.png b/static/images/status/arrow-turn-180.png deleted file mode 100755 index a9b557ac..00000000 Binary files a/static/images/status/arrow-turn-180.png and /dev/null differ diff --git a/static/images/status/arrow-turn-270-left.png b/static/images/status/arrow-turn-270-left.png deleted file mode 100755 index 56ed4592..00000000 Binary files a/static/images/status/arrow-turn-270-left.png and /dev/null differ diff --git a/static/images/status/arrow-turn-270.png b/static/images/status/arrow-turn-270.png deleted file mode 100755 index 2a4517f8..00000000 Binary files a/static/images/status/arrow-turn-270.png and /dev/null differ diff --git a/static/images/status/arrow-turn.png b/static/images/status/arrow-turn.png deleted file mode 100755 index f1734204..00000000 Binary files a/static/images/status/arrow-turn.png and /dev/null differ diff --git a/static/images/status/arrow.png b/static/images/status/arrow.png deleted file mode 100755 index 977b9e50..00000000 Binary files a/static/images/status/arrow.png and /dev/null differ diff --git a/static/images/status/asterisk.png b/static/images/status/asterisk.png deleted file mode 100755 index c2fbed5a..00000000 Binary files a/static/images/status/asterisk.png and /dev/null differ diff --git a/static/images/status/auction-hammer--arrow.png b/static/images/status/auction-hammer--arrow.png deleted file mode 100755 index 334e6996..00000000 Binary files a/static/images/status/auction-hammer--arrow.png and /dev/null differ diff --git a/static/images/status/auction-hammer--exclamation.png b/static/images/status/auction-hammer--exclamation.png deleted file mode 100755 index 5a3c4d6b..00000000 Binary files a/static/images/status/auction-hammer--exclamation.png and /dev/null differ diff --git a/static/images/status/auction-hammer--minus.png b/static/images/status/auction-hammer--minus.png deleted file mode 100755 index 3c693335..00000000 Binary files a/static/images/status/auction-hammer--minus.png and /dev/null differ diff --git a/static/images/status/auction-hammer--pencil.png b/static/images/status/auction-hammer--pencil.png deleted file mode 100755 index 15324cc7..00000000 Binary files a/static/images/status/auction-hammer--pencil.png and /dev/null differ diff --git a/static/images/status/auction-hammer--plus.png b/static/images/status/auction-hammer--plus.png deleted file mode 100755 index 837d1c04..00000000 Binary files a/static/images/status/auction-hammer--plus.png and /dev/null differ diff --git a/static/images/status/auction-hammer-gavel.png b/static/images/status/auction-hammer-gavel.png deleted file mode 100755 index 54f68f47..00000000 Binary files a/static/images/status/auction-hammer-gavel.png and /dev/null differ diff --git a/static/images/status/auction-hammer.png b/static/images/status/auction-hammer.png deleted file mode 100755 index 0a84bae3..00000000 Binary files a/static/images/status/auction-hammer.png and /dev/null differ diff --git a/static/images/status/balance--arrow.png b/static/images/status/balance--arrow.png deleted file mode 100755 index 9ffdaafa..00000000 Binary files a/static/images/status/balance--arrow.png and /dev/null differ diff --git a/static/images/status/balance--exclamation.png b/static/images/status/balance--exclamation.png deleted file mode 100755 index 5ed65c41..00000000 Binary files a/static/images/status/balance--exclamation.png and /dev/null differ diff --git a/static/images/status/balance--minus.png b/static/images/status/balance--minus.png deleted file mode 100755 index b0754fb7..00000000 Binary files a/static/images/status/balance--minus.png and /dev/null differ diff --git a/static/images/status/balance--pencil.png b/static/images/status/balance--pencil.png deleted file mode 100755 index baffbdac..00000000 Binary files a/static/images/status/balance--pencil.png and /dev/null differ diff --git a/static/images/status/balance--plus.png b/static/images/status/balance--plus.png deleted file mode 100755 index f76dba77..00000000 Binary files a/static/images/status/balance--plus.png and /dev/null differ diff --git a/static/images/status/balance-unbalance.png b/static/images/status/balance-unbalance.png deleted file mode 100755 index 9e52d622..00000000 Binary files a/static/images/status/balance-unbalance.png and /dev/null differ diff --git a/static/images/status/balance.png b/static/images/status/balance.png deleted file mode 100755 index e213cd5b..00000000 Binary files a/static/images/status/balance.png and /dev/null differ diff --git a/static/images/status/balloon--arrow.png b/static/images/status/balloon--arrow.png deleted file mode 100755 index ed2264cc..00000000 Binary files a/static/images/status/balloon--arrow.png and /dev/null differ diff --git a/static/images/status/balloon--exclamation.png b/static/images/status/balloon--exclamation.png deleted file mode 100755 index 42b9ae76..00000000 Binary files a/static/images/status/balloon--exclamation.png and /dev/null differ diff --git a/static/images/status/balloon--minus.png b/static/images/status/balloon--minus.png deleted file mode 100755 index c9d3288c..00000000 Binary files a/static/images/status/balloon--minus.png and /dev/null differ diff --git a/static/images/status/balloon--pencil.png b/static/images/status/balloon--pencil.png deleted file mode 100755 index daaae04d..00000000 Binary files a/static/images/status/balloon--pencil.png and /dev/null differ diff --git a/static/images/status/balloon--plus.png b/static/images/status/balloon--plus.png deleted file mode 100755 index 4369afd2..00000000 Binary files a/static/images/status/balloon--plus.png and /dev/null differ diff --git a/static/images/status/balloon-ellipsis.png b/static/images/status/balloon-ellipsis.png deleted file mode 100755 index 50ba3c9e..00000000 Binary files a/static/images/status/balloon-ellipsis.png and /dev/null differ diff --git a/static/images/status/balloon-facebook-left.png b/static/images/status/balloon-facebook-left.png deleted file mode 100755 index a3ec2a18..00000000 Binary files a/static/images/status/balloon-facebook-left.png and /dev/null differ diff --git a/static/images/status/balloon-facebook.png b/static/images/status/balloon-facebook.png deleted file mode 100755 index 15c528c3..00000000 Binary files a/static/images/status/balloon-facebook.png and /dev/null differ diff --git a/static/images/status/balloon-left.png b/static/images/status/balloon-left.png deleted file mode 100755 index 358d9aaf..00000000 Binary files a/static/images/status/balloon-left.png and /dev/null differ diff --git a/static/images/status/balloon-quotation.png b/static/images/status/balloon-quotation.png deleted file mode 100755 index 2b5a1114..00000000 Binary files a/static/images/status/balloon-quotation.png and /dev/null differ diff --git a/static/images/status/balloon-small-left.png b/static/images/status/balloon-small-left.png deleted file mode 100755 index 34d9f5c9..00000000 Binary files a/static/images/status/balloon-small-left.png and /dev/null differ diff --git a/static/images/status/balloon-small.png b/static/images/status/balloon-small.png deleted file mode 100755 index 3b538de0..00000000 Binary files a/static/images/status/balloon-small.png and /dev/null differ diff --git a/static/images/status/balloon-smiley.png b/static/images/status/balloon-smiley.png deleted file mode 100755 index c5e94250..00000000 Binary files a/static/images/status/balloon-smiley.png and /dev/null differ diff --git a/static/images/status/balloon-sound.png b/static/images/status/balloon-sound.png deleted file mode 100755 index 116f8662..00000000 Binary files a/static/images/status/balloon-sound.png and /dev/null differ diff --git a/static/images/status/balloon-twitter-left.png b/static/images/status/balloon-twitter-left.png deleted file mode 100755 index 4cab04d2..00000000 Binary files a/static/images/status/balloon-twitter-left.png and /dev/null differ diff --git a/static/images/status/balloon-twitter-retweet.png b/static/images/status/balloon-twitter-retweet.png deleted file mode 100755 index 2d4f47e9..00000000 Binary files a/static/images/status/balloon-twitter-retweet.png and /dev/null differ diff --git a/static/images/status/balloon-twitter.png b/static/images/status/balloon-twitter.png deleted file mode 100755 index 9c75dfa1..00000000 Binary files a/static/images/status/balloon-twitter.png and /dev/null differ diff --git a/static/images/status/balloon.png b/static/images/status/balloon.png deleted file mode 100755 index 1af30643..00000000 Binary files a/static/images/status/balloon.png and /dev/null differ diff --git a/static/images/status/balloons-facebook.png b/static/images/status/balloons-facebook.png deleted file mode 100755 index a789a2ee..00000000 Binary files a/static/images/status/balloons-facebook.png and /dev/null differ diff --git a/static/images/status/balloons-twitter.png b/static/images/status/balloons-twitter.png deleted file mode 100755 index d54a48c2..00000000 Binary files a/static/images/status/balloons-twitter.png and /dev/null differ diff --git a/static/images/status/balloons.png b/static/images/status/balloons.png deleted file mode 100755 index 99804358..00000000 Binary files a/static/images/status/balloons.png and /dev/null differ diff --git a/static/images/status/bandaid--arrow.png b/static/images/status/bandaid--arrow.png deleted file mode 100755 index aba38d55..00000000 Binary files a/static/images/status/bandaid--arrow.png and /dev/null differ diff --git a/static/images/status/bandaid--exclamation.png b/static/images/status/bandaid--exclamation.png deleted file mode 100755 index 5a7e495e..00000000 Binary files a/static/images/status/bandaid--exclamation.png and /dev/null differ diff --git a/static/images/status/bandaid--minus.png b/static/images/status/bandaid--minus.png deleted file mode 100755 index c75166b7..00000000 Binary files a/static/images/status/bandaid--minus.png and /dev/null differ diff --git a/static/images/status/bandaid--pencil.png b/static/images/status/bandaid--pencil.png deleted file mode 100755 index d70e45ee..00000000 Binary files a/static/images/status/bandaid--pencil.png and /dev/null differ diff --git a/static/images/status/bandaid--plus.png b/static/images/status/bandaid--plus.png deleted file mode 100755 index 19c9b814..00000000 Binary files a/static/images/status/bandaid--plus.png and /dev/null differ diff --git a/static/images/status/bandaid-small.png b/static/images/status/bandaid-small.png deleted file mode 100755 index 8160c359..00000000 Binary files a/static/images/status/bandaid-small.png and /dev/null differ diff --git a/static/images/status/bandaid.png b/static/images/status/bandaid.png deleted file mode 100755 index fe8c7976..00000000 Binary files a/static/images/status/bandaid.png and /dev/null differ diff --git a/static/images/status/bank--arrow.png b/static/images/status/bank--arrow.png deleted file mode 100755 index a226be52..00000000 Binary files a/static/images/status/bank--arrow.png and /dev/null differ diff --git a/static/images/status/bank--exclamation.png b/static/images/status/bank--exclamation.png deleted file mode 100755 index 5b40e0c4..00000000 Binary files a/static/images/status/bank--exclamation.png and /dev/null differ diff --git a/static/images/status/bank--minus.png b/static/images/status/bank--minus.png deleted file mode 100755 index bd09285f..00000000 Binary files a/static/images/status/bank--minus.png and /dev/null differ diff --git a/static/images/status/bank--pencil.png b/static/images/status/bank--pencil.png deleted file mode 100755 index 7d4a61a2..00000000 Binary files a/static/images/status/bank--pencil.png and /dev/null differ diff --git a/static/images/status/bank--plus.png b/static/images/status/bank--plus.png deleted file mode 100755 index 5338e48c..00000000 Binary files a/static/images/status/bank--plus.png and /dev/null differ diff --git a/static/images/status/bank.png b/static/images/status/bank.png deleted file mode 100755 index c6aa07bd..00000000 Binary files a/static/images/status/bank.png and /dev/null differ diff --git a/static/images/status/barcode-2d.png b/static/images/status/barcode-2d.png deleted file mode 100755 index 41a84aa1..00000000 Binary files a/static/images/status/barcode-2d.png and /dev/null differ diff --git a/static/images/status/barcode.png b/static/images/status/barcode.png deleted file mode 100755 index 328a2ac4..00000000 Binary files a/static/images/status/barcode.png and /dev/null differ diff --git a/static/images/status/battery--arrow.png b/static/images/status/battery--arrow.png deleted file mode 100755 index 73f42290..00000000 Binary files a/static/images/status/battery--arrow.png and /dev/null differ diff --git a/static/images/status/battery--exclamation.png b/static/images/status/battery--exclamation.png deleted file mode 100755 index ecb3cc32..00000000 Binary files a/static/images/status/battery--exclamation.png and /dev/null differ diff --git a/static/images/status/battery--minus.png b/static/images/status/battery--minus.png deleted file mode 100755 index 6b09e737..00000000 Binary files a/static/images/status/battery--minus.png and /dev/null differ diff --git a/static/images/status/battery--pencil.png b/static/images/status/battery--pencil.png deleted file mode 100755 index 6aebe4af..00000000 Binary files a/static/images/status/battery--pencil.png and /dev/null differ diff --git a/static/images/status/battery--plus.png b/static/images/status/battery--plus.png deleted file mode 100755 index 76fa0d57..00000000 Binary files a/static/images/status/battery--plus.png and /dev/null differ diff --git a/static/images/status/battery-charge.png b/static/images/status/battery-charge.png deleted file mode 100755 index ae40aaf3..00000000 Binary files a/static/images/status/battery-charge.png and /dev/null differ diff --git a/static/images/status/battery-empty.png b/static/images/status/battery-empty.png deleted file mode 100755 index 567fc7b2..00000000 Binary files a/static/images/status/battery-empty.png and /dev/null differ diff --git a/static/images/status/battery-full.png b/static/images/status/battery-full.png deleted file mode 100755 index 8af86643..00000000 Binary files a/static/images/status/battery-full.png and /dev/null differ diff --git a/static/images/status/battery-low.png b/static/images/status/battery-low.png deleted file mode 100755 index 317dc903..00000000 Binary files a/static/images/status/battery-low.png and /dev/null differ diff --git a/static/images/status/battery-plug.png b/static/images/status/battery-plug.png deleted file mode 100755 index 175f1891..00000000 Binary files a/static/images/status/battery-plug.png and /dev/null differ diff --git a/static/images/status/battery.png b/static/images/status/battery.png deleted file mode 100755 index 7a825b02..00000000 Binary files a/static/images/status/battery.png and /dev/null differ diff --git a/static/images/status/beaker--arrow.png b/static/images/status/beaker--arrow.png deleted file mode 100755 index fcc242ea..00000000 Binary files a/static/images/status/beaker--arrow.png and /dev/null differ diff --git a/static/images/status/beaker--exclamation.png b/static/images/status/beaker--exclamation.png deleted file mode 100755 index 66dd86e5..00000000 Binary files a/static/images/status/beaker--exclamation.png and /dev/null differ diff --git a/static/images/status/beaker--minus.png b/static/images/status/beaker--minus.png deleted file mode 100755 index 731a9780..00000000 Binary files a/static/images/status/beaker--minus.png and /dev/null differ diff --git a/static/images/status/beaker--pencil.png b/static/images/status/beaker--pencil.png deleted file mode 100755 index 2913f497..00000000 Binary files a/static/images/status/beaker--pencil.png and /dev/null differ diff --git a/static/images/status/beaker--plus.png b/static/images/status/beaker--plus.png deleted file mode 100755 index de5962a7..00000000 Binary files a/static/images/status/beaker--plus.png and /dev/null differ diff --git a/static/images/status/beaker-empty.png b/static/images/status/beaker-empty.png deleted file mode 100755 index f4d2bac1..00000000 Binary files a/static/images/status/beaker-empty.png and /dev/null differ diff --git a/static/images/status/beaker.png b/static/images/status/beaker.png deleted file mode 100755 index b3c49cc5..00000000 Binary files a/static/images/status/beaker.png and /dev/null differ diff --git a/static/images/status/bean--arrow.png b/static/images/status/bean--arrow.png deleted file mode 100755 index 5e2acc79..00000000 Binary files a/static/images/status/bean--arrow.png and /dev/null differ diff --git a/static/images/status/bean--exclamation.png b/static/images/status/bean--exclamation.png deleted file mode 100755 index 22de99dc..00000000 Binary files a/static/images/status/bean--exclamation.png and /dev/null differ diff --git a/static/images/status/bean--minus.png b/static/images/status/bean--minus.png deleted file mode 100755 index 1ab0edb7..00000000 Binary files a/static/images/status/bean--minus.png and /dev/null differ diff --git a/static/images/status/bean--pencil.png b/static/images/status/bean--pencil.png deleted file mode 100755 index 17e0a46a..00000000 Binary files a/static/images/status/bean--pencil.png and /dev/null differ diff --git a/static/images/status/bean--plus.png b/static/images/status/bean--plus.png deleted file mode 100755 index 61897781..00000000 Binary files a/static/images/status/bean--plus.png and /dev/null differ diff --git a/static/images/status/bean-green.png b/static/images/status/bean-green.png deleted file mode 100755 index 217eeef3..00000000 Binary files a/static/images/status/bean-green.png and /dev/null differ diff --git a/static/images/status/bean-small-green.png b/static/images/status/bean-small-green.png deleted file mode 100755 index 4e1672ef..00000000 Binary files a/static/images/status/bean-small-green.png and /dev/null differ diff --git a/static/images/status/bean-small.png b/static/images/status/bean-small.png deleted file mode 100755 index fdca62ad..00000000 Binary files a/static/images/status/bean-small.png and /dev/null differ diff --git a/static/images/status/bean.png b/static/images/status/bean.png deleted file mode 100755 index 6d038704..00000000 Binary files a/static/images/status/bean.png and /dev/null differ diff --git a/static/images/status/beans.png b/static/images/status/beans.png deleted file mode 100755 index 2ebe9ad0..00000000 Binary files a/static/images/status/beans.png and /dev/null differ diff --git a/static/images/status/bell--arrow.png b/static/images/status/bell--arrow.png deleted file mode 100755 index c142731d..00000000 Binary files a/static/images/status/bell--arrow.png and /dev/null differ diff --git a/static/images/status/bell--exclamation.png b/static/images/status/bell--exclamation.png deleted file mode 100755 index 105410fa..00000000 Binary files a/static/images/status/bell--exclamation.png and /dev/null differ diff --git a/static/images/status/bell--minus.png b/static/images/status/bell--minus.png deleted file mode 100755 index a903a330..00000000 Binary files a/static/images/status/bell--minus.png and /dev/null differ diff --git a/static/images/status/bell--pencil.png b/static/images/status/bell--pencil.png deleted file mode 100755 index b5f4f889..00000000 Binary files a/static/images/status/bell--pencil.png and /dev/null differ diff --git a/static/images/status/bell--plus.png b/static/images/status/bell--plus.png deleted file mode 100755 index 18116020..00000000 Binary files a/static/images/status/bell--plus.png and /dev/null differ diff --git a/static/images/status/bell-small.png b/static/images/status/bell-small.png deleted file mode 100755 index e06123eb..00000000 Binary files a/static/images/status/bell-small.png and /dev/null differ diff --git a/static/images/status/bell.png b/static/images/status/bell.png deleted file mode 100755 index 475a7146..00000000 Binary files a/static/images/status/bell.png and /dev/null differ diff --git a/static/images/status/bin--arrow.png b/static/images/status/bin--arrow.png deleted file mode 100755 index c8a598eb..00000000 Binary files a/static/images/status/bin--arrow.png and /dev/null differ diff --git a/static/images/status/bin--exclamation.png b/static/images/status/bin--exclamation.png deleted file mode 100755 index 596e7289..00000000 Binary files a/static/images/status/bin--exclamation.png and /dev/null differ diff --git a/static/images/status/bin--minus.png b/static/images/status/bin--minus.png deleted file mode 100755 index d322fa8f..00000000 Binary files a/static/images/status/bin--minus.png and /dev/null differ diff --git a/static/images/status/bin--pencil.png b/static/images/status/bin--pencil.png deleted file mode 100755 index 3a5b73c1..00000000 Binary files a/static/images/status/bin--pencil.png and /dev/null differ diff --git a/static/images/status/bin--plus.png b/static/images/status/bin--plus.png deleted file mode 100755 index 4048cbf6..00000000 Binary files a/static/images/status/bin--plus.png and /dev/null differ diff --git a/static/images/status/bin-full.png b/static/images/status/bin-full.png deleted file mode 100755 index b9b012cf..00000000 Binary files a/static/images/status/bin-full.png and /dev/null differ diff --git a/static/images/status/bin-metal-full.png b/static/images/status/bin-metal-full.png deleted file mode 100755 index e38e41d2..00000000 Binary files a/static/images/status/bin-metal-full.png and /dev/null differ diff --git a/static/images/status/bin-metal.png b/static/images/status/bin-metal.png deleted file mode 100755 index 70b7e520..00000000 Binary files a/static/images/status/bin-metal.png and /dev/null differ diff --git a/static/images/status/bin.png b/static/images/status/bin.png deleted file mode 100755 index 01d304aa..00000000 Binary files a/static/images/status/bin.png and /dev/null differ diff --git a/static/images/status/binocular--arrow.png b/static/images/status/binocular--arrow.png deleted file mode 100755 index 28d9db5b..00000000 Binary files a/static/images/status/binocular--arrow.png and /dev/null differ diff --git a/static/images/status/binocular--exclamation.png b/static/images/status/binocular--exclamation.png deleted file mode 100755 index b90a1d4e..00000000 Binary files a/static/images/status/binocular--exclamation.png and /dev/null differ diff --git a/static/images/status/binocular--minus.png b/static/images/status/binocular--minus.png deleted file mode 100755 index 54288451..00000000 Binary files a/static/images/status/binocular--minus.png and /dev/null differ diff --git a/static/images/status/binocular--pencil.png b/static/images/status/binocular--pencil.png deleted file mode 100755 index a27a20e8..00000000 Binary files a/static/images/status/binocular--pencil.png and /dev/null differ diff --git a/static/images/status/binocular--plus.png b/static/images/status/binocular--plus.png deleted file mode 100755 index e81e49aa..00000000 Binary files a/static/images/status/binocular--plus.png and /dev/null differ diff --git a/static/images/status/binocular-small.png b/static/images/status/binocular-small.png deleted file mode 100755 index 23636c3b..00000000 Binary files a/static/images/status/binocular-small.png and /dev/null differ diff --git a/static/images/status/binocular.png b/static/images/status/binocular.png deleted file mode 100755 index d199572e..00000000 Binary files a/static/images/status/binocular.png and /dev/null differ diff --git a/static/images/status/block--arrow.png b/static/images/status/block--arrow.png deleted file mode 100755 index e3543677..00000000 Binary files a/static/images/status/block--arrow.png and /dev/null differ diff --git a/static/images/status/block--exclamation.png b/static/images/status/block--exclamation.png deleted file mode 100755 index 8a221851..00000000 Binary files a/static/images/status/block--exclamation.png and /dev/null differ diff --git a/static/images/status/block--minus.png b/static/images/status/block--minus.png deleted file mode 100755 index 0801fbe3..00000000 Binary files a/static/images/status/block--minus.png and /dev/null differ diff --git a/static/images/status/block--pencil.png b/static/images/status/block--pencil.png deleted file mode 100755 index 8e6dca82..00000000 Binary files a/static/images/status/block--pencil.png and /dev/null differ diff --git a/static/images/status/block--plus.png b/static/images/status/block--plus.png deleted file mode 100755 index 39143ca5..00000000 Binary files a/static/images/status/block--plus.png and /dev/null differ diff --git a/static/images/status/block-share.png b/static/images/status/block-share.png deleted file mode 100755 index fb7c55bc..00000000 Binary files a/static/images/status/block-share.png and /dev/null differ diff --git a/static/images/status/block-small.png b/static/images/status/block-small.png deleted file mode 100755 index 7cc52813..00000000 Binary files a/static/images/status/block-small.png and /dev/null differ diff --git a/static/images/status/block.png b/static/images/status/block.png deleted file mode 100755 index ed7ec0e9..00000000 Binary files a/static/images/status/block.png and /dev/null differ diff --git a/static/images/status/blog--arrow.png b/static/images/status/blog--arrow.png deleted file mode 100755 index d2336fcb..00000000 Binary files a/static/images/status/blog--arrow.png and /dev/null differ diff --git a/static/images/status/blog--exclamation.png b/static/images/status/blog--exclamation.png deleted file mode 100755 index 6ce4bd45..00000000 Binary files a/static/images/status/blog--exclamation.png and /dev/null differ diff --git a/static/images/status/blog--minus.png b/static/images/status/blog--minus.png deleted file mode 100755 index ac51ba84..00000000 Binary files a/static/images/status/blog--minus.png and /dev/null differ diff --git a/static/images/status/blog--pencil.png b/static/images/status/blog--pencil.png deleted file mode 100755 index 1fabd23e..00000000 Binary files a/static/images/status/blog--pencil.png and /dev/null differ diff --git a/static/images/status/blog--plus.png b/static/images/status/blog--plus.png deleted file mode 100755 index 7d5e6448..00000000 Binary files a/static/images/status/blog--plus.png and /dev/null differ diff --git a/static/images/status/blog-blue.png b/static/images/status/blog-blue.png deleted file mode 100755 index 3a957dab..00000000 Binary files a/static/images/status/blog-blue.png and /dev/null differ diff --git a/static/images/status/blog.png b/static/images/status/blog.png deleted file mode 100755 index 861b02f4..00000000 Binary files a/static/images/status/blog.png and /dev/null differ diff --git a/static/images/status/blogs-stack.png b/static/images/status/blogs-stack.png deleted file mode 100755 index f06a297d..00000000 Binary files a/static/images/status/blogs-stack.png and /dev/null differ diff --git a/static/images/status/blogs.png b/static/images/status/blogs.png deleted file mode 100755 index 7ba55c0d..00000000 Binary files a/static/images/status/blogs.png and /dev/null differ diff --git a/static/images/status/blueprint--arrow.png b/static/images/status/blueprint--arrow.png deleted file mode 100755 index 55bb458c..00000000 Binary files a/static/images/status/blueprint--arrow.png and /dev/null differ diff --git a/static/images/status/blueprint--exclamation.png b/static/images/status/blueprint--exclamation.png deleted file mode 100755 index 556fc333..00000000 Binary files a/static/images/status/blueprint--exclamation.png and /dev/null differ diff --git a/static/images/status/blueprint--minus.png b/static/images/status/blueprint--minus.png deleted file mode 100755 index 015dc6fb..00000000 Binary files a/static/images/status/blueprint--minus.png and /dev/null differ diff --git a/static/images/status/blueprint--pencil.png b/static/images/status/blueprint--pencil.png deleted file mode 100755 index a37cefb7..00000000 Binary files a/static/images/status/blueprint--pencil.png and /dev/null differ diff --git a/static/images/status/blueprint--plus.png b/static/images/status/blueprint--plus.png deleted file mode 100755 index ff8f2073..00000000 Binary files a/static/images/status/blueprint--plus.png and /dev/null differ diff --git a/static/images/status/blueprint-horizontal.png b/static/images/status/blueprint-horizontal.png deleted file mode 100755 index 2fffb6a2..00000000 Binary files a/static/images/status/blueprint-horizontal.png and /dev/null differ diff --git a/static/images/status/blueprint.png b/static/images/status/blueprint.png deleted file mode 100755 index e75fa516..00000000 Binary files a/static/images/status/blueprint.png and /dev/null differ diff --git a/static/images/status/blueprints.png b/static/images/status/blueprints.png deleted file mode 100755 index 1c09e352..00000000 Binary files a/static/images/status/blueprints.png and /dev/null differ diff --git a/static/images/status/bluetooth.png b/static/images/status/bluetooth.png deleted file mode 100755 index ca297161..00000000 Binary files a/static/images/status/bluetooth.png and /dev/null differ diff --git a/static/images/status/bomb.png b/static/images/status/bomb.png deleted file mode 100755 index 2e731682..00000000 Binary files a/static/images/status/bomb.png and /dev/null differ diff --git a/static/images/status/book--arrow.png b/static/images/status/book--arrow.png deleted file mode 100755 index 699df1f8..00000000 Binary files a/static/images/status/book--arrow.png and /dev/null differ diff --git a/static/images/status/book--exclamation.png b/static/images/status/book--exclamation.png deleted file mode 100755 index 53b3909a..00000000 Binary files a/static/images/status/book--exclamation.png and /dev/null differ diff --git a/static/images/status/book--minus.png b/static/images/status/book--minus.png deleted file mode 100755 index 18109418..00000000 Binary files a/static/images/status/book--minus.png and /dev/null differ diff --git a/static/images/status/book--pencil.png b/static/images/status/book--pencil.png deleted file mode 100755 index 8e559673..00000000 Binary files a/static/images/status/book--pencil.png and /dev/null differ diff --git a/static/images/status/book--plus.png b/static/images/status/book--plus.png deleted file mode 100755 index 0c4cb909..00000000 Binary files a/static/images/status/book--plus.png and /dev/null differ diff --git a/static/images/status/book-bookmark.png b/static/images/status/book-bookmark.png deleted file mode 100755 index b4b6ad8a..00000000 Binary files a/static/images/status/book-bookmark.png and /dev/null differ diff --git a/static/images/status/book-brown.png b/static/images/status/book-brown.png deleted file mode 100755 index 5b37b29b..00000000 Binary files a/static/images/status/book-brown.png and /dev/null differ diff --git a/static/images/status/book-open-bookmark.png b/static/images/status/book-open-bookmark.png deleted file mode 100755 index 5d3365cc..00000000 Binary files a/static/images/status/book-open-bookmark.png and /dev/null differ diff --git a/static/images/status/book-open-next.png b/static/images/status/book-open-next.png deleted file mode 100755 index 5eac8686..00000000 Binary files a/static/images/status/book-open-next.png and /dev/null differ diff --git a/static/images/status/book-open-previous.png b/static/images/status/book-open-previous.png deleted file mode 100755 index 738a64c2..00000000 Binary files a/static/images/status/book-open-previous.png and /dev/null differ diff --git a/static/images/status/book-open.png b/static/images/status/book-open.png deleted file mode 100755 index 36513d7b..00000000 Binary files a/static/images/status/book-open.png and /dev/null differ diff --git a/static/images/status/book-question.png b/static/images/status/book-question.png deleted file mode 100755 index b9ca7cb1..00000000 Binary files a/static/images/status/book-question.png and /dev/null differ diff --git a/static/images/status/book-small-brown.png b/static/images/status/book-small-brown.png deleted file mode 100755 index 7afa4950..00000000 Binary files a/static/images/status/book-small-brown.png and /dev/null differ diff --git a/static/images/status/book-small.png b/static/images/status/book-small.png deleted file mode 100755 index 647178d4..00000000 Binary files a/static/images/status/book-small.png and /dev/null differ diff --git a/static/images/status/book.png b/static/images/status/book.png deleted file mode 100755 index 5e23dbc8..00000000 Binary files a/static/images/status/book.png and /dev/null differ diff --git a/static/images/status/bookmark--arrow.png b/static/images/status/bookmark--arrow.png deleted file mode 100755 index a13bca39..00000000 Binary files a/static/images/status/bookmark--arrow.png and /dev/null differ diff --git a/static/images/status/bookmark--exclamation.png b/static/images/status/bookmark--exclamation.png deleted file mode 100755 index 714e6dc0..00000000 Binary files a/static/images/status/bookmark--exclamation.png and /dev/null differ diff --git a/static/images/status/bookmark--minus.png b/static/images/status/bookmark--minus.png deleted file mode 100755 index 1354b3ff..00000000 Binary files a/static/images/status/bookmark--minus.png and /dev/null differ diff --git a/static/images/status/bookmark--pencil.png b/static/images/status/bookmark--pencil.png deleted file mode 100755 index 94ffde68..00000000 Binary files a/static/images/status/bookmark--pencil.png and /dev/null differ diff --git a/static/images/status/bookmark--plus.png b/static/images/status/bookmark--plus.png deleted file mode 100755 index 6c0eb49f..00000000 Binary files a/static/images/status/bookmark--plus.png and /dev/null differ diff --git a/static/images/status/bookmark-export.png b/static/images/status/bookmark-export.png deleted file mode 100755 index 0c437df1..00000000 Binary files a/static/images/status/bookmark-export.png and /dev/null differ diff --git a/static/images/status/bookmark-import.png b/static/images/status/bookmark-import.png deleted file mode 100755 index 60a36f19..00000000 Binary files a/static/images/status/bookmark-import.png and /dev/null differ diff --git a/static/images/status/bookmark-small.png b/static/images/status/bookmark-small.png deleted file mode 100755 index fab14b4f..00000000 Binary files a/static/images/status/bookmark-small.png and /dev/null differ diff --git a/static/images/status/bookmark.png b/static/images/status/bookmark.png deleted file mode 100755 index 273a93da..00000000 Binary files a/static/images/status/bookmark.png and /dev/null differ diff --git a/static/images/status/books-brown.png b/static/images/status/books-brown.png deleted file mode 100755 index f9d62921..00000000 Binary files a/static/images/status/books-brown.png and /dev/null differ diff --git a/static/images/status/books-stack.png b/static/images/status/books-stack.png deleted file mode 100755 index 80dfa195..00000000 Binary files a/static/images/status/books-stack.png and /dev/null differ diff --git a/static/images/status/books.png b/static/images/status/books.png deleted file mode 100755 index 6a29ac21..00000000 Binary files a/static/images/status/books.png and /dev/null differ diff --git a/static/images/status/border-all.png b/static/images/status/border-all.png deleted file mode 100755 index 7016a6f2..00000000 Binary files a/static/images/status/border-all.png and /dev/null differ diff --git a/static/images/status/border-bottom-double.png b/static/images/status/border-bottom-double.png deleted file mode 100755 index 2357ed88..00000000 Binary files a/static/images/status/border-bottom-double.png and /dev/null differ diff --git a/static/images/status/border-bottom-thick.png b/static/images/status/border-bottom-thick.png deleted file mode 100755 index c6bed8c5..00000000 Binary files a/static/images/status/border-bottom-thick.png and /dev/null differ diff --git a/static/images/status/border-bottom.png b/static/images/status/border-bottom.png deleted file mode 100755 index 06891871..00000000 Binary files a/static/images/status/border-bottom.png and /dev/null differ diff --git a/static/images/status/border-color.png b/static/images/status/border-color.png deleted file mode 100755 index 065c5c40..00000000 Binary files a/static/images/status/border-color.png and /dev/null differ diff --git a/static/images/status/border-dash.png b/static/images/status/border-dash.png deleted file mode 100755 index 3b2d9dcf..00000000 Binary files a/static/images/status/border-dash.png and /dev/null differ diff --git a/static/images/status/border-down.png b/static/images/status/border-down.png deleted file mode 100755 index 990e4f56..00000000 Binary files a/static/images/status/border-down.png and /dev/null differ diff --git a/static/images/status/border-draw.png b/static/images/status/border-draw.png deleted file mode 100755 index 221cf067..00000000 Binary files a/static/images/status/border-draw.png and /dev/null differ diff --git a/static/images/status/border-horizontal-all.png b/static/images/status/border-horizontal-all.png deleted file mode 100755 index 7a9d13a2..00000000 Binary files a/static/images/status/border-horizontal-all.png and /dev/null differ diff --git a/static/images/status/border-horizontal.png b/static/images/status/border-horizontal.png deleted file mode 100755 index 6210b58c..00000000 Binary files a/static/images/status/border-horizontal.png and /dev/null differ diff --git a/static/images/status/border-inside.png b/static/images/status/border-inside.png deleted file mode 100755 index 45be76f2..00000000 Binary files a/static/images/status/border-inside.png and /dev/null differ diff --git a/static/images/status/border-left.png b/static/images/status/border-left.png deleted file mode 100755 index 5d50e471..00000000 Binary files a/static/images/status/border-left.png and /dev/null differ diff --git a/static/images/status/border-outside-thick.png b/static/images/status/border-outside-thick.png deleted file mode 100755 index 160172ef..00000000 Binary files a/static/images/status/border-outside-thick.png and /dev/null differ diff --git a/static/images/status/border-outside.png b/static/images/status/border-outside.png deleted file mode 100755 index 30c3c542..00000000 Binary files a/static/images/status/border-outside.png and /dev/null differ diff --git a/static/images/status/border-right.png b/static/images/status/border-right.png deleted file mode 100755 index 6472a386..00000000 Binary files a/static/images/status/border-right.png and /dev/null differ diff --git a/static/images/status/border-top-bottom-double.png b/static/images/status/border-top-bottom-double.png deleted file mode 100755 index ae95aeda..00000000 Binary files a/static/images/status/border-top-bottom-double.png and /dev/null differ diff --git a/static/images/status/border-top-bottom-thick.png b/static/images/status/border-top-bottom-thick.png deleted file mode 100755 index 49a3f7fb..00000000 Binary files a/static/images/status/border-top-bottom-thick.png and /dev/null differ diff --git a/static/images/status/border-top-bottom.png b/static/images/status/border-top-bottom.png deleted file mode 100755 index 978c6225..00000000 Binary files a/static/images/status/border-top-bottom.png and /dev/null differ diff --git a/static/images/status/border-top.png b/static/images/status/border-top.png deleted file mode 100755 index 843410ad..00000000 Binary files a/static/images/status/border-top.png and /dev/null differ diff --git a/static/images/status/border-up.png b/static/images/status/border-up.png deleted file mode 100755 index 77e4e7d0..00000000 Binary files a/static/images/status/border-up.png and /dev/null differ diff --git a/static/images/status/border-vertical-all.png b/static/images/status/border-vertical-all.png deleted file mode 100755 index 2982ed47..00000000 Binary files a/static/images/status/border-vertical-all.png and /dev/null differ diff --git a/static/images/status/border-vertical.png b/static/images/status/border-vertical.png deleted file mode 100755 index 2c224553..00000000 Binary files a/static/images/status/border-vertical.png and /dev/null differ diff --git a/static/images/status/border-weight.png b/static/images/status/border-weight.png deleted file mode 100755 index 580ebb64..00000000 Binary files a/static/images/status/border-weight.png and /dev/null differ diff --git a/static/images/status/border.png b/static/images/status/border.png deleted file mode 100755 index 11ee98fc..00000000 Binary files a/static/images/status/border.png and /dev/null differ diff --git a/static/images/status/box--arrow.png b/static/images/status/box--arrow.png deleted file mode 100755 index cf8fe070..00000000 Binary files a/static/images/status/box--arrow.png and /dev/null differ diff --git a/static/images/status/box--exclamation.png b/static/images/status/box--exclamation.png deleted file mode 100755 index e71f8464..00000000 Binary files a/static/images/status/box--exclamation.png and /dev/null differ diff --git a/static/images/status/box--minus.png b/static/images/status/box--minus.png deleted file mode 100755 index 5b5c0b0a..00000000 Binary files a/static/images/status/box--minus.png and /dev/null differ diff --git a/static/images/status/box--pencil.png b/static/images/status/box--pencil.png deleted file mode 100755 index 674ef260..00000000 Binary files a/static/images/status/box--pencil.png and /dev/null differ diff --git a/static/images/status/box--plus.png b/static/images/status/box--plus.png deleted file mode 100755 index 5999bd43..00000000 Binary files a/static/images/status/box--plus.png and /dev/null differ diff --git a/static/images/status/box-label.png b/static/images/status/box-label.png deleted file mode 100755 index 25799662..00000000 Binary files a/static/images/status/box-label.png and /dev/null differ diff --git a/static/images/status/box-search-result.png b/static/images/status/box-search-result.png deleted file mode 100755 index 0aab9198..00000000 Binary files a/static/images/status/box-search-result.png and /dev/null differ diff --git a/static/images/status/box-share.png b/static/images/status/box-share.png deleted file mode 100755 index 5b1825b7..00000000 Binary files a/static/images/status/box-share.png and /dev/null differ diff --git a/static/images/status/box-small.png b/static/images/status/box-small.png deleted file mode 100755 index 49318b73..00000000 Binary files a/static/images/status/box-small.png and /dev/null differ diff --git a/static/images/status/box.png b/static/images/status/box.png deleted file mode 100755 index 3ec0ceb1..00000000 Binary files a/static/images/status/box.png and /dev/null differ diff --git a/static/images/status/briefcase--arrow.png b/static/images/status/briefcase--arrow.png deleted file mode 100755 index 3eea23a7..00000000 Binary files a/static/images/status/briefcase--arrow.png and /dev/null differ diff --git a/static/images/status/briefcase--exclamation.png b/static/images/status/briefcase--exclamation.png deleted file mode 100755 index 3afce8f2..00000000 Binary files a/static/images/status/briefcase--exclamation.png and /dev/null differ diff --git a/static/images/status/briefcase--minus.png b/static/images/status/briefcase--minus.png deleted file mode 100755 index dde4515f..00000000 Binary files a/static/images/status/briefcase--minus.png and /dev/null differ diff --git a/static/images/status/briefcase--pencil.png b/static/images/status/briefcase--pencil.png deleted file mode 100755 index f98ce79e..00000000 Binary files a/static/images/status/briefcase--pencil.png and /dev/null differ diff --git a/static/images/status/briefcase--plus.png b/static/images/status/briefcase--plus.png deleted file mode 100755 index eb44caa2..00000000 Binary files a/static/images/status/briefcase--plus.png and /dev/null differ diff --git a/static/images/status/briefcase-small.png b/static/images/status/briefcase-small.png deleted file mode 100755 index 29ad84c7..00000000 Binary files a/static/images/status/briefcase-small.png and /dev/null differ diff --git a/static/images/status/briefcase.png b/static/images/status/briefcase.png deleted file mode 100755 index 06288729..00000000 Binary files a/static/images/status/briefcase.png and /dev/null differ diff --git a/static/images/status/brightness-control-up.png b/static/images/status/brightness-control-up.png deleted file mode 100755 index e687319c..00000000 Binary files a/static/images/status/brightness-control-up.png and /dev/null differ diff --git a/static/images/status/brightness-control.png b/static/images/status/brightness-control.png deleted file mode 100755 index c6221791..00000000 Binary files a/static/images/status/brightness-control.png and /dev/null differ diff --git a/static/images/status/brightness-low.png b/static/images/status/brightness-low.png deleted file mode 100755 index 2f70cba6..00000000 Binary files a/static/images/status/brightness-low.png and /dev/null differ diff --git a/static/images/status/brightness-small-low.png b/static/images/status/brightness-small-low.png deleted file mode 100755 index 440e6261..00000000 Binary files a/static/images/status/brightness-small-low.png and /dev/null differ diff --git a/static/images/status/brightness-small.png b/static/images/status/brightness-small.png deleted file mode 100755 index b7234927..00000000 Binary files a/static/images/status/brightness-small.png and /dev/null differ diff --git a/static/images/status/brightness.png b/static/images/status/brightness.png deleted file mode 100755 index 730a2c4b..00000000 Binary files a/static/images/status/brightness.png and /dev/null differ diff --git a/static/images/status/broom--arrow.png b/static/images/status/broom--arrow.png deleted file mode 100755 index 5b4c9621..00000000 Binary files a/static/images/status/broom--arrow.png and /dev/null differ diff --git a/static/images/status/broom--exclamation.png b/static/images/status/broom--exclamation.png deleted file mode 100755 index d0f3eb41..00000000 Binary files a/static/images/status/broom--exclamation.png and /dev/null differ diff --git a/static/images/status/broom--minus.png b/static/images/status/broom--minus.png deleted file mode 100755 index b72f940a..00000000 Binary files a/static/images/status/broom--minus.png and /dev/null differ diff --git a/static/images/status/broom--pencil.png b/static/images/status/broom--pencil.png deleted file mode 100755 index 2167974d..00000000 Binary files a/static/images/status/broom--pencil.png and /dev/null differ diff --git a/static/images/status/broom--plus.png b/static/images/status/broom--plus.png deleted file mode 100755 index 75427363..00000000 Binary files a/static/images/status/broom--plus.png and /dev/null differ diff --git a/static/images/status/broom-code.png b/static/images/status/broom-code.png deleted file mode 100755 index 437385b4..00000000 Binary files a/static/images/status/broom-code.png and /dev/null differ diff --git a/static/images/status/bug--arrow.png b/static/images/status/bug--arrow.png deleted file mode 100755 index d6eb9f1f..00000000 Binary files a/static/images/status/bug--arrow.png and /dev/null differ diff --git a/static/images/status/bug--exclamation.png b/static/images/status/bug--exclamation.png deleted file mode 100755 index 0451340e..00000000 Binary files a/static/images/status/bug--exclamation.png and /dev/null differ diff --git a/static/images/status/bug--minus.png b/static/images/status/bug--minus.png deleted file mode 100755 index 82db78fa..00000000 Binary files a/static/images/status/bug--minus.png and /dev/null differ diff --git a/static/images/status/bug--pencil.png b/static/images/status/bug--pencil.png deleted file mode 100755 index 9076cc56..00000000 Binary files a/static/images/status/bug--pencil.png and /dev/null differ diff --git a/static/images/status/bug--plus.png b/static/images/status/bug--plus.png deleted file mode 100755 index fe12b199..00000000 Binary files a/static/images/status/bug--plus.png and /dev/null differ diff --git a/static/images/status/building--arrow.png b/static/images/status/building--arrow.png deleted file mode 100755 index 248cce80..00000000 Binary files a/static/images/status/building--arrow.png and /dev/null differ diff --git a/static/images/status/building--exclamation.png b/static/images/status/building--exclamation.png deleted file mode 100755 index 0e91df75..00000000 Binary files a/static/images/status/building--exclamation.png and /dev/null differ diff --git a/static/images/status/building--minus.png b/static/images/status/building--minus.png deleted file mode 100755 index 2688f3e2..00000000 Binary files a/static/images/status/building--minus.png and /dev/null differ diff --git a/static/images/status/building--pencil.png b/static/images/status/building--pencil.png deleted file mode 100755 index 78d60787..00000000 Binary files a/static/images/status/building--pencil.png and /dev/null differ diff --git a/static/images/status/building--plus.png b/static/images/status/building--plus.png deleted file mode 100755 index 271f12fe..00000000 Binary files a/static/images/status/building--plus.png and /dev/null differ diff --git a/static/images/status/building-low.png b/static/images/status/building-low.png deleted file mode 100755 index aca98edf..00000000 Binary files a/static/images/status/building-low.png and /dev/null differ diff --git a/static/images/status/building-medium.png b/static/images/status/building-medium.png deleted file mode 100755 index fbd66e57..00000000 Binary files a/static/images/status/building-medium.png and /dev/null differ diff --git a/static/images/status/building-network.png b/static/images/status/building-network.png deleted file mode 100755 index 009e1fa3..00000000 Binary files a/static/images/status/building-network.png and /dev/null differ diff --git a/static/images/status/building-old.png b/static/images/status/building-old.png deleted file mode 100755 index 859ae656..00000000 Binary files a/static/images/status/building-old.png and /dev/null differ diff --git a/static/images/status/building-small.png b/static/images/status/building-small.png deleted file mode 100755 index 4ea1aec5..00000000 Binary files a/static/images/status/building-small.png and /dev/null differ diff --git a/static/images/status/building.png b/static/images/status/building.png deleted file mode 100755 index edfcdfdc..00000000 Binary files a/static/images/status/building.png and /dev/null differ diff --git a/static/images/status/burn--arrow.png b/static/images/status/burn--arrow.png deleted file mode 100755 index e6df7410..00000000 Binary files a/static/images/status/burn--arrow.png and /dev/null differ diff --git a/static/images/status/burn--exclamation.png b/static/images/status/burn--exclamation.png deleted file mode 100755 index 41b48f59..00000000 Binary files a/static/images/status/burn--exclamation.png and /dev/null differ diff --git a/static/images/status/burn--minus.png b/static/images/status/burn--minus.png deleted file mode 100755 index c99c3cf6..00000000 Binary files a/static/images/status/burn--minus.png and /dev/null differ diff --git a/static/images/status/burn--pencil.png b/static/images/status/burn--pencil.png deleted file mode 100755 index 816850c9..00000000 Binary files a/static/images/status/burn--pencil.png and /dev/null differ diff --git a/static/images/status/burn--plus.png b/static/images/status/burn--plus.png deleted file mode 100755 index 4a687a46..00000000 Binary files a/static/images/status/burn--plus.png and /dev/null differ diff --git a/static/images/status/burn-small.png b/static/images/status/burn-small.png deleted file mode 100755 index f1838553..00000000 Binary files a/static/images/status/burn-small.png and /dev/null differ diff --git a/static/images/status/burn.png b/static/images/status/burn.png deleted file mode 100755 index 21229c83..00000000 Binary files a/static/images/status/burn.png and /dev/null differ diff --git a/static/images/status/cake--arrow.png b/static/images/status/cake--arrow.png deleted file mode 100755 index fb5a781c..00000000 Binary files a/static/images/status/cake--arrow.png and /dev/null differ diff --git a/static/images/status/cake--exclamation.png b/static/images/status/cake--exclamation.png deleted file mode 100755 index 0b121867..00000000 Binary files a/static/images/status/cake--exclamation.png and /dev/null differ diff --git a/static/images/status/cake--minus.png b/static/images/status/cake--minus.png deleted file mode 100755 index ee6429ca..00000000 Binary files a/static/images/status/cake--minus.png and /dev/null differ diff --git a/static/images/status/cake--pencil.png b/static/images/status/cake--pencil.png deleted file mode 100755 index 831bbcf7..00000000 Binary files a/static/images/status/cake--pencil.png and /dev/null differ diff --git a/static/images/status/cake--plus.png b/static/images/status/cake--plus.png deleted file mode 100755 index 31699688..00000000 Binary files a/static/images/status/cake--plus.png and /dev/null differ diff --git a/static/images/status/cake-plain.png b/static/images/status/cake-plain.png deleted file mode 100755 index 84b98990..00000000 Binary files a/static/images/status/cake-plain.png and /dev/null differ diff --git a/static/images/status/cake.png b/static/images/status/cake.png deleted file mode 100755 index c3bb6998..00000000 Binary files a/static/images/status/cake.png and /dev/null differ diff --git a/static/images/status/calculator--arrow.png b/static/images/status/calculator--arrow.png deleted file mode 100755 index aa2256e1..00000000 Binary files a/static/images/status/calculator--arrow.png and /dev/null differ diff --git a/static/images/status/calculator--exclamation.png b/static/images/status/calculator--exclamation.png deleted file mode 100755 index b88a3d3b..00000000 Binary files a/static/images/status/calculator--exclamation.png and /dev/null differ diff --git a/static/images/status/calculator--minus.png b/static/images/status/calculator--minus.png deleted file mode 100755 index 7bc509c7..00000000 Binary files a/static/images/status/calculator--minus.png and /dev/null differ diff --git a/static/images/status/calculator--pencil.png b/static/images/status/calculator--pencil.png deleted file mode 100755 index a4f48e50..00000000 Binary files a/static/images/status/calculator--pencil.png and /dev/null differ diff --git a/static/images/status/calculator--plus.png b/static/images/status/calculator--plus.png deleted file mode 100755 index c0e234a8..00000000 Binary files a/static/images/status/calculator--plus.png and /dev/null differ diff --git a/static/images/status/calculator-gray.png b/static/images/status/calculator-gray.png deleted file mode 100755 index a40cc1e5..00000000 Binary files a/static/images/status/calculator-gray.png and /dev/null differ diff --git a/static/images/status/calculator-scientific.png b/static/images/status/calculator-scientific.png deleted file mode 100755 index eb7873d6..00000000 Binary files a/static/images/status/calculator-scientific.png and /dev/null differ diff --git a/static/images/status/calculator.png b/static/images/status/calculator.png deleted file mode 100755 index 00ad5155..00000000 Binary files a/static/images/status/calculator.png and /dev/null differ diff --git a/static/images/status/calendar--arrow.png b/static/images/status/calendar--arrow.png deleted file mode 100755 index e2a4b66d..00000000 Binary files a/static/images/status/calendar--arrow.png and /dev/null differ diff --git a/static/images/status/calendar--exclamation.png b/static/images/status/calendar--exclamation.png deleted file mode 100755 index c0125113..00000000 Binary files a/static/images/status/calendar--exclamation.png and /dev/null differ diff --git a/static/images/status/calendar--minus.png b/static/images/status/calendar--minus.png deleted file mode 100755 index 2527bc10..00000000 Binary files a/static/images/status/calendar--minus.png and /dev/null differ diff --git a/static/images/status/calendar--pencil.png b/static/images/status/calendar--pencil.png deleted file mode 100755 index a3059044..00000000 Binary files a/static/images/status/calendar--pencil.png and /dev/null differ diff --git a/static/images/status/calendar--plus.png b/static/images/status/calendar--plus.png deleted file mode 100755 index 96461f29..00000000 Binary files a/static/images/status/calendar--plus.png and /dev/null differ diff --git a/static/images/status/calendar-blue.png b/static/images/status/calendar-blue.png deleted file mode 100755 index 3ee3c205..00000000 Binary files a/static/images/status/calendar-blue.png and /dev/null differ diff --git a/static/images/status/calendar-day.png b/static/images/status/calendar-day.png deleted file mode 100755 index 67f89390..00000000 Binary files a/static/images/status/calendar-day.png and /dev/null differ diff --git a/static/images/status/calendar-delete.png b/static/images/status/calendar-delete.png deleted file mode 100755 index 618290f3..00000000 Binary files a/static/images/status/calendar-delete.png and /dev/null differ diff --git a/static/images/status/calendar-empty.png b/static/images/status/calendar-empty.png deleted file mode 100755 index fb46b49b..00000000 Binary files a/static/images/status/calendar-empty.png and /dev/null differ diff --git a/static/images/status/calendar-export.png b/static/images/status/calendar-export.png deleted file mode 100755 index 5cc236a4..00000000 Binary files a/static/images/status/calendar-export.png and /dev/null differ diff --git a/static/images/status/calendar-import.png b/static/images/status/calendar-import.png deleted file mode 100755 index efe158c0..00000000 Binary files a/static/images/status/calendar-import.png and /dev/null differ diff --git a/static/images/status/calendar-insert.png b/static/images/status/calendar-insert.png deleted file mode 100755 index 77adb104..00000000 Binary files a/static/images/status/calendar-insert.png and /dev/null differ diff --git a/static/images/status/calendar-list.png b/static/images/status/calendar-list.png deleted file mode 100755 index e81dcc8c..00000000 Binary files a/static/images/status/calendar-list.png and /dev/null differ diff --git a/static/images/status/calendar-month.png b/static/images/status/calendar-month.png deleted file mode 100755 index 4e37d50c..00000000 Binary files a/static/images/status/calendar-month.png and /dev/null differ diff --git a/static/images/status/calendar-next.png b/static/images/status/calendar-next.png deleted file mode 100755 index ed6ae88c..00000000 Binary files a/static/images/status/calendar-next.png and /dev/null differ diff --git a/static/images/status/calendar-previous.png b/static/images/status/calendar-previous.png deleted file mode 100755 index 027c6e3f..00000000 Binary files a/static/images/status/calendar-previous.png and /dev/null differ diff --git a/static/images/status/calendar-relation.png b/static/images/status/calendar-relation.png deleted file mode 100755 index 288628bd..00000000 Binary files a/static/images/status/calendar-relation.png and /dev/null differ diff --git a/static/images/status/calendar-search-result.png b/static/images/status/calendar-search-result.png deleted file mode 100755 index faa0a9e2..00000000 Binary files a/static/images/status/calendar-search-result.png and /dev/null differ diff --git a/static/images/status/calendar-select-days-span.png b/static/images/status/calendar-select-days-span.png deleted file mode 100755 index a6b7373f..00000000 Binary files a/static/images/status/calendar-select-days-span.png and /dev/null differ diff --git a/static/images/status/calendar-select-days.png b/static/images/status/calendar-select-days.png deleted file mode 100755 index d3561b11..00000000 Binary files a/static/images/status/calendar-select-days.png and /dev/null differ diff --git a/static/images/status/calendar-select-month.png b/static/images/status/calendar-select-month.png deleted file mode 100755 index 4f5ed558..00000000 Binary files a/static/images/status/calendar-select-month.png and /dev/null differ diff --git a/static/images/status/calendar-select-week.png b/static/images/status/calendar-select-week.png deleted file mode 100755 index b3c71d6b..00000000 Binary files a/static/images/status/calendar-select-week.png and /dev/null differ diff --git a/static/images/status/calendar-select.png b/static/images/status/calendar-select.png deleted file mode 100755 index f625a45e..00000000 Binary files a/static/images/status/calendar-select.png and /dev/null differ diff --git a/static/images/status/calendar-small-month.png b/static/images/status/calendar-small-month.png deleted file mode 100755 index 7ffb9384..00000000 Binary files a/static/images/status/calendar-small-month.png and /dev/null differ diff --git a/static/images/status/calendar-small.png b/static/images/status/calendar-small.png deleted file mode 100755 index 7360a71e..00000000 Binary files a/static/images/status/calendar-small.png and /dev/null differ diff --git a/static/images/status/calendar-task.png b/static/images/status/calendar-task.png deleted file mode 100755 index 713b2404..00000000 Binary files a/static/images/status/calendar-task.png and /dev/null differ diff --git a/static/images/status/calendar.png b/static/images/status/calendar.png deleted file mode 100755 index 413af239..00000000 Binary files a/static/images/status/calendar.png and /dev/null differ diff --git a/static/images/status/camcorder--arrow.png b/static/images/status/camcorder--arrow.png deleted file mode 100755 index 156cd698..00000000 Binary files a/static/images/status/camcorder--arrow.png and /dev/null differ diff --git a/static/images/status/camcorder--exclamation.png b/static/images/status/camcorder--exclamation.png deleted file mode 100755 index 99da5f5b..00000000 Binary files a/static/images/status/camcorder--exclamation.png and /dev/null differ diff --git a/static/images/status/camcorder--minus.png b/static/images/status/camcorder--minus.png deleted file mode 100755 index 9c3e1999..00000000 Binary files a/static/images/status/camcorder--minus.png and /dev/null differ diff --git a/static/images/status/camcorder--pencil.png b/static/images/status/camcorder--pencil.png deleted file mode 100755 index a80194da..00000000 Binary files a/static/images/status/camcorder--pencil.png and /dev/null differ diff --git a/static/images/status/camcorder--plus.png b/static/images/status/camcorder--plus.png deleted file mode 100755 index 6ad4884a..00000000 Binary files a/static/images/status/camcorder--plus.png and /dev/null differ diff --git a/static/images/status/camcorder-image.png b/static/images/status/camcorder-image.png deleted file mode 100755 index c98561cd..00000000 Binary files a/static/images/status/camcorder-image.png and /dev/null differ diff --git a/static/images/status/camcorder.png b/static/images/status/camcorder.png deleted file mode 100755 index a225bc9a..00000000 Binary files a/static/images/status/camcorder.png and /dev/null differ diff --git a/static/images/status/camera--arrow.png b/static/images/status/camera--arrow.png deleted file mode 100755 index 10310ce5..00000000 Binary files a/static/images/status/camera--arrow.png and /dev/null differ diff --git a/static/images/status/camera--exclamation.png b/static/images/status/camera--exclamation.png deleted file mode 100755 index 1feed5ae..00000000 Binary files a/static/images/status/camera--exclamation.png and /dev/null differ diff --git a/static/images/status/camera--minus.png b/static/images/status/camera--minus.png deleted file mode 100755 index 075af354..00000000 Binary files a/static/images/status/camera--minus.png and /dev/null differ diff --git a/static/images/status/camera--pencil.png b/static/images/status/camera--pencil.png deleted file mode 100755 index c820dd50..00000000 Binary files a/static/images/status/camera--pencil.png and /dev/null differ diff --git a/static/images/status/camera--plus.png b/static/images/status/camera--plus.png deleted file mode 100755 index 14f54c74..00000000 Binary files a/static/images/status/camera--plus.png and /dev/null differ diff --git a/static/images/status/camera-black.png b/static/images/status/camera-black.png deleted file mode 100755 index 9880aeda..00000000 Binary files a/static/images/status/camera-black.png and /dev/null differ diff --git a/static/images/status/camera-lens.png b/static/images/status/camera-lens.png deleted file mode 100755 index 4bf62781..00000000 Binary files a/static/images/status/camera-lens.png and /dev/null differ diff --git a/static/images/status/camera-small-black.png b/static/images/status/camera-small-black.png deleted file mode 100755 index 5bc6ec2f..00000000 Binary files a/static/images/status/camera-small-black.png and /dev/null differ diff --git a/static/images/status/camera-small.png b/static/images/status/camera-small.png deleted file mode 100755 index 8872cefb..00000000 Binary files a/static/images/status/camera-small.png and /dev/null differ diff --git a/static/images/status/camera.png b/static/images/status/camera.png deleted file mode 100755 index 5b8fa6d5..00000000 Binary files a/static/images/status/camera.png and /dev/null differ diff --git a/static/images/status/car--arrow.png b/static/images/status/car--arrow.png deleted file mode 100755 index 1fcafaeb..00000000 Binary files a/static/images/status/car--arrow.png and /dev/null differ diff --git a/static/images/status/car--exclamation.png b/static/images/status/car--exclamation.png deleted file mode 100755 index 335249de..00000000 Binary files a/static/images/status/car--exclamation.png and /dev/null differ diff --git a/static/images/status/car--minus.png b/static/images/status/car--minus.png deleted file mode 100755 index 1ffa0193..00000000 Binary files a/static/images/status/car--minus.png and /dev/null differ diff --git a/static/images/status/car--pencil.png b/static/images/status/car--pencil.png deleted file mode 100755 index da89d822..00000000 Binary files a/static/images/status/car--pencil.png and /dev/null differ diff --git a/static/images/status/car--plus.png b/static/images/status/car--plus.png deleted file mode 100755 index 6760db1c..00000000 Binary files a/static/images/status/car--plus.png and /dev/null differ diff --git a/static/images/status/car-red.png b/static/images/status/car-red.png deleted file mode 100755 index 5c5ce115..00000000 Binary files a/static/images/status/car-red.png and /dev/null differ diff --git a/static/images/status/car.png b/static/images/status/car.png deleted file mode 100755 index a4869f0f..00000000 Binary files a/static/images/status/car.png and /dev/null differ diff --git a/static/images/status/card--arrow.png b/static/images/status/card--arrow.png deleted file mode 100755 index 6f9fe884..00000000 Binary files a/static/images/status/card--arrow.png and /dev/null differ diff --git a/static/images/status/card--exclamation.png b/static/images/status/card--exclamation.png deleted file mode 100755 index 5acd70c5..00000000 Binary files a/static/images/status/card--exclamation.png and /dev/null differ diff --git a/static/images/status/card--minus.png b/static/images/status/card--minus.png deleted file mode 100755 index f5af2199..00000000 Binary files a/static/images/status/card--minus.png and /dev/null differ diff --git a/static/images/status/card--pencil.png b/static/images/status/card--pencil.png deleted file mode 100755 index e5cb330f..00000000 Binary files a/static/images/status/card--pencil.png and /dev/null differ diff --git a/static/images/status/card--plus.png b/static/images/status/card--plus.png deleted file mode 100755 index 27d93458..00000000 Binary files a/static/images/status/card--plus.png and /dev/null differ diff --git a/static/images/status/card-address.png b/static/images/status/card-address.png deleted file mode 100755 index dbadd8c6..00000000 Binary files a/static/images/status/card-address.png and /dev/null differ diff --git a/static/images/status/card-export.png b/static/images/status/card-export.png deleted file mode 100755 index 9c5b58f3..00000000 Binary files a/static/images/status/card-export.png and /dev/null differ diff --git a/static/images/status/card-import.png b/static/images/status/card-import.png deleted file mode 100755 index 4aea09f8..00000000 Binary files a/static/images/status/card-import.png and /dev/null differ diff --git a/static/images/status/card-small.png b/static/images/status/card-small.png deleted file mode 100755 index c53fd739..00000000 Binary files a/static/images/status/card-small.png and /dev/null differ diff --git a/static/images/status/card.png b/static/images/status/card.png deleted file mode 100755 index 152200d4..00000000 Binary files a/static/images/status/card.png and /dev/null differ diff --git a/static/images/status/cards-address.png b/static/images/status/cards-address.png deleted file mode 100755 index 69424134..00000000 Binary files a/static/images/status/cards-address.png and /dev/null differ diff --git a/static/images/status/cards-bind-address.png b/static/images/status/cards-bind-address.png deleted file mode 100755 index bb5d42bc..00000000 Binary files a/static/images/status/cards-bind-address.png and /dev/null differ diff --git a/static/images/status/cards-bind.png b/static/images/status/cards-bind.png deleted file mode 100755 index 13337e7f..00000000 Binary files a/static/images/status/cards-bind.png and /dev/null differ diff --git a/static/images/status/cards-stack.png b/static/images/status/cards-stack.png deleted file mode 100755 index fd024210..00000000 Binary files a/static/images/status/cards-stack.png and /dev/null differ diff --git a/static/images/status/cards.png b/static/images/status/cards.png deleted file mode 100755 index 9bd3b255..00000000 Binary files a/static/images/status/cards.png and /dev/null differ diff --git a/static/images/status/cassette--arrow.png b/static/images/status/cassette--arrow.png deleted file mode 100755 index 76f15d8f..00000000 Binary files a/static/images/status/cassette--arrow.png and /dev/null differ diff --git a/static/images/status/cassette--exclamation.png b/static/images/status/cassette--exclamation.png deleted file mode 100755 index 65ce12ce..00000000 Binary files a/static/images/status/cassette--exclamation.png and /dev/null differ diff --git a/static/images/status/cassette--minus.png b/static/images/status/cassette--minus.png deleted file mode 100755 index bd4f7943..00000000 Binary files a/static/images/status/cassette--minus.png and /dev/null differ diff --git a/static/images/status/cassette--pencil.png b/static/images/status/cassette--pencil.png deleted file mode 100755 index 9f049611..00000000 Binary files a/static/images/status/cassette--pencil.png and /dev/null differ diff --git a/static/images/status/cassette--plus.png b/static/images/status/cassette--plus.png deleted file mode 100755 index 52882b44..00000000 Binary files a/static/images/status/cassette--plus.png and /dev/null differ diff --git a/static/images/status/cassette-label.png b/static/images/status/cassette-label.png deleted file mode 100755 index 8ca6e47e..00000000 Binary files a/static/images/status/cassette-label.png and /dev/null differ diff --git a/static/images/status/cassette-small.png b/static/images/status/cassette-small.png deleted file mode 100755 index 70121ac8..00000000 Binary files a/static/images/status/cassette-small.png and /dev/null differ diff --git a/static/images/status/cassette.png b/static/images/status/cassette.png deleted file mode 100755 index 4cbe2a03..00000000 Binary files a/static/images/status/cassette.png and /dev/null differ diff --git a/static/images/status/category.png b/static/images/status/category.png deleted file mode 100755 index 1a3f6a24..00000000 Binary files a/static/images/status/category.png and /dev/null differ diff --git a/static/images/status/chain--arrow.png b/static/images/status/chain--arrow.png deleted file mode 100755 index 4c8515cb..00000000 Binary files a/static/images/status/chain--arrow.png and /dev/null differ diff --git a/static/images/status/chain--exclamation.png b/static/images/status/chain--exclamation.png deleted file mode 100755 index 330c408c..00000000 Binary files a/static/images/status/chain--exclamation.png and /dev/null differ diff --git a/static/images/status/chain--minus.png b/static/images/status/chain--minus.png deleted file mode 100755 index bf65ff1a..00000000 Binary files a/static/images/status/chain--minus.png and /dev/null differ diff --git a/static/images/status/chain--pencil.png b/static/images/status/chain--pencil.png deleted file mode 100755 index d10bbb15..00000000 Binary files a/static/images/status/chain--pencil.png and /dev/null differ diff --git a/static/images/status/chain--plus.png b/static/images/status/chain--plus.png deleted file mode 100755 index a517282f..00000000 Binary files a/static/images/status/chain--plus.png and /dev/null differ diff --git a/static/images/status/chain-small.png b/static/images/status/chain-small.png deleted file mode 100755 index 3f399ebd..00000000 Binary files a/static/images/status/chain-small.png and /dev/null differ diff --git a/static/images/status/chain-unchain.png b/static/images/status/chain-unchain.png deleted file mode 100755 index c56c8d8f..00000000 Binary files a/static/images/status/chain-unchain.png and /dev/null differ diff --git a/static/images/status/chain.png b/static/images/status/chain.png deleted file mode 100755 index ce799797..00000000 Binary files a/static/images/status/chain.png and /dev/null differ diff --git a/static/images/status/chart--arrow.png b/static/images/status/chart--arrow.png deleted file mode 100755 index ac6bb372..00000000 Binary files a/static/images/status/chart--arrow.png and /dev/null differ diff --git a/static/images/status/chart--exclamation.png b/static/images/status/chart--exclamation.png deleted file mode 100755 index eafc5048..00000000 Binary files a/static/images/status/chart--exclamation.png and /dev/null differ diff --git a/static/images/status/chart--minus.png b/static/images/status/chart--minus.png deleted file mode 100755 index 41f995cc..00000000 Binary files a/static/images/status/chart--minus.png and /dev/null differ diff --git a/static/images/status/chart--pencil.png b/static/images/status/chart--pencil.png deleted file mode 100755 index 95d23dad..00000000 Binary files a/static/images/status/chart--pencil.png and /dev/null differ diff --git a/static/images/status/chart--plus.png b/static/images/status/chart--plus.png deleted file mode 100755 index 6ddf52dc..00000000 Binary files a/static/images/status/chart--plus.png and /dev/null differ diff --git a/static/images/status/chart-down-color.png b/static/images/status/chart-down-color.png deleted file mode 100755 index 370b60d2..00000000 Binary files a/static/images/status/chart-down-color.png and /dev/null differ diff --git a/static/images/status/chart-down.png b/static/images/status/chart-down.png deleted file mode 100755 index 946a3405..00000000 Binary files a/static/images/status/chart-down.png and /dev/null differ diff --git a/static/images/status/chart-up-color.png b/static/images/status/chart-up-color.png deleted file mode 100755 index 7878b1ab..00000000 Binary files a/static/images/status/chart-up-color.png and /dev/null differ diff --git a/static/images/status/chart-up.png b/static/images/status/chart-up.png deleted file mode 100755 index f02e9095..00000000 Binary files a/static/images/status/chart-up.png and /dev/null differ diff --git a/static/images/status/chart.png b/static/images/status/chart.png deleted file mode 100755 index d3cb71d5..00000000 Binary files a/static/images/status/chart.png and /dev/null differ diff --git a/static/images/status/chevron-expand.png b/static/images/status/chevron-expand.png deleted file mode 100755 index cb4bc456..00000000 Binary files a/static/images/status/chevron-expand.png and /dev/null differ diff --git a/static/images/status/chevron-small-expand.png b/static/images/status/chevron-small-expand.png deleted file mode 100755 index 06a8eaca..00000000 Binary files a/static/images/status/chevron-small-expand.png and /dev/null differ diff --git a/static/images/status/chevron-small.png b/static/images/status/chevron-small.png deleted file mode 100755 index b54fd1c7..00000000 Binary files a/static/images/status/chevron-small.png and /dev/null differ diff --git a/static/images/status/chevron.png b/static/images/status/chevron.png deleted file mode 100755 index 0515a8a7..00000000 Binary files a/static/images/status/chevron.png and /dev/null differ diff --git a/static/images/status/cigarette-stop.png b/static/images/status/cigarette-stop.png deleted file mode 100755 index f1202d82..00000000 Binary files a/static/images/status/cigarette-stop.png and /dev/null differ diff --git a/static/images/status/cigarette.png b/static/images/status/cigarette.png deleted file mode 100755 index 8da21e99..00000000 Binary files a/static/images/status/cigarette.png and /dev/null differ diff --git a/static/images/status/clapperboard--arrow.png b/static/images/status/clapperboard--arrow.png deleted file mode 100755 index 80abf024..00000000 Binary files a/static/images/status/clapperboard--arrow.png and /dev/null differ diff --git a/static/images/status/clapperboard--exclamation.png b/static/images/status/clapperboard--exclamation.png deleted file mode 100755 index 50699f46..00000000 Binary files a/static/images/status/clapperboard--exclamation.png and /dev/null differ diff --git a/static/images/status/clapperboard--minus.png b/static/images/status/clapperboard--minus.png deleted file mode 100755 index 3c4088b6..00000000 Binary files a/static/images/status/clapperboard--minus.png and /dev/null differ diff --git a/static/images/status/clapperboard--pencil.png b/static/images/status/clapperboard--pencil.png deleted file mode 100755 index fee884ef..00000000 Binary files a/static/images/status/clapperboard--pencil.png and /dev/null differ diff --git a/static/images/status/clapperboard--plus.png b/static/images/status/clapperboard--plus.png deleted file mode 100755 index 78468c20..00000000 Binary files a/static/images/status/clapperboard--plus.png and /dev/null differ diff --git a/static/images/status/clapperboard.png b/static/images/status/clapperboard.png deleted file mode 100755 index 3165489b..00000000 Binary files a/static/images/status/clapperboard.png and /dev/null differ diff --git a/static/images/status/clipboard--arrow.png b/static/images/status/clipboard--arrow.png deleted file mode 100755 index 490842b7..00000000 Binary files a/static/images/status/clipboard--arrow.png and /dev/null differ diff --git a/static/images/status/clipboard--exclamation.png b/static/images/status/clipboard--exclamation.png deleted file mode 100755 index 44b201de..00000000 Binary files a/static/images/status/clipboard--exclamation.png and /dev/null differ diff --git a/static/images/status/clipboard--minus.png b/static/images/status/clipboard--minus.png deleted file mode 100755 index 2ac29bc5..00000000 Binary files a/static/images/status/clipboard--minus.png and /dev/null differ diff --git a/static/images/status/clipboard--pencil.png b/static/images/status/clipboard--pencil.png deleted file mode 100755 index c747cf06..00000000 Binary files a/static/images/status/clipboard--pencil.png and /dev/null differ diff --git a/static/images/status/clipboard--plus.png b/static/images/status/clipboard--plus.png deleted file mode 100755 index 2492449f..00000000 Binary files a/static/images/status/clipboard--plus.png and /dev/null differ diff --git a/static/images/status/clipboard-empty.png b/static/images/status/clipboard-empty.png deleted file mode 100755 index b689cff4..00000000 Binary files a/static/images/status/clipboard-empty.png and /dev/null differ diff --git a/static/images/status/clipboard-list.png b/static/images/status/clipboard-list.png deleted file mode 100755 index e98c5675..00000000 Binary files a/static/images/status/clipboard-list.png and /dev/null differ diff --git a/static/images/status/clipboard-paste-document-text.png b/static/images/status/clipboard-paste-document-text.png deleted file mode 100755 index 08647f1b..00000000 Binary files a/static/images/status/clipboard-paste-document-text.png and /dev/null differ diff --git a/static/images/status/clipboard-paste-image.png b/static/images/status/clipboard-paste-image.png deleted file mode 100755 index 3d0be8c6..00000000 Binary files a/static/images/status/clipboard-paste-image.png and /dev/null differ diff --git a/static/images/status/clipboard-paste-word.png b/static/images/status/clipboard-paste-word.png deleted file mode 100755 index 5fef587a..00000000 Binary files a/static/images/status/clipboard-paste-word.png and /dev/null differ diff --git a/static/images/status/clipboard-paste.png b/static/images/status/clipboard-paste.png deleted file mode 100755 index 0cf88872..00000000 Binary files a/static/images/status/clipboard-paste.png and /dev/null differ diff --git a/static/images/status/clipboard-search-result.png b/static/images/status/clipboard-search-result.png deleted file mode 100755 index 5bd9491f..00000000 Binary files a/static/images/status/clipboard-search-result.png and /dev/null differ diff --git a/static/images/status/clipboard-sign-out.png b/static/images/status/clipboard-sign-out.png deleted file mode 100755 index ddb13067..00000000 Binary files a/static/images/status/clipboard-sign-out.png and /dev/null differ diff --git a/static/images/status/clipboard-sign.png b/static/images/status/clipboard-sign.png deleted file mode 100755 index 3faef91f..00000000 Binary files a/static/images/status/clipboard-sign.png and /dev/null differ diff --git a/static/images/status/clipboard-task.png b/static/images/status/clipboard-task.png deleted file mode 100755 index 0023b3a7..00000000 Binary files a/static/images/status/clipboard-task.png and /dev/null differ diff --git a/static/images/status/clipboard-text.png b/static/images/status/clipboard-text.png deleted file mode 100755 index f2319877..00000000 Binary files a/static/images/status/clipboard-text.png and /dev/null differ diff --git a/static/images/status/clipboard.png b/static/images/status/clipboard.png deleted file mode 100755 index fcce8a65..00000000 Binary files a/static/images/status/clipboard.png and /dev/null differ diff --git a/static/images/status/clock--arrow.png b/static/images/status/clock--arrow.png deleted file mode 100755 index 2671f394..00000000 Binary files a/static/images/status/clock--arrow.png and /dev/null differ diff --git a/static/images/status/clock--exclamation.png b/static/images/status/clock--exclamation.png deleted file mode 100755 index 5e9ee7de..00000000 Binary files a/static/images/status/clock--exclamation.png and /dev/null differ diff --git a/static/images/status/clock--minus.png b/static/images/status/clock--minus.png deleted file mode 100755 index cf7b2fce..00000000 Binary files a/static/images/status/clock--minus.png and /dev/null differ diff --git a/static/images/status/clock--pencil.png b/static/images/status/clock--pencil.png deleted file mode 100755 index 396a1b17..00000000 Binary files a/static/images/status/clock--pencil.png and /dev/null differ diff --git a/static/images/status/clock--plus.png b/static/images/status/clock--plus.png deleted file mode 100755 index 9e641183..00000000 Binary files a/static/images/status/clock--plus.png and /dev/null differ diff --git a/static/images/status/clock-frame.png b/static/images/status/clock-frame.png deleted file mode 100755 index 2e3d03c1..00000000 Binary files a/static/images/status/clock-frame.png and /dev/null differ diff --git a/static/images/status/clock-history-frame.png b/static/images/status/clock-history-frame.png deleted file mode 100755 index ca070769..00000000 Binary files a/static/images/status/clock-history-frame.png and /dev/null differ diff --git a/static/images/status/clock-history.png b/static/images/status/clock-history.png deleted file mode 100755 index 1bd432ba..00000000 Binary files a/static/images/status/clock-history.png and /dev/null differ diff --git a/static/images/status/clock-select-remain.png b/static/images/status/clock-select-remain.png deleted file mode 100755 index 8c665b81..00000000 Binary files a/static/images/status/clock-select-remain.png and /dev/null differ diff --git a/static/images/status/clock-select.png b/static/images/status/clock-select.png deleted file mode 100755 index 8c567916..00000000 Binary files a/static/images/status/clock-select.png and /dev/null differ diff --git a/static/images/status/clock-small.png b/static/images/status/clock-small.png deleted file mode 100755 index a7782c76..00000000 Binary files a/static/images/status/clock-small.png and /dev/null differ diff --git a/static/images/status/color--arrow.png b/static/images/status/color--arrow.png deleted file mode 100755 index 1c0f5e45..00000000 Binary files a/static/images/status/color--arrow.png and /dev/null differ diff --git a/static/images/status/color--exclamation.png b/static/images/status/color--exclamation.png deleted file mode 100755 index fb90c76d..00000000 Binary files a/static/images/status/color--exclamation.png and /dev/null differ diff --git a/static/images/status/color--minus.png b/static/images/status/color--minus.png deleted file mode 100755 index eb5e30d8..00000000 Binary files a/static/images/status/color--minus.png and /dev/null differ diff --git a/static/images/status/color--pencil.png b/static/images/status/color--pencil.png deleted file mode 100755 index 283a7b42..00000000 Binary files a/static/images/status/color--pencil.png and /dev/null differ diff --git a/static/images/status/color--plus.png b/static/images/status/color--plus.png deleted file mode 100755 index 9b6f07ac..00000000 Binary files a/static/images/status/color--plus.png and /dev/null differ diff --git a/static/images/status/color-adjustment-green.png b/static/images/status/color-adjustment-green.png deleted file mode 100755 index c8bd99de..00000000 Binary files a/static/images/status/color-adjustment-green.png and /dev/null differ diff --git a/static/images/status/color-adjustment-red.png b/static/images/status/color-adjustment-red.png deleted file mode 100755 index c7f1808d..00000000 Binary files a/static/images/status/color-adjustment-red.png and /dev/null differ diff --git a/static/images/status/color-adjustment.png b/static/images/status/color-adjustment.png deleted file mode 100755 index 5a93eae3..00000000 Binary files a/static/images/status/color-adjustment.png and /dev/null differ diff --git a/static/images/status/color-small.png b/static/images/status/color-small.png deleted file mode 100755 index 203c00a8..00000000 Binary files a/static/images/status/color-small.png and /dev/null differ diff --git a/static/images/status/color-swatch-small.png b/static/images/status/color-swatch-small.png deleted file mode 100755 index 81ac00d1..00000000 Binary files a/static/images/status/color-swatch-small.png and /dev/null differ diff --git a/static/images/status/color-swatch.png b/static/images/status/color-swatch.png deleted file mode 100755 index 2ba0a06f..00000000 Binary files a/static/images/status/color-swatch.png and /dev/null differ diff --git a/static/images/status/color-swatches.png b/static/images/status/color-swatches.png deleted file mode 100755 index 26bbe1a6..00000000 Binary files a/static/images/status/color-swatches.png and /dev/null differ diff --git a/static/images/status/color.png b/static/images/status/color.png deleted file mode 100755 index 3ed7f558..00000000 Binary files a/static/images/status/color.png and /dev/null differ diff --git a/static/images/status/compass--arrow.png b/static/images/status/compass--arrow.png deleted file mode 100755 index 84019b24..00000000 Binary files a/static/images/status/compass--arrow.png and /dev/null differ diff --git a/static/images/status/compass--exclamation.png b/static/images/status/compass--exclamation.png deleted file mode 100755 index 24bb1617..00000000 Binary files a/static/images/status/compass--exclamation.png and /dev/null differ diff --git a/static/images/status/compass--minus.png b/static/images/status/compass--minus.png deleted file mode 100755 index 72e75908..00000000 Binary files a/static/images/status/compass--minus.png and /dev/null differ diff --git a/static/images/status/compass--pencil.png b/static/images/status/compass--pencil.png deleted file mode 100755 index 22c8699a..00000000 Binary files a/static/images/status/compass--pencil.png and /dev/null differ diff --git a/static/images/status/compass--plus.png b/static/images/status/compass--plus.png deleted file mode 100755 index 88acf742..00000000 Binary files a/static/images/status/compass--plus.png and /dev/null differ diff --git a/static/images/status/compass.png b/static/images/status/compass.png deleted file mode 100755 index 06afc8fc..00000000 Binary files a/static/images/status/compass.png and /dev/null differ diff --git a/static/images/status/compile-error.png b/static/images/status/compile-error.png deleted file mode 100755 index 0b32abc2..00000000 Binary files a/static/images/status/compile-error.png and /dev/null differ diff --git a/static/images/status/compile-warning.png b/static/images/status/compile-warning.png deleted file mode 100755 index f89eba0b..00000000 Binary files a/static/images/status/compile-warning.png and /dev/null differ diff --git a/static/images/status/compile.png b/static/images/status/compile.png deleted file mode 100755 index 739efb5b..00000000 Binary files a/static/images/status/compile.png and /dev/null differ diff --git a/static/images/status/computer--arrow.png b/static/images/status/computer--arrow.png deleted file mode 100755 index 1414a702..00000000 Binary files a/static/images/status/computer--arrow.png and /dev/null differ diff --git a/static/images/status/computer--exclamation.png b/static/images/status/computer--exclamation.png deleted file mode 100755 index 552e430c..00000000 Binary files a/static/images/status/computer--exclamation.png and /dev/null differ diff --git a/static/images/status/computer--minus.png b/static/images/status/computer--minus.png deleted file mode 100755 index 78c93d2e..00000000 Binary files a/static/images/status/computer--minus.png and /dev/null differ diff --git a/static/images/status/computer--pencil.png b/static/images/status/computer--pencil.png deleted file mode 100755 index 31946536..00000000 Binary files a/static/images/status/computer--pencil.png and /dev/null differ diff --git a/static/images/status/computer--plus.png b/static/images/status/computer--plus.png deleted file mode 100755 index adfc764e..00000000 Binary files a/static/images/status/computer--plus.png and /dev/null differ diff --git a/static/images/status/computer-network.png b/static/images/status/computer-network.png deleted file mode 100755 index b18a74d9..00000000 Binary files a/static/images/status/computer-network.png and /dev/null differ diff --git a/static/images/status/computer-off.png b/static/images/status/computer-off.png deleted file mode 100755 index 80b81015..00000000 Binary files a/static/images/status/computer-off.png and /dev/null differ diff --git a/static/images/status/computer.png b/static/images/status/computer.png deleted file mode 100755 index 887d6b50..00000000 Binary files a/static/images/status/computer.png and /dev/null differ diff --git a/static/images/status/construction.png b/static/images/status/construction.png deleted file mode 100755 index 8347aa89..00000000 Binary files a/static/images/status/construction.png and /dev/null differ diff --git a/static/images/status/contrast-control-up.png b/static/images/status/contrast-control-up.png deleted file mode 100755 index eb6dac2b..00000000 Binary files a/static/images/status/contrast-control-up.png and /dev/null differ diff --git a/static/images/status/contrast-control.png b/static/images/status/contrast-control.png deleted file mode 100755 index b2e2c8bc..00000000 Binary files a/static/images/status/contrast-control.png and /dev/null differ diff --git a/static/images/status/contrast-low.png b/static/images/status/contrast-low.png deleted file mode 100755 index 993566c5..00000000 Binary files a/static/images/status/contrast-low.png and /dev/null differ diff --git a/static/images/status/contrast-small-low.png b/static/images/status/contrast-small-low.png deleted file mode 100755 index c41cea09..00000000 Binary files a/static/images/status/contrast-small-low.png and /dev/null differ diff --git a/static/images/status/contrast-small.png b/static/images/status/contrast-small.png deleted file mode 100755 index afd18bdc..00000000 Binary files a/static/images/status/contrast-small.png and /dev/null differ diff --git a/static/images/status/contrast.png b/static/images/status/contrast.png deleted file mode 100755 index fccb207a..00000000 Binary files a/static/images/status/contrast.png and /dev/null differ diff --git a/static/images/status/control-000-small.png b/static/images/status/control-000-small.png deleted file mode 100755 index 40a7bf9d..00000000 Binary files a/static/images/status/control-000-small.png and /dev/null differ diff --git a/static/images/status/control-090-small.png b/static/images/status/control-090-small.png deleted file mode 100755 index 5b6ad446..00000000 Binary files a/static/images/status/control-090-small.png and /dev/null differ diff --git a/static/images/status/control-090.png b/static/images/status/control-090.png deleted file mode 100755 index 6c5ae78d..00000000 Binary files a/static/images/status/control-090.png and /dev/null differ diff --git a/static/images/status/control-180-small.png b/static/images/status/control-180-small.png deleted file mode 100755 index 9ff32e34..00000000 Binary files a/static/images/status/control-180-small.png and /dev/null differ diff --git a/static/images/status/control-180.png b/static/images/status/control-180.png deleted file mode 100755 index 8b847a0b..00000000 Binary files a/static/images/status/control-180.png and /dev/null differ diff --git a/static/images/status/control-270-small.png b/static/images/status/control-270-small.png deleted file mode 100755 index 1e482457..00000000 Binary files a/static/images/status/control-270-small.png and /dev/null differ diff --git a/static/images/status/control-270.png b/static/images/status/control-270.png deleted file mode 100755 index f3d46552..00000000 Binary files a/static/images/status/control-270.png and /dev/null differ diff --git a/static/images/status/control-cursor.png b/static/images/status/control-cursor.png deleted file mode 100755 index 6904b1e7..00000000 Binary files a/static/images/status/control-cursor.png and /dev/null differ diff --git a/static/images/status/control-double-000-small.png b/static/images/status/control-double-000-small.png deleted file mode 100755 index 6de07b8c..00000000 Binary files a/static/images/status/control-double-000-small.png and /dev/null differ diff --git a/static/images/status/control-double-090-small.png b/static/images/status/control-double-090-small.png deleted file mode 100755 index 7e07ef34..00000000 Binary files a/static/images/status/control-double-090-small.png and /dev/null differ diff --git a/static/images/status/control-double-090.png b/static/images/status/control-double-090.png deleted file mode 100755 index 8caebb2f..00000000 Binary files a/static/images/status/control-double-090.png and /dev/null differ diff --git a/static/images/status/control-double-180-small.png b/static/images/status/control-double-180-small.png deleted file mode 100755 index a93b01d5..00000000 Binary files a/static/images/status/control-double-180-small.png and /dev/null differ diff --git a/static/images/status/control-double-180.png b/static/images/status/control-double-180.png deleted file mode 100755 index a39522fa..00000000 Binary files a/static/images/status/control-double-180.png and /dev/null differ diff --git a/static/images/status/control-double-270-small.png b/static/images/status/control-double-270-small.png deleted file mode 100755 index ab4753fb..00000000 Binary files a/static/images/status/control-double-270-small.png and /dev/null differ diff --git a/static/images/status/control-double-270.png b/static/images/status/control-double-270.png deleted file mode 100755 index 30fc2e69..00000000 Binary files a/static/images/status/control-double-270.png and /dev/null differ diff --git a/static/images/status/control-double.png b/static/images/status/control-double.png deleted file mode 100755 index 7ae440af..00000000 Binary files a/static/images/status/control-double.png and /dev/null differ diff --git a/static/images/status/control-eject-small.png b/static/images/status/control-eject-small.png deleted file mode 100755 index d80ebbee..00000000 Binary files a/static/images/status/control-eject-small.png and /dev/null differ diff --git a/static/images/status/control-eject.png b/static/images/status/control-eject.png deleted file mode 100755 index 64d395c8..00000000 Binary files a/static/images/status/control-eject.png and /dev/null differ diff --git a/static/images/status/control-pause-record-small.png b/static/images/status/control-pause-record-small.png deleted file mode 100755 index d63fe234..00000000 Binary files a/static/images/status/control-pause-record-small.png and /dev/null differ diff --git a/static/images/status/control-pause-record.png b/static/images/status/control-pause-record.png deleted file mode 100755 index ff85365e..00000000 Binary files a/static/images/status/control-pause-record.png and /dev/null differ diff --git a/static/images/status/control-pause-small.png b/static/images/status/control-pause-small.png deleted file mode 100755 index a8bb8cb7..00000000 Binary files a/static/images/status/control-pause-small.png and /dev/null differ diff --git a/static/images/status/control-pause.png b/static/images/status/control-pause.png deleted file mode 100755 index af57b25d..00000000 Binary files a/static/images/status/control-pause.png and /dev/null differ diff --git a/static/images/status/control-power-small.png b/static/images/status/control-power-small.png deleted file mode 100755 index 3d09f04f..00000000 Binary files a/static/images/status/control-power-small.png and /dev/null differ diff --git a/static/images/status/control-power.png b/static/images/status/control-power.png deleted file mode 100755 index c700f604..00000000 Binary files a/static/images/status/control-power.png and /dev/null differ diff --git a/static/images/status/control-record-small.png b/static/images/status/control-record-small.png deleted file mode 100755 index 25276721..00000000 Binary files a/static/images/status/control-record-small.png and /dev/null differ diff --git a/static/images/status/control-record.png b/static/images/status/control-record.png deleted file mode 100755 index 5cd9ea93..00000000 Binary files a/static/images/status/control-record.png and /dev/null differ diff --git a/static/images/status/control-skip-000-small.png b/static/images/status/control-skip-000-small.png deleted file mode 100755 index 8c8e0add..00000000 Binary files a/static/images/status/control-skip-000-small.png and /dev/null differ diff --git a/static/images/status/control-skip-090-small.png b/static/images/status/control-skip-090-small.png deleted file mode 100755 index 388d322e..00000000 Binary files a/static/images/status/control-skip-090-small.png and /dev/null differ diff --git a/static/images/status/control-skip-090.png b/static/images/status/control-skip-090.png deleted file mode 100755 index 06c22b48..00000000 Binary files a/static/images/status/control-skip-090.png and /dev/null differ diff --git a/static/images/status/control-skip-180-small.png b/static/images/status/control-skip-180-small.png deleted file mode 100755 index 3d6dec24..00000000 Binary files a/static/images/status/control-skip-180-small.png and /dev/null differ diff --git a/static/images/status/control-skip-180.png b/static/images/status/control-skip-180.png deleted file mode 100755 index 62daa7a7..00000000 Binary files a/static/images/status/control-skip-180.png and /dev/null differ diff --git a/static/images/status/control-skip-270-small.png b/static/images/status/control-skip-270-small.png deleted file mode 100755 index daec08f6..00000000 Binary files a/static/images/status/control-skip-270-small.png and /dev/null differ diff --git a/static/images/status/control-skip-270.png b/static/images/status/control-skip-270.png deleted file mode 100755 index 19c13aca..00000000 Binary files a/static/images/status/control-skip-270.png and /dev/null differ diff --git a/static/images/status/control-skip.png b/static/images/status/control-skip.png deleted file mode 100755 index e4a4930a..00000000 Binary files a/static/images/status/control-skip.png and /dev/null differ diff --git a/static/images/status/control-stop-000-small.png b/static/images/status/control-stop-000-small.png deleted file mode 100755 index 51513898..00000000 Binary files a/static/images/status/control-stop-000-small.png and /dev/null differ diff --git a/static/images/status/control-stop-090-small.png b/static/images/status/control-stop-090-small.png deleted file mode 100755 index 3c66fae0..00000000 Binary files a/static/images/status/control-stop-090-small.png and /dev/null differ diff --git a/static/images/status/control-stop-090.png b/static/images/status/control-stop-090.png deleted file mode 100755 index 0c7f5378..00000000 Binary files a/static/images/status/control-stop-090.png and /dev/null differ diff --git a/static/images/status/control-stop-180-small.png b/static/images/status/control-stop-180-small.png deleted file mode 100755 index 53dd11b3..00000000 Binary files a/static/images/status/control-stop-180-small.png and /dev/null differ diff --git a/static/images/status/control-stop-180.png b/static/images/status/control-stop-180.png deleted file mode 100755 index 08813d6c..00000000 Binary files a/static/images/status/control-stop-180.png and /dev/null differ diff --git a/static/images/status/control-stop-270-small.png b/static/images/status/control-stop-270-small.png deleted file mode 100755 index 97ff2b6f..00000000 Binary files a/static/images/status/control-stop-270-small.png and /dev/null differ diff --git a/static/images/status/control-stop-270.png b/static/images/status/control-stop-270.png deleted file mode 100755 index 39d566ac..00000000 Binary files a/static/images/status/control-stop-270.png and /dev/null differ diff --git a/static/images/status/control-stop-square-small.png b/static/images/status/control-stop-square-small.png deleted file mode 100755 index 78cc00f8..00000000 Binary files a/static/images/status/control-stop-square-small.png and /dev/null differ diff --git a/static/images/status/control-stop-square.png b/static/images/status/control-stop-square.png deleted file mode 100755 index 7c6af7f0..00000000 Binary files a/static/images/status/control-stop-square.png and /dev/null differ diff --git a/static/images/status/control-stop.png b/static/images/status/control-stop.png deleted file mode 100755 index f36454d2..00000000 Binary files a/static/images/status/control-stop.png and /dev/null differ diff --git a/static/images/status/control.png b/static/images/status/control.png deleted file mode 100755 index 2dfaef50..00000000 Binary files a/static/images/status/control.png and /dev/null differ diff --git a/static/images/status/controller.png b/static/images/status/controller.png deleted file mode 100755 index 833f3cab..00000000 Binary files a/static/images/status/controller.png and /dev/null differ diff --git a/static/images/status/cookie--arrow.png b/static/images/status/cookie--arrow.png deleted file mode 100755 index c3cb69df..00000000 Binary files a/static/images/status/cookie--arrow.png and /dev/null differ diff --git a/static/images/status/cookie--exclamation.png b/static/images/status/cookie--exclamation.png deleted file mode 100755 index bf55c39d..00000000 Binary files a/static/images/status/cookie--exclamation.png and /dev/null differ diff --git a/static/images/status/cookie--minus.png b/static/images/status/cookie--minus.png deleted file mode 100755 index d225279a..00000000 Binary files a/static/images/status/cookie--minus.png and /dev/null differ diff --git a/static/images/status/cookie--pencil.png b/static/images/status/cookie--pencil.png deleted file mode 100755 index 3275947f..00000000 Binary files a/static/images/status/cookie--pencil.png and /dev/null differ diff --git a/static/images/status/cookie--plus.png b/static/images/status/cookie--plus.png deleted file mode 100755 index ccb29da6..00000000 Binary files a/static/images/status/cookie--plus.png and /dev/null differ diff --git a/static/images/status/cookie-bite.png b/static/images/status/cookie-bite.png deleted file mode 100755 index deee1574..00000000 Binary files a/static/images/status/cookie-bite.png and /dev/null differ diff --git a/static/images/status/cookie-chocolate.png b/static/images/status/cookie-chocolate.png deleted file mode 100755 index 119edb2b..00000000 Binary files a/static/images/status/cookie-chocolate.png and /dev/null differ diff --git a/static/images/status/cookie.png b/static/images/status/cookie.png deleted file mode 100755 index f5d8443b..00000000 Binary files a/static/images/status/cookie.png and /dev/null differ diff --git a/static/images/status/cookies.png b/static/images/status/cookies.png deleted file mode 100755 index 34d6e8d3..00000000 Binary files a/static/images/status/cookies.png and /dev/null differ diff --git a/static/images/status/counter-count-up.png b/static/images/status/counter-count-up.png deleted file mode 100755 index 6a7d1f9a..00000000 Binary files a/static/images/status/counter-count-up.png and /dev/null differ diff --git a/static/images/status/counter-count.png b/static/images/status/counter-count.png deleted file mode 100755 index 4fcbe685..00000000 Binary files a/static/images/status/counter-count.png and /dev/null differ diff --git a/static/images/status/counter-reset.png b/static/images/status/counter-reset.png deleted file mode 100755 index 2bbff1ce..00000000 Binary files a/static/images/status/counter-reset.png and /dev/null differ diff --git a/static/images/status/counter-stop.png b/static/images/status/counter-stop.png deleted file mode 100755 index c86481e1..00000000 Binary files a/static/images/status/counter-stop.png and /dev/null differ diff --git a/static/images/status/counter.png b/static/images/status/counter.png deleted file mode 100755 index 0dd74636..00000000 Binary files a/static/images/status/counter.png and /dev/null differ diff --git a/static/images/status/creative-commons.png b/static/images/status/creative-commons.png deleted file mode 100755 index 0cbfdfaa..00000000 Binary files a/static/images/status/creative-commons.png and /dev/null differ diff --git a/static/images/status/credit-card--arrow.png b/static/images/status/credit-card--arrow.png deleted file mode 100755 index 632d3001..00000000 Binary files a/static/images/status/credit-card--arrow.png and /dev/null differ diff --git a/static/images/status/credit-card--exclamation.png b/static/images/status/credit-card--exclamation.png deleted file mode 100755 index df6d90e0..00000000 Binary files a/static/images/status/credit-card--exclamation.png and /dev/null differ diff --git a/static/images/status/credit-card--minus.png b/static/images/status/credit-card--minus.png deleted file mode 100755 index c5410794..00000000 Binary files a/static/images/status/credit-card--minus.png and /dev/null differ diff --git a/static/images/status/credit-card--pencil.png b/static/images/status/credit-card--pencil.png deleted file mode 100755 index 593c1ea9..00000000 Binary files a/static/images/status/credit-card--pencil.png and /dev/null differ diff --git a/static/images/status/credit-card--plus.png b/static/images/status/credit-card--plus.png deleted file mode 100755 index b5f0832b..00000000 Binary files a/static/images/status/credit-card--plus.png and /dev/null differ diff --git a/static/images/status/credit-card-green.png b/static/images/status/credit-card-green.png deleted file mode 100755 index f1f40afc..00000000 Binary files a/static/images/status/credit-card-green.png and /dev/null differ diff --git a/static/images/status/credit-card.png b/static/images/status/credit-card.png deleted file mode 100755 index 824c99e6..00000000 Binary files a/static/images/status/credit-card.png and /dev/null differ diff --git a/static/images/status/credit-cards.png b/static/images/status/credit-cards.png deleted file mode 100755 index bacf1c85..00000000 Binary files a/static/images/status/credit-cards.png and /dev/null differ diff --git a/static/images/status/cross-button.png b/static/images/status/cross-button.png deleted file mode 100755 index 933272b4..00000000 Binary files a/static/images/status/cross-button.png and /dev/null differ diff --git a/static/images/status/cross-circle-frame.png b/static/images/status/cross-circle-frame.png deleted file mode 100755 index 0db86f68..00000000 Binary files a/static/images/status/cross-circle-frame.png and /dev/null differ diff --git a/static/images/status/cross-octagon-frame.png b/static/images/status/cross-octagon-frame.png deleted file mode 100755 index 57e00041..00000000 Binary files a/static/images/status/cross-octagon-frame.png and /dev/null differ diff --git a/static/images/status/cross-octagon.png b/static/images/status/cross-octagon.png deleted file mode 100755 index d937cb5c..00000000 Binary files a/static/images/status/cross-octagon.png and /dev/null differ diff --git a/static/images/status/cross-script.png b/static/images/status/cross-script.png deleted file mode 100755 index 70b59dc9..00000000 Binary files a/static/images/status/cross-script.png and /dev/null differ diff --git a/static/images/status/cross-shield.png b/static/images/status/cross-shield.png deleted file mode 100755 index 59adb429..00000000 Binary files a/static/images/status/cross-shield.png and /dev/null differ diff --git a/static/images/status/cross-small-circle.png b/static/images/status/cross-small-circle.png deleted file mode 100755 index 3818688d..00000000 Binary files a/static/images/status/cross-small-circle.png and /dev/null differ diff --git a/static/images/status/cross-small-white.png b/static/images/status/cross-small-white.png deleted file mode 100755 index 170e35e9..00000000 Binary files a/static/images/status/cross-small-white.png and /dev/null differ diff --git a/static/images/status/cross-small.png b/static/images/status/cross-small.png deleted file mode 100755 index 94af849e..00000000 Binary files a/static/images/status/cross-small.png and /dev/null differ diff --git a/static/images/status/cross-white.png b/static/images/status/cross-white.png deleted file mode 100755 index e443a6ee..00000000 Binary files a/static/images/status/cross-white.png and /dev/null differ diff --git a/static/images/status/cross.png b/static/images/status/cross.png deleted file mode 100755 index 6b9fa6dd..00000000 Binary files a/static/images/status/cross.png and /dev/null differ diff --git a/static/images/status/crown--arrow.png b/static/images/status/crown--arrow.png deleted file mode 100755 index 877c5e64..00000000 Binary files a/static/images/status/crown--arrow.png and /dev/null differ diff --git a/static/images/status/crown--exclamation.png b/static/images/status/crown--exclamation.png deleted file mode 100755 index 2bd9f548..00000000 Binary files a/static/images/status/crown--exclamation.png and /dev/null differ diff --git a/static/images/status/crown--minus.png b/static/images/status/crown--minus.png deleted file mode 100755 index 9c688aa6..00000000 Binary files a/static/images/status/crown--minus.png and /dev/null differ diff --git a/static/images/status/crown--pencil.png b/static/images/status/crown--pencil.png deleted file mode 100755 index 9dac5718..00000000 Binary files a/static/images/status/crown--pencil.png and /dev/null differ diff --git a/static/images/status/crown--plus.png b/static/images/status/crown--plus.png deleted file mode 100755 index b8917d69..00000000 Binary files a/static/images/status/crown--plus.png and /dev/null differ diff --git a/static/images/status/crown-bronze.png b/static/images/status/crown-bronze.png deleted file mode 100755 index c8d6b2e1..00000000 Binary files a/static/images/status/crown-bronze.png and /dev/null differ diff --git a/static/images/status/crown-silver.png b/static/images/status/crown-silver.png deleted file mode 100755 index d8ec0a40..00000000 Binary files a/static/images/status/crown-silver.png and /dev/null differ diff --git a/static/images/status/crown.png b/static/images/status/crown.png deleted file mode 100755 index e8274f18..00000000 Binary files a/static/images/status/crown.png and /dev/null differ diff --git a/static/images/status/cup--arrow.png b/static/images/status/cup--arrow.png deleted file mode 100755 index aa02b340..00000000 Binary files a/static/images/status/cup--arrow.png and /dev/null differ diff --git a/static/images/status/cup--exclamation.png b/static/images/status/cup--exclamation.png deleted file mode 100755 index d018afdb..00000000 Binary files a/static/images/status/cup--exclamation.png and /dev/null differ diff --git a/static/images/status/cup--minus.png b/static/images/status/cup--minus.png deleted file mode 100755 index bb7937c6..00000000 Binary files a/static/images/status/cup--minus.png and /dev/null differ diff --git a/static/images/status/cup--pencil.png b/static/images/status/cup--pencil.png deleted file mode 100755 index e9383ce5..00000000 Binary files a/static/images/status/cup--pencil.png and /dev/null differ diff --git a/static/images/status/cup--plus.png b/static/images/status/cup--plus.png deleted file mode 100755 index f773cb20..00000000 Binary files a/static/images/status/cup--plus.png and /dev/null differ diff --git a/static/images/status/cup-empty.png b/static/images/status/cup-empty.png deleted file mode 100755 index b8e7f0fa..00000000 Binary files a/static/images/status/cup-empty.png and /dev/null differ diff --git a/static/images/status/cup.png b/static/images/status/cup.png deleted file mode 100755 index 16a43428..00000000 Binary files a/static/images/status/cup.png and /dev/null differ diff --git a/static/images/status/currency-dollar-aud.png b/static/images/status/currency-dollar-aud.png deleted file mode 100755 index b64c2000..00000000 Binary files a/static/images/status/currency-dollar-aud.png and /dev/null differ diff --git a/static/images/status/currency-dollar-cad.png b/static/images/status/currency-dollar-cad.png deleted file mode 100755 index 799387d8..00000000 Binary files a/static/images/status/currency-dollar-cad.png and /dev/null differ diff --git a/static/images/status/currency-dollar-nzd.png b/static/images/status/currency-dollar-nzd.png deleted file mode 100755 index 6f93219b..00000000 Binary files a/static/images/status/currency-dollar-nzd.png and /dev/null differ diff --git a/static/images/status/currency-dollar-usd.png b/static/images/status/currency-dollar-usd.png deleted file mode 100755 index 6de1e678..00000000 Binary files a/static/images/status/currency-dollar-usd.png and /dev/null differ diff --git a/static/images/status/currency-euro.png b/static/images/status/currency-euro.png deleted file mode 100755 index c3378166..00000000 Binary files a/static/images/status/currency-euro.png and /dev/null differ diff --git a/static/images/status/currency-pound.png b/static/images/status/currency-pound.png deleted file mode 100755 index 0796a956..00000000 Binary files a/static/images/status/currency-pound.png and /dev/null differ diff --git a/static/images/status/currency-yen.png b/static/images/status/currency-yen.png deleted file mode 100755 index 09906de9..00000000 Binary files a/static/images/status/currency-yen.png and /dev/null differ diff --git a/static/images/status/currency.png b/static/images/status/currency.png deleted file mode 100755 index 82c316a8..00000000 Binary files a/static/images/status/currency.png and /dev/null differ diff --git a/static/images/status/cursor-question.png b/static/images/status/cursor-question.png deleted file mode 100755 index 2c021693..00000000 Binary files a/static/images/status/cursor-question.png and /dev/null differ diff --git a/static/images/status/cursor-small.png b/static/images/status/cursor-small.png deleted file mode 100755 index 7643a546..00000000 Binary files a/static/images/status/cursor-small.png and /dev/null differ diff --git a/static/images/status/cursor.png b/static/images/status/cursor.png deleted file mode 100755 index ee4cb383..00000000 Binary files a/static/images/status/cursor.png and /dev/null differ diff --git a/static/images/status/cutlery-fork.png b/static/images/status/cutlery-fork.png deleted file mode 100755 index d8ac001b..00000000 Binary files a/static/images/status/cutlery-fork.png and /dev/null differ diff --git a/static/images/status/cutlery-knife.png b/static/images/status/cutlery-knife.png deleted file mode 100755 index 26789a3d..00000000 Binary files a/static/images/status/cutlery-knife.png and /dev/null differ diff --git a/static/images/status/cutlery-spoon.png b/static/images/status/cutlery-spoon.png deleted file mode 100755 index 0c382526..00000000 Binary files a/static/images/status/cutlery-spoon.png and /dev/null differ diff --git a/static/images/status/cutlery.png b/static/images/status/cutlery.png deleted file mode 100755 index 5fae8a69..00000000 Binary files a/static/images/status/cutlery.png and /dev/null differ diff --git a/static/images/status/dashboard--arrow.png b/static/images/status/dashboard--arrow.png deleted file mode 100755 index 68fca096..00000000 Binary files a/static/images/status/dashboard--arrow.png and /dev/null differ diff --git a/static/images/status/dashboard--exclamation.png b/static/images/status/dashboard--exclamation.png deleted file mode 100755 index dd335779..00000000 Binary files a/static/images/status/dashboard--exclamation.png and /dev/null differ diff --git a/static/images/status/dashboard--minus.png b/static/images/status/dashboard--minus.png deleted file mode 100755 index 57729bfa..00000000 Binary files a/static/images/status/dashboard--minus.png and /dev/null differ diff --git a/static/images/status/dashboard--pencil.png b/static/images/status/dashboard--pencil.png deleted file mode 100755 index f0a82a44..00000000 Binary files a/static/images/status/dashboard--pencil.png and /dev/null differ diff --git a/static/images/status/dashboard--plus.png b/static/images/status/dashboard--plus.png deleted file mode 100755 index 307d2466..00000000 Binary files a/static/images/status/dashboard--plus.png and /dev/null differ diff --git a/static/images/status/dashboard.png b/static/images/status/dashboard.png deleted file mode 100755 index ba03262f..00000000 Binary files a/static/images/status/dashboard.png and /dev/null differ diff --git a/static/images/status/database--arrow.png b/static/images/status/database--arrow.png deleted file mode 100755 index 1f92ee85..00000000 Binary files a/static/images/status/database--arrow.png and /dev/null differ diff --git a/static/images/status/database--exclamation.png b/static/images/status/database--exclamation.png deleted file mode 100755 index 751421c5..00000000 Binary files a/static/images/status/database--exclamation.png and /dev/null differ diff --git a/static/images/status/database--minus.png b/static/images/status/database--minus.png deleted file mode 100755 index 3527ca4a..00000000 Binary files a/static/images/status/database--minus.png and /dev/null differ diff --git a/static/images/status/database--pencil.png b/static/images/status/database--pencil.png deleted file mode 100755 index 146b1a82..00000000 Binary files a/static/images/status/database--pencil.png and /dev/null differ diff --git a/static/images/status/database--plus.png b/static/images/status/database--plus.png deleted file mode 100755 index 2558a7d6..00000000 Binary files a/static/images/status/database--plus.png and /dev/null differ diff --git a/static/images/status/database-delete.png b/static/images/status/database-delete.png deleted file mode 100755 index 4082061b..00000000 Binary files a/static/images/status/database-delete.png and /dev/null differ diff --git a/static/images/status/database-export.png b/static/images/status/database-export.png deleted file mode 100755 index 76add6a0..00000000 Binary files a/static/images/status/database-export.png and /dev/null differ diff --git a/static/images/status/database-import.png b/static/images/status/database-import.png deleted file mode 100755 index b2996cc7..00000000 Binary files a/static/images/status/database-import.png and /dev/null differ diff --git a/static/images/status/database-insert.png b/static/images/status/database-insert.png deleted file mode 100755 index 7af900cd..00000000 Binary files a/static/images/status/database-insert.png and /dev/null differ diff --git a/static/images/status/database-network.png b/static/images/status/database-network.png deleted file mode 100755 index 03f6f909..00000000 Binary files a/static/images/status/database-network.png and /dev/null differ diff --git a/static/images/status/database-share.png b/static/images/status/database-share.png deleted file mode 100755 index b7188545..00000000 Binary files a/static/images/status/database-share.png and /dev/null differ diff --git a/static/images/status/database-small.png b/static/images/status/database-small.png deleted file mode 100755 index 5f8544e5..00000000 Binary files a/static/images/status/database-small.png and /dev/null differ diff --git a/static/images/status/database.png b/static/images/status/database.png deleted file mode 100755 index d588f422..00000000 Binary files a/static/images/status/database.png and /dev/null differ diff --git a/static/images/status/databases-relation.png b/static/images/status/databases-relation.png deleted file mode 100755 index 6764ea30..00000000 Binary files a/static/images/status/databases-relation.png and /dev/null differ diff --git a/static/images/status/databases.png b/static/images/status/databases.png deleted file mode 100755 index 11dcab4b..00000000 Binary files a/static/images/status/databases.png and /dev/null differ diff --git a/static/images/status/desktop-empty.png b/static/images/status/desktop-empty.png deleted file mode 100755 index 831ddc60..00000000 Binary files a/static/images/status/desktop-empty.png and /dev/null differ diff --git a/static/images/status/desktop-image.png b/static/images/status/desktop-image.png deleted file mode 100755 index ac18d812..00000000 Binary files a/static/images/status/desktop-image.png and /dev/null differ diff --git a/static/images/status/desktop-network.png b/static/images/status/desktop-network.png deleted file mode 100755 index ae6d8b04..00000000 Binary files a/static/images/status/desktop-network.png and /dev/null differ diff --git a/static/images/status/desktop.png b/static/images/status/desktop.png deleted file mode 100755 index 6dd32168..00000000 Binary files a/static/images/status/desktop.png and /dev/null differ diff --git a/static/images/status/diamond.png b/static/images/status/diamond.png deleted file mode 100755 index 477d70b5..00000000 Binary files a/static/images/status/diamond.png and /dev/null differ diff --git a/static/images/status/direction--arrow.png b/static/images/status/direction--arrow.png deleted file mode 100755 index 8fa2242e..00000000 Binary files a/static/images/status/direction--arrow.png and /dev/null differ diff --git a/static/images/status/direction--exclamation.png b/static/images/status/direction--exclamation.png deleted file mode 100755 index 1470b170..00000000 Binary files a/static/images/status/direction--exclamation.png and /dev/null differ diff --git a/static/images/status/direction--minus.png b/static/images/status/direction--minus.png deleted file mode 100755 index a2e4d990..00000000 Binary files a/static/images/status/direction--minus.png and /dev/null differ diff --git a/static/images/status/direction--pencil.png b/static/images/status/direction--pencil.png deleted file mode 100755 index 827c6ace..00000000 Binary files a/static/images/status/direction--pencil.png and /dev/null differ diff --git a/static/images/status/direction--plus.png b/static/images/status/direction--plus.png deleted file mode 100755 index a774d5d5..00000000 Binary files a/static/images/status/direction--plus.png and /dev/null differ diff --git a/static/images/status/direction.png b/static/images/status/direction.png deleted file mode 100755 index 1646d101..00000000 Binary files a/static/images/status/direction.png and /dev/null differ diff --git a/static/images/status/disc--arrow.png b/static/images/status/disc--arrow.png deleted file mode 100755 index 9b250897..00000000 Binary files a/static/images/status/disc--arrow.png and /dev/null differ diff --git a/static/images/status/disc--exclamation.png b/static/images/status/disc--exclamation.png deleted file mode 100755 index abf11b89..00000000 Binary files a/static/images/status/disc--exclamation.png and /dev/null differ diff --git a/static/images/status/disc--minus.png b/static/images/status/disc--minus.png deleted file mode 100755 index bd8e4773..00000000 Binary files a/static/images/status/disc--minus.png and /dev/null differ diff --git a/static/images/status/disc--pencil.png b/static/images/status/disc--pencil.png deleted file mode 100755 index 7dc0d546..00000000 Binary files a/static/images/status/disc--pencil.png and /dev/null differ diff --git a/static/images/status/disc--plus.png b/static/images/status/disc--plus.png deleted file mode 100755 index 8bb7e253..00000000 Binary files a/static/images/status/disc--plus.png and /dev/null differ diff --git a/static/images/status/disc-blue.png b/static/images/status/disc-blue.png deleted file mode 100755 index 08f82aff..00000000 Binary files a/static/images/status/disc-blue.png and /dev/null differ diff --git a/static/images/status/disc-case-label.png b/static/images/status/disc-case-label.png deleted file mode 100755 index 720a6756..00000000 Binary files a/static/images/status/disc-case-label.png and /dev/null differ diff --git a/static/images/status/disc-case.png b/static/images/status/disc-case.png deleted file mode 100755 index 31e05b1d..00000000 Binary files a/static/images/status/disc-case.png and /dev/null differ diff --git a/static/images/status/disc-label.png b/static/images/status/disc-label.png deleted file mode 100755 index ef3a7dc3..00000000 Binary files a/static/images/status/disc-label.png and /dev/null differ diff --git a/static/images/status/disc-small.png b/static/images/status/disc-small.png deleted file mode 100755 index 7fc679ed..00000000 Binary files a/static/images/status/disc-small.png and /dev/null differ diff --git a/static/images/status/disc.png b/static/images/status/disc.png deleted file mode 100755 index 989cb684..00000000 Binary files a/static/images/status/disc.png and /dev/null differ diff --git a/static/images/status/discs.png b/static/images/status/discs.png deleted file mode 100755 index 3d5413a3..00000000 Binary files a/static/images/status/discs.png and /dev/null differ diff --git a/static/images/status/disk--arrow.png b/static/images/status/disk--arrow.png deleted file mode 100755 index bd581031..00000000 Binary files a/static/images/status/disk--arrow.png and /dev/null differ diff --git a/static/images/status/disk--exclamation.png b/static/images/status/disk--exclamation.png deleted file mode 100755 index 3b960a0f..00000000 Binary files a/static/images/status/disk--exclamation.png and /dev/null differ diff --git a/static/images/status/disk--minus.png b/static/images/status/disk--minus.png deleted file mode 100755 index ab06bc28..00000000 Binary files a/static/images/status/disk--minus.png and /dev/null differ diff --git a/static/images/status/disk--pencil.png b/static/images/status/disk--pencil.png deleted file mode 100755 index 47bf9530..00000000 Binary files a/static/images/status/disk--pencil.png and /dev/null differ diff --git a/static/images/status/disk--plus.png b/static/images/status/disk--plus.png deleted file mode 100755 index 6fff4b72..00000000 Binary files a/static/images/status/disk--plus.png and /dev/null differ diff --git a/static/images/status/disk-black.png b/static/images/status/disk-black.png deleted file mode 100755 index 61784784..00000000 Binary files a/static/images/status/disk-black.png and /dev/null differ diff --git a/static/images/status/disk-return-black.png b/static/images/status/disk-return-black.png deleted file mode 100755 index 966a19db..00000000 Binary files a/static/images/status/disk-return-black.png and /dev/null differ diff --git a/static/images/status/disk-return.png b/static/images/status/disk-return.png deleted file mode 100755 index a75176b7..00000000 Binary files a/static/images/status/disk-return.png and /dev/null differ diff --git a/static/images/status/disk-small-black.png b/static/images/status/disk-small-black.png deleted file mode 100755 index 668161a9..00000000 Binary files a/static/images/status/disk-small-black.png and /dev/null differ diff --git a/static/images/status/disk-small.png b/static/images/status/disk-small.png deleted file mode 100755 index 00f64e70..00000000 Binary files a/static/images/status/disk-small.png and /dev/null differ diff --git a/static/images/status/disk.png b/static/images/status/disk.png deleted file mode 100755 index c6194618..00000000 Binary files a/static/images/status/disk.png and /dev/null differ diff --git a/static/images/status/disks-black.png b/static/images/status/disks-black.png deleted file mode 100755 index 9bfe5e15..00000000 Binary files a/static/images/status/disks-black.png and /dev/null differ diff --git a/static/images/status/disks.png b/static/images/status/disks.png deleted file mode 100755 index a88a4630..00000000 Binary files a/static/images/status/disks.png and /dev/null differ diff --git a/static/images/status/do-not-disturb-sign-cross.png b/static/images/status/do-not-disturb-sign-cross.png deleted file mode 100755 index ec71aecd..00000000 Binary files a/static/images/status/do-not-disturb-sign-cross.png and /dev/null differ diff --git a/static/images/status/do-not-disturb-sign.png b/static/images/status/do-not-disturb-sign.png deleted file mode 100755 index 1fff57cc..00000000 Binary files a/static/images/status/do-not-disturb-sign.png and /dev/null differ diff --git a/static/images/status/document--arrow.png b/static/images/status/document--arrow.png deleted file mode 100755 index f3e265d0..00000000 Binary files a/static/images/status/document--arrow.png and /dev/null differ diff --git a/static/images/status/document--exclamation.png b/static/images/status/document--exclamation.png deleted file mode 100755 index 42e378af..00000000 Binary files a/static/images/status/document--exclamation.png and /dev/null differ diff --git a/static/images/status/document--minus.png b/static/images/status/document--minus.png deleted file mode 100755 index b23ca2ac..00000000 Binary files a/static/images/status/document--minus.png and /dev/null differ diff --git a/static/images/status/document--pencil.png b/static/images/status/document--pencil.png deleted file mode 100755 index 775dfcd7..00000000 Binary files a/static/images/status/document--pencil.png and /dev/null differ diff --git a/static/images/status/document--plus.png b/static/images/status/document--plus.png deleted file mode 100755 index df35ed6e..00000000 Binary files a/static/images/status/document--plus.png and /dev/null differ diff --git a/static/images/status/document-access.png b/static/images/status/document-access.png deleted file mode 100755 index 4f088737..00000000 Binary files a/static/images/status/document-access.png and /dev/null differ diff --git a/static/images/status/document-attribute-b.png b/static/images/status/document-attribute-b.png deleted file mode 100755 index cbcdeff0..00000000 Binary files a/static/images/status/document-attribute-b.png and /dev/null differ diff --git a/static/images/status/document-attribute-c.png b/static/images/status/document-attribute-c.png deleted file mode 100755 index 62c3fd89..00000000 Binary files a/static/images/status/document-attribute-c.png and /dev/null differ diff --git a/static/images/status/document-attribute-d.png b/static/images/status/document-attribute-d.png deleted file mode 100755 index 0328dcce..00000000 Binary files a/static/images/status/document-attribute-d.png and /dev/null differ diff --git a/static/images/status/document-attribute-e.png b/static/images/status/document-attribute-e.png deleted file mode 100755 index c6dcf60f..00000000 Binary files a/static/images/status/document-attribute-e.png and /dev/null differ diff --git a/static/images/status/document-attribute-f.png b/static/images/status/document-attribute-f.png deleted file mode 100755 index 79185048..00000000 Binary files a/static/images/status/document-attribute-f.png and /dev/null differ diff --git a/static/images/status/document-attribute-g.png b/static/images/status/document-attribute-g.png deleted file mode 100755 index 1f943c5a..00000000 Binary files a/static/images/status/document-attribute-g.png and /dev/null differ diff --git a/static/images/status/document-attribute-h.png b/static/images/status/document-attribute-h.png deleted file mode 100755 index 34d2f545..00000000 Binary files a/static/images/status/document-attribute-h.png and /dev/null differ diff --git a/static/images/status/document-attribute-i.png b/static/images/status/document-attribute-i.png deleted file mode 100755 index 53d0f311..00000000 Binary files a/static/images/status/document-attribute-i.png and /dev/null differ diff --git a/static/images/status/document-attribute-j.png b/static/images/status/document-attribute-j.png deleted file mode 100755 index 4428c685..00000000 Binary files a/static/images/status/document-attribute-j.png and /dev/null differ diff --git a/static/images/status/document-attribute-k.png b/static/images/status/document-attribute-k.png deleted file mode 100755 index 78a0c8b8..00000000 Binary files a/static/images/status/document-attribute-k.png and /dev/null differ diff --git a/static/images/status/document-attribute-l.png b/static/images/status/document-attribute-l.png deleted file mode 100755 index b3f57980..00000000 Binary files a/static/images/status/document-attribute-l.png and /dev/null differ diff --git a/static/images/status/document-attribute-m.png b/static/images/status/document-attribute-m.png deleted file mode 100755 index edff6f83..00000000 Binary files a/static/images/status/document-attribute-m.png and /dev/null differ diff --git a/static/images/status/document-attribute-n.png b/static/images/status/document-attribute-n.png deleted file mode 100755 index deae47b2..00000000 Binary files a/static/images/status/document-attribute-n.png and /dev/null differ diff --git a/static/images/status/document-attribute-o.png b/static/images/status/document-attribute-o.png deleted file mode 100755 index 74d8fd06..00000000 Binary files a/static/images/status/document-attribute-o.png and /dev/null differ diff --git a/static/images/status/document-attribute-p.png b/static/images/status/document-attribute-p.png deleted file mode 100755 index 19675d0a..00000000 Binary files a/static/images/status/document-attribute-p.png and /dev/null differ diff --git a/static/images/status/document-attribute-q.png b/static/images/status/document-attribute-q.png deleted file mode 100755 index 309ded1b..00000000 Binary files a/static/images/status/document-attribute-q.png and /dev/null differ diff --git a/static/images/status/document-attribute-r.png b/static/images/status/document-attribute-r.png deleted file mode 100755 index c5d78175..00000000 Binary files a/static/images/status/document-attribute-r.png and /dev/null differ diff --git a/static/images/status/document-attribute-s.png b/static/images/status/document-attribute-s.png deleted file mode 100755 index 20dfae0a..00000000 Binary files a/static/images/status/document-attribute-s.png and /dev/null differ diff --git a/static/images/status/document-attribute-t.png b/static/images/status/document-attribute-t.png deleted file mode 100755 index f7798d6d..00000000 Binary files a/static/images/status/document-attribute-t.png and /dev/null differ diff --git a/static/images/status/document-attribute-u.png b/static/images/status/document-attribute-u.png deleted file mode 100755 index 68c7dba9..00000000 Binary files a/static/images/status/document-attribute-u.png and /dev/null differ diff --git a/static/images/status/document-attribute-v.png b/static/images/status/document-attribute-v.png deleted file mode 100755 index 3a4a447f..00000000 Binary files a/static/images/status/document-attribute-v.png and /dev/null differ diff --git a/static/images/status/document-attribute-w.png b/static/images/status/document-attribute-w.png deleted file mode 100755 index 14377e20..00000000 Binary files a/static/images/status/document-attribute-w.png and /dev/null differ diff --git a/static/images/status/document-attribute-x.png b/static/images/status/document-attribute-x.png deleted file mode 100755 index 00207bc2..00000000 Binary files a/static/images/status/document-attribute-x.png and /dev/null differ diff --git a/static/images/status/document-attribute-y.png b/static/images/status/document-attribute-y.png deleted file mode 100755 index 70e2e79b..00000000 Binary files a/static/images/status/document-attribute-y.png and /dev/null differ diff --git a/static/images/status/document-attribute-z.png b/static/images/status/document-attribute-z.png deleted file mode 100755 index 83f6cffc..00000000 Binary files a/static/images/status/document-attribute-z.png and /dev/null differ diff --git a/static/images/status/document-attribute.png b/static/images/status/document-attribute.png deleted file mode 100755 index 8dcfb269..00000000 Binary files a/static/images/status/document-attribute.png and /dev/null differ diff --git a/static/images/status/document-binary.png b/static/images/status/document-binary.png deleted file mode 100755 index 297bdfa7..00000000 Binary files a/static/images/status/document-binary.png and /dev/null differ diff --git a/static/images/status/document-block.png b/static/images/status/document-block.png deleted file mode 100755 index 1e3001c5..00000000 Binary files a/static/images/status/document-block.png and /dev/null differ diff --git a/static/images/status/document-bookmark.png b/static/images/status/document-bookmark.png deleted file mode 100755 index 41d50f3c..00000000 Binary files a/static/images/status/document-bookmark.png and /dev/null differ diff --git a/static/images/status/document-break.png b/static/images/status/document-break.png deleted file mode 100755 index 8e8f744d..00000000 Binary files a/static/images/status/document-break.png and /dev/null differ diff --git a/static/images/status/document-clock.png b/static/images/status/document-clock.png deleted file mode 100755 index 1fd91dc5..00000000 Binary files a/static/images/status/document-clock.png and /dev/null differ diff --git a/static/images/status/document-code.png b/static/images/status/document-code.png deleted file mode 100755 index b5769e61..00000000 Binary files a/static/images/status/document-code.png and /dev/null differ diff --git a/static/images/status/document-convert.png b/static/images/status/document-convert.png deleted file mode 100755 index 1ecdafb9..00000000 Binary files a/static/images/status/document-convert.png and /dev/null differ diff --git a/static/images/status/document-copy.png b/static/images/status/document-copy.png deleted file mode 100755 index 3836257f..00000000 Binary files a/static/images/status/document-copy.png and /dev/null differ diff --git a/static/images/status/document-excel-csv.png b/static/images/status/document-excel-csv.png deleted file mode 100755 index 99eb086e..00000000 Binary files a/static/images/status/document-excel-csv.png and /dev/null differ diff --git a/static/images/status/document-excel-table.png b/static/images/status/document-excel-table.png deleted file mode 100755 index 94d97fbc..00000000 Binary files a/static/images/status/document-excel-table.png and /dev/null differ diff --git a/static/images/status/document-excel.png b/static/images/status/document-excel.png deleted file mode 100755 index 4403681c..00000000 Binary files a/static/images/status/document-excel.png and /dev/null differ diff --git a/static/images/status/document-export.png b/static/images/status/document-export.png deleted file mode 100755 index d59a9bda..00000000 Binary files a/static/images/status/document-export.png and /dev/null differ diff --git a/static/images/status/document-film.png b/static/images/status/document-film.png deleted file mode 100755 index b8056c9b..00000000 Binary files a/static/images/status/document-film.png and /dev/null differ diff --git a/static/images/status/document-flash-movie.png b/static/images/status/document-flash-movie.png deleted file mode 100755 index 3070f05c..00000000 Binary files a/static/images/status/document-flash-movie.png and /dev/null differ diff --git a/static/images/status/document-flash.png b/static/images/status/document-flash.png deleted file mode 100755 index 616fc2ec..00000000 Binary files a/static/images/status/document-flash.png and /dev/null differ diff --git a/static/images/status/document-globe.png b/static/images/status/document-globe.png deleted file mode 100755 index f355d31d..00000000 Binary files a/static/images/status/document-globe.png and /dev/null differ diff --git a/static/images/status/document-hf-delete-footer.png b/static/images/status/document-hf-delete-footer.png deleted file mode 100755 index e49185e1..00000000 Binary files a/static/images/status/document-hf-delete-footer.png and /dev/null differ diff --git a/static/images/status/document-hf-delete.png b/static/images/status/document-hf-delete.png deleted file mode 100755 index b9b8620b..00000000 Binary files a/static/images/status/document-hf-delete.png and /dev/null differ diff --git a/static/images/status/document-hf-insert-footer.png b/static/images/status/document-hf-insert-footer.png deleted file mode 100755 index 2fbbd1d6..00000000 Binary files a/static/images/status/document-hf-insert-footer.png and /dev/null differ diff --git a/static/images/status/document-hf-insert.png b/static/images/status/document-hf-insert.png deleted file mode 100755 index c1cf0135..00000000 Binary files a/static/images/status/document-hf-insert.png and /dev/null differ diff --git a/static/images/status/document-hf-select-footer.png b/static/images/status/document-hf-select-footer.png deleted file mode 100755 index 1b775788..00000000 Binary files a/static/images/status/document-hf-select-footer.png and /dev/null differ diff --git a/static/images/status/document-hf-select.png b/static/images/status/document-hf-select.png deleted file mode 100755 index 817f0399..00000000 Binary files a/static/images/status/document-hf-select.png and /dev/null differ diff --git a/static/images/status/document-hf.png b/static/images/status/document-hf.png deleted file mode 100755 index 6b3567d8..00000000 Binary files a/static/images/status/document-hf.png and /dev/null differ diff --git a/static/images/status/document-horizontal-text.png b/static/images/status/document-horizontal-text.png deleted file mode 100755 index f1a100aa..00000000 Binary files a/static/images/status/document-horizontal-text.png and /dev/null differ diff --git a/static/images/status/document-horizontal.png b/static/images/status/document-horizontal.png deleted file mode 100755 index 52e5452f..00000000 Binary files a/static/images/status/document-horizontal.png and /dev/null differ diff --git a/static/images/status/document-illustrator.png b/static/images/status/document-illustrator.png deleted file mode 100755 index 9500998e..00000000 Binary files a/static/images/status/document-illustrator.png and /dev/null differ diff --git a/static/images/status/document-image.png b/static/images/status/document-image.png deleted file mode 100755 index 729e1873..00000000 Binary files a/static/images/status/document-image.png and /dev/null differ diff --git a/static/images/status/document-import.png b/static/images/status/document-import.png deleted file mode 100755 index 5fae085f..00000000 Binary files a/static/images/status/document-import.png and /dev/null differ diff --git a/static/images/status/document-insert.png b/static/images/status/document-insert.png deleted file mode 100755 index 759b22ae..00000000 Binary files a/static/images/status/document-insert.png and /dev/null differ diff --git a/static/images/status/document-invoice.png b/static/images/status/document-invoice.png deleted file mode 100755 index f123c95b..00000000 Binary files a/static/images/status/document-invoice.png and /dev/null differ diff --git a/static/images/status/document-list.png b/static/images/status/document-list.png deleted file mode 100755 index 2b4dde89..00000000 Binary files a/static/images/status/document-list.png and /dev/null differ diff --git a/static/images/status/document-music-playlist.png b/static/images/status/document-music-playlist.png deleted file mode 100755 index 4ca8b6c6..00000000 Binary files a/static/images/status/document-music-playlist.png and /dev/null differ diff --git a/static/images/status/document-music.png b/static/images/status/document-music.png deleted file mode 100755 index a9c09757..00000000 Binary files a/static/images/status/document-music.png and /dev/null differ diff --git a/static/images/status/document-number.png b/static/images/status/document-number.png deleted file mode 100755 index b3749eda..00000000 Binary files a/static/images/status/document-number.png and /dev/null differ diff --git a/static/images/status/document-office-text.png b/static/images/status/document-office-text.png deleted file mode 100755 index 11d92474..00000000 Binary files a/static/images/status/document-office-text.png and /dev/null differ diff --git a/static/images/status/document-office.png b/static/images/status/document-office.png deleted file mode 100755 index 44311d68..00000000 Binary files a/static/images/status/document-office.png and /dev/null differ diff --git a/static/images/status/document-outlook.png b/static/images/status/document-outlook.png deleted file mode 100755 index 31639c0a..00000000 Binary files a/static/images/status/document-outlook.png and /dev/null differ diff --git a/static/images/status/document-page-last.png b/static/images/status/document-page-last.png deleted file mode 100755 index f216736a..00000000 Binary files a/static/images/status/document-page-last.png and /dev/null differ diff --git a/static/images/status/document-page-next.png b/static/images/status/document-page-next.png deleted file mode 100755 index 15867310..00000000 Binary files a/static/images/status/document-page-next.png and /dev/null differ diff --git a/static/images/status/document-page-previous.png b/static/images/status/document-page-previous.png deleted file mode 100755 index d4871ba7..00000000 Binary files a/static/images/status/document-page-previous.png and /dev/null differ diff --git a/static/images/status/document-page.png b/static/images/status/document-page.png deleted file mode 100755 index 647b5c23..00000000 Binary files a/static/images/status/document-page.png and /dev/null differ diff --git a/static/images/status/document-pdf-text.png b/static/images/status/document-pdf-text.png deleted file mode 100755 index d4aa4100..00000000 Binary files a/static/images/status/document-pdf-text.png and /dev/null differ diff --git a/static/images/status/document-pdf.png b/static/images/status/document-pdf.png deleted file mode 100755 index c68ab66c..00000000 Binary files a/static/images/status/document-pdf.png and /dev/null differ diff --git a/static/images/status/document-photoshop-image.png b/static/images/status/document-photoshop-image.png deleted file mode 100755 index 264349bb..00000000 Binary files a/static/images/status/document-photoshop-image.png and /dev/null differ diff --git a/static/images/status/document-photoshop.png b/static/images/status/document-photoshop.png deleted file mode 100755 index 7b8b9b0f..00000000 Binary files a/static/images/status/document-photoshop.png and /dev/null differ diff --git a/static/images/status/document-php.png b/static/images/status/document-php.png deleted file mode 100755 index 6e70d1d1..00000000 Binary files a/static/images/status/document-php.png and /dev/null differ diff --git a/static/images/status/document-powerpoint.png b/static/images/status/document-powerpoint.png deleted file mode 100755 index 134a0071..00000000 Binary files a/static/images/status/document-powerpoint.png and /dev/null differ diff --git a/static/images/status/document-rename.png b/static/images/status/document-rename.png deleted file mode 100755 index 9fe1065b..00000000 Binary files a/static/images/status/document-rename.png and /dev/null differ diff --git a/static/images/status/document-resize-actual.png b/static/images/status/document-resize-actual.png deleted file mode 100755 index d3137577..00000000 Binary files a/static/images/status/document-resize-actual.png and /dev/null differ diff --git a/static/images/status/document-resize.png b/static/images/status/document-resize.png deleted file mode 100755 index 5a27fbce..00000000 Binary files a/static/images/status/document-resize.png and /dev/null differ diff --git a/static/images/status/document-search-result.png b/static/images/status/document-search-result.png deleted file mode 100755 index 7d579542..00000000 Binary files a/static/images/status/document-search-result.png and /dev/null differ diff --git a/static/images/status/document-share.png b/static/images/status/document-share.png deleted file mode 100755 index e3071ef6..00000000 Binary files a/static/images/status/document-share.png and /dev/null differ diff --git a/static/images/status/document-shred.png b/static/images/status/document-shred.png deleted file mode 100755 index 327872ca..00000000 Binary files a/static/images/status/document-shred.png and /dev/null differ diff --git a/static/images/status/document-small-list.png b/static/images/status/document-small-list.png deleted file mode 100755 index d78eb985..00000000 Binary files a/static/images/status/document-small-list.png and /dev/null differ diff --git a/static/images/status/document-small.png b/static/images/status/document-small.png deleted file mode 100755 index f5fa98ff..00000000 Binary files a/static/images/status/document-small.png and /dev/null differ diff --git a/static/images/status/document-snippet.png b/static/images/status/document-snippet.png deleted file mode 100755 index 33569bb9..00000000 Binary files a/static/images/status/document-snippet.png and /dev/null differ diff --git a/static/images/status/document-stamp.png b/static/images/status/document-stamp.png deleted file mode 100755 index e16e12ca..00000000 Binary files a/static/images/status/document-stamp.png and /dev/null differ diff --git a/static/images/status/document-stand.png b/static/images/status/document-stand.png deleted file mode 100755 index a8b059f4..00000000 Binary files a/static/images/status/document-stand.png and /dev/null differ diff --git a/static/images/status/document-sub.png b/static/images/status/document-sub.png deleted file mode 100755 index eee34bc2..00000000 Binary files a/static/images/status/document-sub.png and /dev/null differ diff --git a/static/images/status/document-table.png b/static/images/status/document-table.png deleted file mode 100755 index 55bff768..00000000 Binary files a/static/images/status/document-table.png and /dev/null differ diff --git a/static/images/status/document-tag.png b/static/images/status/document-tag.png deleted file mode 100755 index a2d4e6dc..00000000 Binary files a/static/images/status/document-tag.png and /dev/null differ diff --git a/static/images/status/document-task.png b/static/images/status/document-task.png deleted file mode 100755 index e8015424..00000000 Binary files a/static/images/status/document-task.png and /dev/null differ diff --git a/static/images/status/document-template.png b/static/images/status/document-template.png deleted file mode 100755 index 440284f7..00000000 Binary files a/static/images/status/document-template.png and /dev/null differ diff --git a/static/images/status/document-text-image.png b/static/images/status/document-text-image.png deleted file mode 100755 index 56c4f0bf..00000000 Binary files a/static/images/status/document-text-image.png and /dev/null differ diff --git a/static/images/status/document-text.png b/static/images/status/document-text.png deleted file mode 100755 index ed841a02..00000000 Binary files a/static/images/status/document-text.png and /dev/null differ diff --git a/static/images/status/document-view-book.png b/static/images/status/document-view-book.png deleted file mode 100755 index 8d433e92..00000000 Binary files a/static/images/status/document-view-book.png and /dev/null differ diff --git a/static/images/status/document-view-thumbnail.png b/static/images/status/document-view-thumbnail.png deleted file mode 100755 index 029a75dd..00000000 Binary files a/static/images/status/document-view-thumbnail.png and /dev/null differ diff --git a/static/images/status/document-view.png b/static/images/status/document-view.png deleted file mode 100755 index 748528db..00000000 Binary files a/static/images/status/document-view.png and /dev/null differ diff --git a/static/images/status/document-visual-studio.png b/static/images/status/document-visual-studio.png deleted file mode 100755 index e423c0d2..00000000 Binary files a/static/images/status/document-visual-studio.png and /dev/null differ diff --git a/static/images/status/document-word-text.png b/static/images/status/document-word-text.png deleted file mode 100755 index bb95ef5a..00000000 Binary files a/static/images/status/document-word-text.png and /dev/null differ diff --git a/static/images/status/document-word.png b/static/images/status/document-word.png deleted file mode 100755 index 1beb2e53..00000000 Binary files a/static/images/status/document-word.png and /dev/null differ diff --git a/static/images/status/document-zipper.png b/static/images/status/document-zipper.png deleted file mode 100755 index 6d6333af..00000000 Binary files a/static/images/status/document-zipper.png and /dev/null differ diff --git a/static/images/status/document.png b/static/images/status/document.png deleted file mode 100755 index 75f92b0c..00000000 Binary files a/static/images/status/document.png and /dev/null differ diff --git a/static/images/status/documents-stack.png b/static/images/status/documents-stack.png deleted file mode 100755 index a397f60a..00000000 Binary files a/static/images/status/documents-stack.png and /dev/null differ diff --git a/static/images/status/documents-text.png b/static/images/status/documents-text.png deleted file mode 100755 index 7537994d..00000000 Binary files a/static/images/status/documents-text.png and /dev/null differ diff --git a/static/images/status/documents.png b/static/images/status/documents.png deleted file mode 100755 index ccfa6bb8..00000000 Binary files a/static/images/status/documents.png and /dev/null differ diff --git a/static/images/status/door--arrow.png b/static/images/status/door--arrow.png deleted file mode 100755 index de2db772..00000000 Binary files a/static/images/status/door--arrow.png and /dev/null differ diff --git a/static/images/status/door--exclamation.png b/static/images/status/door--exclamation.png deleted file mode 100755 index c0c34b18..00000000 Binary files a/static/images/status/door--exclamation.png and /dev/null differ diff --git a/static/images/status/door--minus.png b/static/images/status/door--minus.png deleted file mode 100755 index 52a22c99..00000000 Binary files a/static/images/status/door--minus.png and /dev/null differ diff --git a/static/images/status/door--pencil.png b/static/images/status/door--pencil.png deleted file mode 100755 index 597ca5d1..00000000 Binary files a/static/images/status/door--pencil.png and /dev/null differ diff --git a/static/images/status/door--plus.png b/static/images/status/door--plus.png deleted file mode 100755 index b3ac0b55..00000000 Binary files a/static/images/status/door--plus.png and /dev/null differ diff --git a/static/images/status/door-open-in.png b/static/images/status/door-open-in.png deleted file mode 100755 index 662975d9..00000000 Binary files a/static/images/status/door-open-in.png and /dev/null differ diff --git a/static/images/status/door-open-out.png b/static/images/status/door-open-out.png deleted file mode 100755 index 2bc51acc..00000000 Binary files a/static/images/status/door-open-out.png and /dev/null differ diff --git a/static/images/status/door-open.png b/static/images/status/door-open.png deleted file mode 100755 index bcb587a2..00000000 Binary files a/static/images/status/door-open.png and /dev/null differ diff --git a/static/images/status/door.png b/static/images/status/door.png deleted file mode 100755 index f868d020..00000000 Binary files a/static/images/status/door.png and /dev/null differ diff --git a/static/images/status/drawer--arrow.png b/static/images/status/drawer--arrow.png deleted file mode 100755 index f14421ef..00000000 Binary files a/static/images/status/drawer--arrow.png and /dev/null differ diff --git a/static/images/status/drawer--exclamation.png b/static/images/status/drawer--exclamation.png deleted file mode 100755 index f79f7f6b..00000000 Binary files a/static/images/status/drawer--exclamation.png and /dev/null differ diff --git a/static/images/status/drawer--minus.png b/static/images/status/drawer--minus.png deleted file mode 100755 index e33b37c6..00000000 Binary files a/static/images/status/drawer--minus.png and /dev/null differ diff --git a/static/images/status/drawer--pencil.png b/static/images/status/drawer--pencil.png deleted file mode 100755 index 2abb1573..00000000 Binary files a/static/images/status/drawer--pencil.png and /dev/null differ diff --git a/static/images/status/drawer--plus.png b/static/images/status/drawer--plus.png deleted file mode 100755 index ec068f53..00000000 Binary files a/static/images/status/drawer--plus.png and /dev/null differ diff --git a/static/images/status/drawer-open.png b/static/images/status/drawer-open.png deleted file mode 100755 index 5d46d8c0..00000000 Binary files a/static/images/status/drawer-open.png and /dev/null differ diff --git a/static/images/status/drawer.png b/static/images/status/drawer.png deleted file mode 100755 index e5dbd2f2..00000000 Binary files a/static/images/status/drawer.png and /dev/null differ diff --git a/static/images/status/drill--arrow.png b/static/images/status/drill--arrow.png deleted file mode 100755 index 3f7df1b6..00000000 Binary files a/static/images/status/drill--arrow.png and /dev/null differ diff --git a/static/images/status/drill--exclamation.png b/static/images/status/drill--exclamation.png deleted file mode 100755 index 6e8b28f4..00000000 Binary files a/static/images/status/drill--exclamation.png and /dev/null differ diff --git a/static/images/status/drill--minus.png b/static/images/status/drill--minus.png deleted file mode 100755 index 6d96830b..00000000 Binary files a/static/images/status/drill--minus.png and /dev/null differ diff --git a/static/images/status/drill--pencil.png b/static/images/status/drill--pencil.png deleted file mode 100755 index 2cec5929..00000000 Binary files a/static/images/status/drill--pencil.png and /dev/null differ diff --git a/static/images/status/drill--plus.png b/static/images/status/drill--plus.png deleted file mode 100755 index d05fbe2b..00000000 Binary files a/static/images/status/drill--plus.png and /dev/null differ diff --git a/static/images/status/drill.png b/static/images/status/drill.png deleted file mode 100755 index e4698163..00000000 Binary files a/static/images/status/drill.png and /dev/null differ diff --git a/static/images/status/drive--arrow.png b/static/images/status/drive--arrow.png deleted file mode 100755 index 3bc2384a..00000000 Binary files a/static/images/status/drive--arrow.png and /dev/null differ diff --git a/static/images/status/drive--exclamation.png b/static/images/status/drive--exclamation.png deleted file mode 100755 index 86ae3cd3..00000000 Binary files a/static/images/status/drive--exclamation.png and /dev/null differ diff --git a/static/images/status/drive--minus.png b/static/images/status/drive--minus.png deleted file mode 100755 index 845f1d29..00000000 Binary files a/static/images/status/drive--minus.png and /dev/null differ diff --git a/static/images/status/drive--pencil.png b/static/images/status/drive--pencil.png deleted file mode 100755 index c1838185..00000000 Binary files a/static/images/status/drive--pencil.png and /dev/null differ diff --git a/static/images/status/drive--plus.png b/static/images/status/drive--plus.png deleted file mode 100755 index 83373414..00000000 Binary files a/static/images/status/drive--plus.png and /dev/null differ diff --git a/static/images/status/drive-download.png b/static/images/status/drive-download.png deleted file mode 100755 index 1920b1bb..00000000 Binary files a/static/images/status/drive-download.png and /dev/null differ diff --git a/static/images/status/drive-globe.png b/static/images/status/drive-globe.png deleted file mode 100755 index f264595a..00000000 Binary files a/static/images/status/drive-globe.png and /dev/null differ diff --git a/static/images/status/drive-network.png b/static/images/status/drive-network.png deleted file mode 100755 index 4dbb0e18..00000000 Binary files a/static/images/status/drive-network.png and /dev/null differ diff --git a/static/images/status/drive-rename.png b/static/images/status/drive-rename.png deleted file mode 100755 index 844b18b6..00000000 Binary files a/static/images/status/drive-rename.png and /dev/null differ diff --git a/static/images/status/drive-small.png b/static/images/status/drive-small.png deleted file mode 100755 index a6c33c45..00000000 Binary files a/static/images/status/drive-small.png and /dev/null differ diff --git a/static/images/status/drive-upload.png b/static/images/status/drive-upload.png deleted file mode 100755 index 93589e4d..00000000 Binary files a/static/images/status/drive-upload.png and /dev/null differ diff --git a/static/images/status/drive.png b/static/images/status/drive.png deleted file mode 100755 index 2c024e40..00000000 Binary files a/static/images/status/drive.png and /dev/null differ diff --git a/static/images/status/dummy.png b/static/images/status/dummy.png deleted file mode 100755 index f952332e..00000000 Binary files a/static/images/status/dummy.png and /dev/null differ diff --git a/static/images/status/e-book-reader-white.png b/static/images/status/e-book-reader-white.png deleted file mode 100755 index 5b40ff57..00000000 Binary files a/static/images/status/e-book-reader-white.png and /dev/null differ diff --git a/static/images/status/e-book-reader.png b/static/images/status/e-book-reader.png deleted file mode 100755 index e6ac30bd..00000000 Binary files a/static/images/status/e-book-reader.png and /dev/null differ diff --git a/static/images/status/edit-alignment-center.png b/static/images/status/edit-alignment-center.png deleted file mode 100755 index 853497c7..00000000 Binary files a/static/images/status/edit-alignment-center.png and /dev/null differ diff --git a/static/images/status/edit-alignment-justify-distribute.png b/static/images/status/edit-alignment-justify-distribute.png deleted file mode 100755 index 1ad7cef9..00000000 Binary files a/static/images/status/edit-alignment-justify-distribute.png and /dev/null differ diff --git a/static/images/status/edit-alignment-justify.png b/static/images/status/edit-alignment-justify.png deleted file mode 100755 index 0a102d53..00000000 Binary files a/static/images/status/edit-alignment-justify.png and /dev/null differ diff --git a/static/images/status/edit-alignment-right.png b/static/images/status/edit-alignment-right.png deleted file mode 100755 index 7af865d9..00000000 Binary files a/static/images/status/edit-alignment-right.png and /dev/null differ diff --git a/static/images/status/edit-alignment.png b/static/images/status/edit-alignment.png deleted file mode 100755 index f1cd36b2..00000000 Binary files a/static/images/status/edit-alignment.png and /dev/null differ diff --git a/static/images/status/edit-all-caps.png b/static/images/status/edit-all-caps.png deleted file mode 100755 index 23a69daa..00000000 Binary files a/static/images/status/edit-all-caps.png and /dev/null differ diff --git a/static/images/status/edit-bold.png b/static/images/status/edit-bold.png deleted file mode 100755 index 200b9cfe..00000000 Binary files a/static/images/status/edit-bold.png and /dev/null differ diff --git a/static/images/status/edit-code.png b/static/images/status/edit-code.png deleted file mode 100755 index 29bac66c..00000000 Binary files a/static/images/status/edit-code.png and /dev/null differ diff --git a/static/images/status/edit-color.png b/static/images/status/edit-color.png deleted file mode 100755 index 676f1abb..00000000 Binary files a/static/images/status/edit-color.png and /dev/null differ diff --git a/static/images/status/edit-column.png b/static/images/status/edit-column.png deleted file mode 100755 index 59d49338..00000000 Binary files a/static/images/status/edit-column.png and /dev/null differ diff --git a/static/images/status/edit-comma.png b/static/images/status/edit-comma.png deleted file mode 100755 index 7f13f964..00000000 Binary files a/static/images/status/edit-comma.png and /dev/null differ diff --git a/static/images/status/edit-decimal-decrease.png b/static/images/status/edit-decimal-decrease.png deleted file mode 100755 index 91e515c9..00000000 Binary files a/static/images/status/edit-decimal-decrease.png and /dev/null differ diff --git a/static/images/status/edit-decimal.png b/static/images/status/edit-decimal.png deleted file mode 100755 index 50849048..00000000 Binary files a/static/images/status/edit-decimal.png and /dev/null differ diff --git a/static/images/status/edit-diff.png b/static/images/status/edit-diff.png deleted file mode 100755 index d4d1b561..00000000 Binary files a/static/images/status/edit-diff.png and /dev/null differ diff --git a/static/images/status/edit-direction-rtl.png b/static/images/status/edit-direction-rtl.png deleted file mode 100755 index 85c1fa90..00000000 Binary files a/static/images/status/edit-direction-rtl.png and /dev/null differ diff --git a/static/images/status/edit-direction.png b/static/images/status/edit-direction.png deleted file mode 100755 index 73bb0648..00000000 Binary files a/static/images/status/edit-direction.png and /dev/null differ diff --git a/static/images/status/edit-drop-cap.png b/static/images/status/edit-drop-cap.png deleted file mode 100755 index 4d82fe6b..00000000 Binary files a/static/images/status/edit-drop-cap.png and /dev/null differ diff --git a/static/images/status/edit-heading.png b/static/images/status/edit-heading.png deleted file mode 100755 index 96b603de..00000000 Binary files a/static/images/status/edit-heading.png and /dev/null differ diff --git a/static/images/status/edit-hyphenation.png b/static/images/status/edit-hyphenation.png deleted file mode 100755 index 55edccfb..00000000 Binary files a/static/images/status/edit-hyphenation.png and /dev/null differ diff --git a/static/images/status/edit-image-center.png b/static/images/status/edit-image-center.png deleted file mode 100755 index e00be621..00000000 Binary files a/static/images/status/edit-image-center.png and /dev/null differ diff --git a/static/images/status/edit-image-right.png b/static/images/status/edit-image-right.png deleted file mode 100755 index 90a9cad4..00000000 Binary files a/static/images/status/edit-image-right.png and /dev/null differ diff --git a/static/images/status/edit-image.png b/static/images/status/edit-image.png deleted file mode 100755 index 08d712f3..00000000 Binary files a/static/images/status/edit-image.png and /dev/null differ diff --git a/static/images/status/edit-indent.png b/static/images/status/edit-indent.png deleted file mode 100755 index 62883c7c..00000000 Binary files a/static/images/status/edit-indent.png and /dev/null differ diff --git a/static/images/status/edit-italic.png b/static/images/status/edit-italic.png deleted file mode 100755 index 18052c2e..00000000 Binary files a/static/images/status/edit-italic.png and /dev/null differ diff --git a/static/images/status/edit-kerning.png b/static/images/status/edit-kerning.png deleted file mode 100755 index 263d451b..00000000 Binary files a/static/images/status/edit-kerning.png and /dev/null differ diff --git a/static/images/status/edit-language.png b/static/images/status/edit-language.png deleted file mode 100755 index bcf3a3ab..00000000 Binary files a/static/images/status/edit-language.png and /dev/null differ diff --git a/static/images/status/edit-letter-spacing.png b/static/images/status/edit-letter-spacing.png deleted file mode 100755 index c0b4e478..00000000 Binary files a/static/images/status/edit-letter-spacing.png and /dev/null differ diff --git a/static/images/status/edit-line-spacing.png b/static/images/status/edit-line-spacing.png deleted file mode 100755 index 2b8dbb5d..00000000 Binary files a/static/images/status/edit-line-spacing.png and /dev/null differ diff --git a/static/images/status/edit-list-order.png b/static/images/status/edit-list-order.png deleted file mode 100755 index 687b410d..00000000 Binary files a/static/images/status/edit-list-order.png and /dev/null differ diff --git a/static/images/status/edit-list.png b/static/images/status/edit-list.png deleted file mode 100755 index 2ad20874..00000000 Binary files a/static/images/status/edit-list.png and /dev/null differ diff --git a/static/images/status/edit-lowercase.png b/static/images/status/edit-lowercase.png deleted file mode 100755 index 1dfb80a0..00000000 Binary files a/static/images/status/edit-lowercase.png and /dev/null differ diff --git a/static/images/status/edit-mathematics.png b/static/images/status/edit-mathematics.png deleted file mode 100755 index a4f82142..00000000 Binary files a/static/images/status/edit-mathematics.png and /dev/null differ diff --git a/static/images/status/edit-number.png b/static/images/status/edit-number.png deleted file mode 100755 index e914d5c2..00000000 Binary files a/static/images/status/edit-number.png and /dev/null differ diff --git a/static/images/status/edit-outdent.png b/static/images/status/edit-outdent.png deleted file mode 100755 index 2200839f..00000000 Binary files a/static/images/status/edit-outdent.png and /dev/null differ diff --git a/static/images/status/edit-outline.png b/static/images/status/edit-outline.png deleted file mode 100755 index de747292..00000000 Binary files a/static/images/status/edit-outline.png and /dev/null differ diff --git a/static/images/status/edit-overline.png b/static/images/status/edit-overline.png deleted file mode 100755 index 0f31a84f..00000000 Binary files a/static/images/status/edit-overline.png and /dev/null differ diff --git a/static/images/status/edit-padding-left.png b/static/images/status/edit-padding-left.png deleted file mode 100755 index dcf30465..00000000 Binary files a/static/images/status/edit-padding-left.png and /dev/null differ diff --git a/static/images/status/edit-padding-right.png b/static/images/status/edit-padding-right.png deleted file mode 100755 index 986196ae..00000000 Binary files a/static/images/status/edit-padding-right.png and /dev/null differ diff --git a/static/images/status/edit-padding-top.png b/static/images/status/edit-padding-top.png deleted file mode 100755 index b5284109..00000000 Binary files a/static/images/status/edit-padding-top.png and /dev/null differ diff --git a/static/images/status/edit-padding.png b/static/images/status/edit-padding.png deleted file mode 100755 index 5384ebbf..00000000 Binary files a/static/images/status/edit-padding.png and /dev/null differ diff --git a/static/images/status/edit-percent.png b/static/images/status/edit-percent.png deleted file mode 100755 index 938e9cee..00000000 Binary files a/static/images/status/edit-percent.png and /dev/null differ diff --git a/static/images/status/edit-pilcrow.png b/static/images/status/edit-pilcrow.png deleted file mode 100755 index e2ec349f..00000000 Binary files a/static/images/status/edit-pilcrow.png and /dev/null differ diff --git a/static/images/status/edit-quotation.png b/static/images/status/edit-quotation.png deleted file mode 100755 index 1cf4c321..00000000 Binary files a/static/images/status/edit-quotation.png and /dev/null differ diff --git a/static/images/status/edit-replace.png b/static/images/status/edit-replace.png deleted file mode 100755 index a223647b..00000000 Binary files a/static/images/status/edit-replace.png and /dev/null differ diff --git a/static/images/status/edit-rotate.png b/static/images/status/edit-rotate.png deleted file mode 100755 index 0d4918ff..00000000 Binary files a/static/images/status/edit-rotate.png and /dev/null differ diff --git a/static/images/status/edit-rule.png b/static/images/status/edit-rule.png deleted file mode 100755 index 1873b937..00000000 Binary files a/static/images/status/edit-rule.png and /dev/null differ diff --git a/static/images/status/edit-scale-vertical.png b/static/images/status/edit-scale-vertical.png deleted file mode 100755 index 12a71b65..00000000 Binary files a/static/images/status/edit-scale-vertical.png and /dev/null differ diff --git a/static/images/status/edit-scale.png b/static/images/status/edit-scale.png deleted file mode 100755 index 9d953b01..00000000 Binary files a/static/images/status/edit-scale.png and /dev/null differ diff --git a/static/images/status/edit-shade.png b/static/images/status/edit-shade.png deleted file mode 100755 index 71afbbe6..00000000 Binary files a/static/images/status/edit-shade.png and /dev/null differ diff --git a/static/images/status/edit-shadow.png b/static/images/status/edit-shadow.png deleted file mode 100755 index 2ecd09bb..00000000 Binary files a/static/images/status/edit-shadow.png and /dev/null differ diff --git a/static/images/status/edit-signiture.png b/static/images/status/edit-signiture.png deleted file mode 100755 index 88dc8324..00000000 Binary files a/static/images/status/edit-signiture.png and /dev/null differ diff --git a/static/images/status/edit-size-down.png b/static/images/status/edit-size-down.png deleted file mode 100755 index 66e5e5f5..00000000 Binary files a/static/images/status/edit-size-down.png and /dev/null differ diff --git a/static/images/status/edit-size-up.png b/static/images/status/edit-size-up.png deleted file mode 100755 index ac7160ee..00000000 Binary files a/static/images/status/edit-size-up.png and /dev/null differ diff --git a/static/images/status/edit-size.png b/static/images/status/edit-size.png deleted file mode 100755 index ef125e9e..00000000 Binary files a/static/images/status/edit-size.png and /dev/null differ diff --git a/static/images/status/edit-small-caps.png b/static/images/status/edit-small-caps.png deleted file mode 100755 index af6ee6e4..00000000 Binary files a/static/images/status/edit-small-caps.png and /dev/null differ diff --git a/static/images/status/edit-space.png b/static/images/status/edit-space.png deleted file mode 100755 index 56644af3..00000000 Binary files a/static/images/status/edit-space.png and /dev/null differ diff --git a/static/images/status/edit-strike-double.png b/static/images/status/edit-strike-double.png deleted file mode 100755 index 6049c9f7..00000000 Binary files a/static/images/status/edit-strike-double.png and /dev/null differ diff --git a/static/images/status/edit-strike.png b/static/images/status/edit-strike.png deleted file mode 100755 index fa87f129..00000000 Binary files a/static/images/status/edit-strike.png and /dev/null differ diff --git a/static/images/status/edit-subscript.png b/static/images/status/edit-subscript.png deleted file mode 100755 index 4b30540a..00000000 Binary files a/static/images/status/edit-subscript.png and /dev/null differ diff --git a/static/images/status/edit-superscript.png b/static/images/status/edit-superscript.png deleted file mode 100755 index 31cb33ef..00000000 Binary files a/static/images/status/edit-superscript.png and /dev/null differ diff --git a/static/images/status/edit-symbol.png b/static/images/status/edit-symbol.png deleted file mode 100755 index b633251b..00000000 Binary files a/static/images/status/edit-symbol.png and /dev/null differ diff --git a/static/images/status/edit-underline-double.png b/static/images/status/edit-underline-double.png deleted file mode 100755 index 4a3ed844..00000000 Binary files a/static/images/status/edit-underline-double.png and /dev/null differ diff --git a/static/images/status/edit-underline.png b/static/images/status/edit-underline.png deleted file mode 100755 index 438f3916..00000000 Binary files a/static/images/status/edit-underline.png and /dev/null differ diff --git a/static/images/status/edit-uppercase.png b/static/images/status/edit-uppercase.png deleted file mode 100755 index 9abbfe15..00000000 Binary files a/static/images/status/edit-uppercase.png and /dev/null differ diff --git a/static/images/status/edit-vertical-alignment-middle.png b/static/images/status/edit-vertical-alignment-middle.png deleted file mode 100755 index 5e8400f7..00000000 Binary files a/static/images/status/edit-vertical-alignment-middle.png and /dev/null differ diff --git a/static/images/status/edit-vertical-alignment-top.png b/static/images/status/edit-vertical-alignment-top.png deleted file mode 100755 index b5fb250a..00000000 Binary files a/static/images/status/edit-vertical-alignment-top.png and /dev/null differ diff --git a/static/images/status/edit-vertical-alignment.png b/static/images/status/edit-vertical-alignment.png deleted file mode 100755 index 702790c8..00000000 Binary files a/static/images/status/edit-vertical-alignment.png and /dev/null differ diff --git a/static/images/status/edit-writing-mode-tbrl.png b/static/images/status/edit-writing-mode-tbrl.png deleted file mode 100755 index eec8b790..00000000 Binary files a/static/images/status/edit-writing-mode-tbrl.png and /dev/null differ diff --git a/static/images/status/edit-writing-mode.png b/static/images/status/edit-writing-mode.png deleted file mode 100755 index f75879a7..00000000 Binary files a/static/images/status/edit-writing-mode.png and /dev/null differ diff --git a/static/images/status/edit.png b/static/images/status/edit.png deleted file mode 100755 index 6db18b4e..00000000 Binary files a/static/images/status/edit.png and /dev/null differ diff --git a/static/images/status/envelope--arrow.png b/static/images/status/envelope--arrow.png deleted file mode 100755 index aa97d2f2..00000000 Binary files a/static/images/status/envelope--arrow.png and /dev/null differ diff --git a/static/images/status/envelope--exclamation.png b/static/images/status/envelope--exclamation.png deleted file mode 100755 index d427c686..00000000 Binary files a/static/images/status/envelope--exclamation.png and /dev/null differ diff --git a/static/images/status/envelope--minus.png b/static/images/status/envelope--minus.png deleted file mode 100755 index 9941518e..00000000 Binary files a/static/images/status/envelope--minus.png and /dev/null differ diff --git a/static/images/status/envelope--pencil.png b/static/images/status/envelope--pencil.png deleted file mode 100755 index 67a23bd0..00000000 Binary files a/static/images/status/envelope--pencil.png and /dev/null differ diff --git a/static/images/status/envelope--plus.png b/static/images/status/envelope--plus.png deleted file mode 100755 index 5545defd..00000000 Binary files a/static/images/status/envelope--plus.png and /dev/null differ diff --git a/static/images/status/envelope-label.png b/static/images/status/envelope-label.png deleted file mode 100755 index 01b5f0dd..00000000 Binary files a/static/images/status/envelope-label.png and /dev/null differ diff --git a/static/images/status/envelope.png b/static/images/status/envelope.png deleted file mode 100755 index 15244eb3..00000000 Binary files a/static/images/status/envelope.png and /dev/null differ diff --git a/static/images/status/equalizer--arrow.png b/static/images/status/equalizer--arrow.png deleted file mode 100755 index 5af422b8..00000000 Binary files a/static/images/status/equalizer--arrow.png and /dev/null differ diff --git a/static/images/status/equalizer--exclamation.png b/static/images/status/equalizer--exclamation.png deleted file mode 100755 index f61405bc..00000000 Binary files a/static/images/status/equalizer--exclamation.png and /dev/null differ diff --git a/static/images/status/equalizer--minus.png b/static/images/status/equalizer--minus.png deleted file mode 100755 index 0454cabe..00000000 Binary files a/static/images/status/equalizer--minus.png and /dev/null differ diff --git a/static/images/status/equalizer--pencil.png b/static/images/status/equalizer--pencil.png deleted file mode 100755 index 1dee62fb..00000000 Binary files a/static/images/status/equalizer--pencil.png and /dev/null differ diff --git a/static/images/status/equalizer--plus.png b/static/images/status/equalizer--plus.png deleted file mode 100755 index 7d1a9336..00000000 Binary files a/static/images/status/equalizer--plus.png and /dev/null differ diff --git a/static/images/status/equalizer-flat.png b/static/images/status/equalizer-flat.png deleted file mode 100755 index d4969004..00000000 Binary files a/static/images/status/equalizer-flat.png and /dev/null differ diff --git a/static/images/status/equalizer-high.png b/static/images/status/equalizer-high.png deleted file mode 100755 index 5e95fc9e..00000000 Binary files a/static/images/status/equalizer-high.png and /dev/null differ diff --git a/static/images/status/equalizer-low.png b/static/images/status/equalizer-low.png deleted file mode 100755 index fc543bea..00000000 Binary files a/static/images/status/equalizer-low.png and /dev/null differ diff --git a/static/images/status/equalizer.png b/static/images/status/equalizer.png deleted file mode 100755 index b4e2aeac..00000000 Binary files a/static/images/status/equalizer.png and /dev/null differ diff --git a/static/images/status/eraser--arrow.png b/static/images/status/eraser--arrow.png deleted file mode 100755 index 62f9d4e0..00000000 Binary files a/static/images/status/eraser--arrow.png and /dev/null differ diff --git a/static/images/status/eraser--exclamation.png b/static/images/status/eraser--exclamation.png deleted file mode 100755 index a727ecea..00000000 Binary files a/static/images/status/eraser--exclamation.png and /dev/null differ diff --git a/static/images/status/eraser--minus.png b/static/images/status/eraser--minus.png deleted file mode 100755 index 71074738..00000000 Binary files a/static/images/status/eraser--minus.png and /dev/null differ diff --git a/static/images/status/eraser--pencil.png b/static/images/status/eraser--pencil.png deleted file mode 100755 index 6ea3f2d6..00000000 Binary files a/static/images/status/eraser--pencil.png and /dev/null differ diff --git a/static/images/status/eraser--plus.png b/static/images/status/eraser--plus.png deleted file mode 100755 index 0f90b21c..00000000 Binary files a/static/images/status/eraser--plus.png and /dev/null differ diff --git a/static/images/status/eraser-small.png b/static/images/status/eraser-small.png deleted file mode 100755 index 5828b48d..00000000 Binary files a/static/images/status/eraser-small.png and /dev/null differ diff --git a/static/images/status/eraser.png b/static/images/status/eraser.png deleted file mode 100755 index bc6a3fa4..00000000 Binary files a/static/images/status/eraser.png and /dev/null differ diff --git a/static/images/status/exclamation--frame.png b/static/images/status/exclamation--frame.png deleted file mode 100755 index 61558838..00000000 Binary files a/static/images/status/exclamation--frame.png and /dev/null differ diff --git a/static/images/status/exclamation-button.png b/static/images/status/exclamation-button.png deleted file mode 100755 index e792fb01..00000000 Binary files a/static/images/status/exclamation-button.png and /dev/null differ diff --git a/static/images/status/exclamation-diamond-frame.png b/static/images/status/exclamation-diamond-frame.png deleted file mode 100755 index 476a9d4a..00000000 Binary files a/static/images/status/exclamation-diamond-frame.png and /dev/null differ diff --git a/static/images/status/exclamation-diamond.png b/static/images/status/exclamation-diamond.png deleted file mode 100755 index cb86732d..00000000 Binary files a/static/images/status/exclamation-diamond.png and /dev/null differ diff --git a/static/images/status/exclamation-octagon-frame.png b/static/images/status/exclamation-octagon-frame.png deleted file mode 100755 index 40826c99..00000000 Binary files a/static/images/status/exclamation-octagon-frame.png and /dev/null differ diff --git a/static/images/status/exclamation-octagon.png b/static/images/status/exclamation-octagon.png deleted file mode 100755 index f5b36011..00000000 Binary files a/static/images/status/exclamation-octagon.png and /dev/null differ diff --git a/static/images/status/exclamation-red-frame.png b/static/images/status/exclamation-red-frame.png deleted file mode 100755 index 0496522f..00000000 Binary files a/static/images/status/exclamation-red-frame.png and /dev/null differ diff --git a/static/images/status/exclamation-red.png b/static/images/status/exclamation-red.png deleted file mode 100755 index 51772582..00000000 Binary files a/static/images/status/exclamation-red.png and /dev/null differ diff --git a/static/images/status/exclamation-shield-frame.png b/static/images/status/exclamation-shield-frame.png deleted file mode 100755 index 27ccfcea..00000000 Binary files a/static/images/status/exclamation-shield-frame.png and /dev/null differ diff --git a/static/images/status/exclamation-shield.png b/static/images/status/exclamation-shield.png deleted file mode 100755 index 91eca1d9..00000000 Binary files a/static/images/status/exclamation-shield.png and /dev/null differ diff --git a/static/images/status/exclamation-small-red.png b/static/images/status/exclamation-small-red.png deleted file mode 100755 index 2470d079..00000000 Binary files a/static/images/status/exclamation-small-red.png and /dev/null differ diff --git a/static/images/status/exclamation-small-white.png b/static/images/status/exclamation-small-white.png deleted file mode 100755 index 786e307c..00000000 Binary files a/static/images/status/exclamation-small-white.png and /dev/null differ diff --git a/static/images/status/exclamation-small.png b/static/images/status/exclamation-small.png deleted file mode 100755 index 9a6fc9af..00000000 Binary files a/static/images/status/exclamation-small.png and /dev/null differ diff --git a/static/images/status/exclamation-white.png b/static/images/status/exclamation-white.png deleted file mode 100755 index eeb557ac..00000000 Binary files a/static/images/status/exclamation-white.png and /dev/null differ diff --git a/static/images/status/external-small.png b/static/images/status/external-small.png deleted file mode 100755 index 759a1cdc..00000000 Binary files a/static/images/status/external-small.png and /dev/null differ diff --git a/static/images/status/external.png b/static/images/status/external.png deleted file mode 100755 index 976dcaca..00000000 Binary files a/static/images/status/external.png and /dev/null differ diff --git a/static/images/status/eye--arrow.png b/static/images/status/eye--arrow.png deleted file mode 100755 index 2998bf1c..00000000 Binary files a/static/images/status/eye--arrow.png and /dev/null differ diff --git a/static/images/status/eye--exclamation.png b/static/images/status/eye--exclamation.png deleted file mode 100755 index 5bc97167..00000000 Binary files a/static/images/status/eye--exclamation.png and /dev/null differ diff --git a/static/images/status/eye--minus.png b/static/images/status/eye--minus.png deleted file mode 100755 index 8cdbe2c3..00000000 Binary files a/static/images/status/eye--minus.png and /dev/null differ diff --git a/static/images/status/eye--pencil.png b/static/images/status/eye--pencil.png deleted file mode 100755 index 5124c0eb..00000000 Binary files a/static/images/status/eye--pencil.png and /dev/null differ diff --git a/static/images/status/eye--plus.png b/static/images/status/eye--plus.png deleted file mode 100755 index 4adea42b..00000000 Binary files a/static/images/status/eye--plus.png and /dev/null differ diff --git a/static/images/status/eye-close.png b/static/images/status/eye-close.png deleted file mode 100755 index 356660cd..00000000 Binary files a/static/images/status/eye-close.png and /dev/null differ diff --git a/static/images/status/eye-half.png b/static/images/status/eye-half.png deleted file mode 100755 index 941b0c49..00000000 Binary files a/static/images/status/eye-half.png and /dev/null differ diff --git a/static/images/status/eye-red.png b/static/images/status/eye-red.png deleted file mode 100755 index e62e37c5..00000000 Binary files a/static/images/status/eye-red.png and /dev/null differ diff --git a/static/images/status/eye.png b/static/images/status/eye.png deleted file mode 100755 index 2aead17e..00000000 Binary files a/static/images/status/eye.png and /dev/null differ diff --git a/static/images/status/feed--arrow.png b/static/images/status/feed--arrow.png deleted file mode 100755 index 4a7c0472..00000000 Binary files a/static/images/status/feed--arrow.png and /dev/null differ diff --git a/static/images/status/feed--exclamation.png b/static/images/status/feed--exclamation.png deleted file mode 100755 index d42f64e8..00000000 Binary files a/static/images/status/feed--exclamation.png and /dev/null differ diff --git a/static/images/status/feed--minus.png b/static/images/status/feed--minus.png deleted file mode 100755 index bc9bd297..00000000 Binary files a/static/images/status/feed--minus.png and /dev/null differ diff --git a/static/images/status/feed--pencil.png b/static/images/status/feed--pencil.png deleted file mode 100755 index bde082da..00000000 Binary files a/static/images/status/feed--pencil.png and /dev/null differ diff --git a/static/images/status/feed--plus.png b/static/images/status/feed--plus.png deleted file mode 100755 index a7a63f5e..00000000 Binary files a/static/images/status/feed--plus.png and /dev/null differ diff --git a/static/images/status/feed-balloon.png b/static/images/status/feed-balloon.png deleted file mode 100755 index 23793908..00000000 Binary files a/static/images/status/feed-balloon.png and /dev/null differ diff --git a/static/images/status/feed-document.png b/static/images/status/feed-document.png deleted file mode 100755 index 57a124a6..00000000 Binary files a/static/images/status/feed-document.png and /dev/null differ diff --git a/static/images/status/feed-small.png b/static/images/status/feed-small.png deleted file mode 100755 index 6be57b10..00000000 Binary files a/static/images/status/feed-small.png and /dev/null differ diff --git a/static/images/status/feed.png b/static/images/status/feed.png deleted file mode 100755 index cdf4e8f3..00000000 Binary files a/static/images/status/feed.png and /dev/null differ diff --git a/static/images/status/fill-090.png b/static/images/status/fill-090.png deleted file mode 100755 index 12bcd046..00000000 Binary files a/static/images/status/fill-090.png and /dev/null differ diff --git a/static/images/status/fill-180.png b/static/images/status/fill-180.png deleted file mode 100755 index f81ce3da..00000000 Binary files a/static/images/status/fill-180.png and /dev/null differ diff --git a/static/images/status/fill-270.png b/static/images/status/fill-270.png deleted file mode 100755 index 5aea4afe..00000000 Binary files a/static/images/status/fill-270.png and /dev/null differ diff --git a/static/images/status/fill.png b/static/images/status/fill.png deleted file mode 100755 index bdcbd6ea..00000000 Binary files a/static/images/status/fill.png and /dev/null differ diff --git a/static/images/status/film--arrow.png b/static/images/status/film--arrow.png deleted file mode 100755 index b2cfa070..00000000 Binary files a/static/images/status/film--arrow.png and /dev/null differ diff --git a/static/images/status/film--exclamation.png b/static/images/status/film--exclamation.png deleted file mode 100755 index bb9e1a56..00000000 Binary files a/static/images/status/film--exclamation.png and /dev/null differ diff --git a/static/images/status/film--minus.png b/static/images/status/film--minus.png deleted file mode 100755 index 69b7030e..00000000 Binary files a/static/images/status/film--minus.png and /dev/null differ diff --git a/static/images/status/film--pencil.png b/static/images/status/film--pencil.png deleted file mode 100755 index ac51fc58..00000000 Binary files a/static/images/status/film--pencil.png and /dev/null differ diff --git a/static/images/status/film--plus.png b/static/images/status/film--plus.png deleted file mode 100755 index 7df0bb65..00000000 Binary files a/static/images/status/film--plus.png and /dev/null differ diff --git a/static/images/status/film-cast.png b/static/images/status/film-cast.png deleted file mode 100755 index 167bb80d..00000000 Binary files a/static/images/status/film-cast.png and /dev/null differ diff --git a/static/images/status/film-small.png b/static/images/status/film-small.png deleted file mode 100755 index afaef766..00000000 Binary files a/static/images/status/film-small.png and /dev/null differ diff --git a/static/images/status/film.png b/static/images/status/film.png deleted file mode 100755 index c8bd2590..00000000 Binary files a/static/images/status/film.png and /dev/null differ diff --git a/static/images/status/films.png b/static/images/status/films.png deleted file mode 100755 index d1270dd0..00000000 Binary files a/static/images/status/films.png and /dev/null differ diff --git a/static/images/status/fingerprint-recognition.png b/static/images/status/fingerprint-recognition.png deleted file mode 100755 index e27e0f1b..00000000 Binary files a/static/images/status/fingerprint-recognition.png and /dev/null differ diff --git a/static/images/status/fingerprint.png b/static/images/status/fingerprint.png deleted file mode 100755 index 89b02aae..00000000 Binary files a/static/images/status/fingerprint.png and /dev/null differ diff --git a/static/images/status/fire--arrow.png b/static/images/status/fire--arrow.png deleted file mode 100755 index f7e7644f..00000000 Binary files a/static/images/status/fire--arrow.png and /dev/null differ diff --git a/static/images/status/fire--exclamation.png b/static/images/status/fire--exclamation.png deleted file mode 100755 index 4fcc88e4..00000000 Binary files a/static/images/status/fire--exclamation.png and /dev/null differ diff --git a/static/images/status/fire--minus.png b/static/images/status/fire--minus.png deleted file mode 100755 index 1ac0562c..00000000 Binary files a/static/images/status/fire--minus.png and /dev/null differ diff --git a/static/images/status/fire--pencil.png b/static/images/status/fire--pencil.png deleted file mode 100755 index 3ea031d7..00000000 Binary files a/static/images/status/fire--pencil.png and /dev/null differ diff --git a/static/images/status/fire--plus.png b/static/images/status/fire--plus.png deleted file mode 100755 index 321fe9f2..00000000 Binary files a/static/images/status/fire--plus.png and /dev/null differ diff --git a/static/images/status/fire-big.png b/static/images/status/fire-big.png deleted file mode 100755 index 413291d8..00000000 Binary files a/static/images/status/fire-big.png and /dev/null differ diff --git a/static/images/status/fire-small.png b/static/images/status/fire-small.png deleted file mode 100755 index ca6f1325..00000000 Binary files a/static/images/status/fire-small.png and /dev/null differ diff --git a/static/images/status/fire.png b/static/images/status/fire.png deleted file mode 100755 index 2a81112e..00000000 Binary files a/static/images/status/fire.png and /dev/null differ diff --git a/static/images/status/flag--arrow.png b/static/images/status/flag--arrow.png deleted file mode 100755 index f509d927..00000000 Binary files a/static/images/status/flag--arrow.png and /dev/null differ diff --git a/static/images/status/flag--exclamation.png b/static/images/status/flag--exclamation.png deleted file mode 100755 index 1f37e4f0..00000000 Binary files a/static/images/status/flag--exclamation.png and /dev/null differ diff --git a/static/images/status/flag--minus.png b/static/images/status/flag--minus.png deleted file mode 100755 index 4176aca9..00000000 Binary files a/static/images/status/flag--minus.png and /dev/null differ diff --git a/static/images/status/flag--pencil.png b/static/images/status/flag--pencil.png deleted file mode 100755 index 64be3b9c..00000000 Binary files a/static/images/status/flag--pencil.png and /dev/null differ diff --git a/static/images/status/flag--plus.png b/static/images/status/flag--plus.png deleted file mode 100755 index 517c31b9..00000000 Binary files a/static/images/status/flag--plus.png and /dev/null differ diff --git a/static/images/status/flag-small.png b/static/images/status/flag-small.png deleted file mode 100755 index c75fa336..00000000 Binary files a/static/images/status/flag-small.png and /dev/null differ diff --git a/static/images/status/flashlight--arrow.png b/static/images/status/flashlight--arrow.png deleted file mode 100755 index 308ba169..00000000 Binary files a/static/images/status/flashlight--arrow.png and /dev/null differ diff --git a/static/images/status/flashlight--exclamation.png b/static/images/status/flashlight--exclamation.png deleted file mode 100755 index 87cb0d1f..00000000 Binary files a/static/images/status/flashlight--exclamation.png and /dev/null differ diff --git a/static/images/status/flashlight--minus.png b/static/images/status/flashlight--minus.png deleted file mode 100755 index 79106856..00000000 Binary files a/static/images/status/flashlight--minus.png and /dev/null differ diff --git a/static/images/status/flashlight--pencil.png b/static/images/status/flashlight--pencil.png deleted file mode 100755 index 120f7755..00000000 Binary files a/static/images/status/flashlight--pencil.png and /dev/null differ diff --git a/static/images/status/flashlight--plus.png b/static/images/status/flashlight--plus.png deleted file mode 100755 index cbec50c4..00000000 Binary files a/static/images/status/flashlight--plus.png and /dev/null differ diff --git a/static/images/status/flashlight-shine.png b/static/images/status/flashlight-shine.png deleted file mode 100755 index 8fcca736..00000000 Binary files a/static/images/status/flashlight-shine.png and /dev/null differ diff --git a/static/images/status/flashlight.png b/static/images/status/flashlight.png deleted file mode 100755 index 9ee02808..00000000 Binary files a/static/images/status/flashlight.png and /dev/null differ diff --git a/static/images/status/flask--arrow.png b/static/images/status/flask--arrow.png deleted file mode 100755 index fbc8f8f2..00000000 Binary files a/static/images/status/flask--arrow.png and /dev/null differ diff --git a/static/images/status/flask--exclamation.png b/static/images/status/flask--exclamation.png deleted file mode 100755 index 7fbab15c..00000000 Binary files a/static/images/status/flask--exclamation.png and /dev/null differ diff --git a/static/images/status/flask--minus.png b/static/images/status/flask--minus.png deleted file mode 100755 index b58950e2..00000000 Binary files a/static/images/status/flask--minus.png and /dev/null differ diff --git a/static/images/status/flask--pencil.png b/static/images/status/flask--pencil.png deleted file mode 100755 index be7e67df..00000000 Binary files a/static/images/status/flask--pencil.png and /dev/null differ diff --git a/static/images/status/flask--plus.png b/static/images/status/flask--plus.png deleted file mode 100755 index e65adb9d..00000000 Binary files a/static/images/status/flask--plus.png and /dev/null differ diff --git a/static/images/status/flask-empty.png b/static/images/status/flask-empty.png deleted file mode 100755 index 005a6988..00000000 Binary files a/static/images/status/flask-empty.png and /dev/null differ diff --git a/static/images/status/flask.png b/static/images/status/flask.png deleted file mode 100755 index 6f8a6769..00000000 Binary files a/static/images/status/flask.png and /dev/null differ diff --git a/static/images/status/foaf.png b/static/images/status/foaf.png deleted file mode 100755 index a3c7a21f..00000000 Binary files a/static/images/status/foaf.png and /dev/null differ diff --git a/static/images/status/folder--arrow.png b/static/images/status/folder--arrow.png deleted file mode 100755 index 393c9d23..00000000 Binary files a/static/images/status/folder--arrow.png and /dev/null differ diff --git a/static/images/status/folder--exclamation.png b/static/images/status/folder--exclamation.png deleted file mode 100755 index 94aa6a3d..00000000 Binary files a/static/images/status/folder--exclamation.png and /dev/null differ diff --git a/static/images/status/folder--minus.png b/static/images/status/folder--minus.png deleted file mode 100755 index a72768bd..00000000 Binary files a/static/images/status/folder--minus.png and /dev/null differ diff --git a/static/images/status/folder--pencil.png b/static/images/status/folder--pencil.png deleted file mode 100755 index 024e50c9..00000000 Binary files a/static/images/status/folder--pencil.png and /dev/null differ diff --git a/static/images/status/folder--plus.png b/static/images/status/folder--plus.png deleted file mode 100755 index 5075baf7..00000000 Binary files a/static/images/status/folder--plus.png and /dev/null differ diff --git a/static/images/status/folder-bookmark.png b/static/images/status/folder-bookmark.png deleted file mode 100755 index 7bb65c9b..00000000 Binary files a/static/images/status/folder-bookmark.png and /dev/null differ diff --git a/static/images/status/folder-export.png b/static/images/status/folder-export.png deleted file mode 100755 index 86e0cd29..00000000 Binary files a/static/images/status/folder-export.png and /dev/null differ diff --git a/static/images/status/folder-horizontal-open.png b/static/images/status/folder-horizontal-open.png deleted file mode 100755 index dbaa6ee3..00000000 Binary files a/static/images/status/folder-horizontal-open.png and /dev/null differ diff --git a/static/images/status/folder-horizontal.png b/static/images/status/folder-horizontal.png deleted file mode 100755 index 260b4157..00000000 Binary files a/static/images/status/folder-horizontal.png and /dev/null differ diff --git a/static/images/status/folder-import.png b/static/images/status/folder-import.png deleted file mode 100755 index 216f634b..00000000 Binary files a/static/images/status/folder-import.png and /dev/null differ diff --git a/static/images/status/folder-network.png b/static/images/status/folder-network.png deleted file mode 100755 index c5072e76..00000000 Binary files a/static/images/status/folder-network.png and /dev/null differ diff --git a/static/images/status/folder-open-document-music-playlist.png b/static/images/status/folder-open-document-music-playlist.png deleted file mode 100755 index e6d135f5..00000000 Binary files a/static/images/status/folder-open-document-music-playlist.png and /dev/null differ diff --git a/static/images/status/folder-open-document-music.png b/static/images/status/folder-open-document-music.png deleted file mode 100755 index 99396eef..00000000 Binary files a/static/images/status/folder-open-document-music.png and /dev/null differ diff --git a/static/images/status/folder-open-document-text.png b/static/images/status/folder-open-document-text.png deleted file mode 100755 index 134dbf31..00000000 Binary files a/static/images/status/folder-open-document-text.png and /dev/null differ diff --git a/static/images/status/folder-open-document.png b/static/images/status/folder-open-document.png deleted file mode 100755 index c02157b1..00000000 Binary files a/static/images/status/folder-open-document.png and /dev/null differ diff --git a/static/images/status/folder-open-film.png b/static/images/status/folder-open-film.png deleted file mode 100755 index abf08199..00000000 Binary files a/static/images/status/folder-open-film.png and /dev/null differ diff --git a/static/images/status/folder-open-image.png b/static/images/status/folder-open-image.png deleted file mode 100755 index 81190db4..00000000 Binary files a/static/images/status/folder-open-image.png and /dev/null differ diff --git a/static/images/status/folder-open-slide.png b/static/images/status/folder-open-slide.png deleted file mode 100755 index 7fdf2eba..00000000 Binary files a/static/images/status/folder-open-slide.png and /dev/null differ diff --git a/static/images/status/folder-open-table.png b/static/images/status/folder-open-table.png deleted file mode 100755 index 466b7d43..00000000 Binary files a/static/images/status/folder-open-table.png and /dev/null differ diff --git a/static/images/status/folder-open.png b/static/images/status/folder-open.png deleted file mode 100755 index adc99d5f..00000000 Binary files a/static/images/status/folder-open.png and /dev/null differ diff --git a/static/images/status/folder-rename.png b/static/images/status/folder-rename.png deleted file mode 100755 index fa0ce466..00000000 Binary files a/static/images/status/folder-rename.png and /dev/null differ diff --git a/static/images/status/folder-search-result.png b/static/images/status/folder-search-result.png deleted file mode 100755 index bd73644f..00000000 Binary files a/static/images/status/folder-search-result.png and /dev/null differ diff --git a/static/images/status/folder-share.png b/static/images/status/folder-share.png deleted file mode 100755 index 8ff6c814..00000000 Binary files a/static/images/status/folder-share.png and /dev/null differ diff --git a/static/images/status/folder-shred.png b/static/images/status/folder-shred.png deleted file mode 100755 index b23aa364..00000000 Binary files a/static/images/status/folder-shred.png and /dev/null differ diff --git a/static/images/status/folder-small-horizontal.png b/static/images/status/folder-small-horizontal.png deleted file mode 100755 index c7216917..00000000 Binary files a/static/images/status/folder-small-horizontal.png and /dev/null differ diff --git a/static/images/status/folder-small.png b/static/images/status/folder-small.png deleted file mode 100755 index 5da755a2..00000000 Binary files a/static/images/status/folder-small.png and /dev/null differ diff --git a/static/images/status/folder-stamp.png b/static/images/status/folder-stamp.png deleted file mode 100755 index 07dfb547..00000000 Binary files a/static/images/status/folder-stamp.png and /dev/null differ diff --git a/static/images/status/folder-stand.png b/static/images/status/folder-stand.png deleted file mode 100755 index 52a5e26c..00000000 Binary files a/static/images/status/folder-stand.png and /dev/null differ diff --git a/static/images/status/folder-zipper.png b/static/images/status/folder-zipper.png deleted file mode 100755 index 67a3d9a1..00000000 Binary files a/static/images/status/folder-zipper.png and /dev/null differ diff --git a/static/images/status/folder.png b/static/images/status/folder.png deleted file mode 100755 index ada85c48..00000000 Binary files a/static/images/status/folder.png and /dev/null differ diff --git a/static/images/status/folders-stack.png b/static/images/status/folders-stack.png deleted file mode 100755 index 4da23032..00000000 Binary files a/static/images/status/folders-stack.png and /dev/null differ diff --git a/static/images/status/folders.png b/static/images/status/folders.png deleted file mode 100755 index 01dca2c8..00000000 Binary files a/static/images/status/folders.png and /dev/null differ diff --git a/static/images/status/fruit-orange.png b/static/images/status/fruit-orange.png deleted file mode 100755 index e4684e9c..00000000 Binary files a/static/images/status/fruit-orange.png and /dev/null differ diff --git a/static/images/status/fruit.png b/static/images/status/fruit.png deleted file mode 100755 index 298305a2..00000000 Binary files a/static/images/status/fruit.png and /dev/null differ diff --git a/static/images/status/function.png b/static/images/status/function.png deleted file mode 100755 index 18fa585a..00000000 Binary files a/static/images/status/function.png and /dev/null differ diff --git a/static/images/status/funnel--arrow.png b/static/images/status/funnel--arrow.png deleted file mode 100755 index 00e441c0..00000000 Binary files a/static/images/status/funnel--arrow.png and /dev/null differ diff --git a/static/images/status/funnel--exclamation.png b/static/images/status/funnel--exclamation.png deleted file mode 100755 index e5c57202..00000000 Binary files a/static/images/status/funnel--exclamation.png and /dev/null differ diff --git a/static/images/status/funnel--minus.png b/static/images/status/funnel--minus.png deleted file mode 100755 index 2de517a3..00000000 Binary files a/static/images/status/funnel--minus.png and /dev/null differ diff --git a/static/images/status/funnel--pencil.png b/static/images/status/funnel--pencil.png deleted file mode 100755 index ef1cdb34..00000000 Binary files a/static/images/status/funnel--pencil.png and /dev/null differ diff --git a/static/images/status/funnel--plus.png b/static/images/status/funnel--plus.png deleted file mode 100755 index 41c82229..00000000 Binary files a/static/images/status/funnel--plus.png and /dev/null differ diff --git a/static/images/status/funnel-small.png b/static/images/status/funnel-small.png deleted file mode 100755 index 96e9e28f..00000000 Binary files a/static/images/status/funnel-small.png and /dev/null differ diff --git a/static/images/status/funnel.png b/static/images/status/funnel.png deleted file mode 100755 index 1f696045..00000000 Binary files a/static/images/status/funnel.png and /dev/null differ diff --git a/static/images/status/game-monitor.png b/static/images/status/game-monitor.png deleted file mode 100755 index fdb0219b..00000000 Binary files a/static/images/status/game-monitor.png and /dev/null differ diff --git a/static/images/status/game.png b/static/images/status/game.png deleted file mode 100755 index fc0e757f..00000000 Binary files a/static/images/status/game.png and /dev/null differ diff --git a/static/images/status/gear--arrow.png b/static/images/status/gear--arrow.png deleted file mode 100755 index c0e2aea8..00000000 Binary files a/static/images/status/gear--arrow.png and /dev/null differ diff --git a/static/images/status/gear--exclamation.png b/static/images/status/gear--exclamation.png deleted file mode 100755 index 931ce748..00000000 Binary files a/static/images/status/gear--exclamation.png and /dev/null differ diff --git a/static/images/status/gear--minus.png b/static/images/status/gear--minus.png deleted file mode 100755 index 4e7a6fe3..00000000 Binary files a/static/images/status/gear--minus.png and /dev/null differ diff --git a/static/images/status/gear--pencil.png b/static/images/status/gear--pencil.png deleted file mode 100755 index 0699492c..00000000 Binary files a/static/images/status/gear--pencil.png and /dev/null differ diff --git a/static/images/status/gear--plus.png b/static/images/status/gear--plus.png deleted file mode 100755 index 17f7e90d..00000000 Binary files a/static/images/status/gear--plus.png and /dev/null differ diff --git a/static/images/status/gear-small.png b/static/images/status/gear-small.png deleted file mode 100755 index 9f58d4fa..00000000 Binary files a/static/images/status/gear-small.png and /dev/null differ diff --git a/static/images/status/gear.png b/static/images/status/gear.png deleted file mode 100755 index efc599dc..00000000 Binary files a/static/images/status/gear.png and /dev/null differ diff --git a/static/images/status/gender-female.png b/static/images/status/gender-female.png deleted file mode 100755 index e7cc074d..00000000 Binary files a/static/images/status/gender-female.png and /dev/null differ diff --git a/static/images/status/gender.png b/static/images/status/gender.png deleted file mode 100755 index bb5bf75a..00000000 Binary files a/static/images/status/gender.png and /dev/null differ diff --git a/static/images/status/geotag-balloon.png b/static/images/status/geotag-balloon.png deleted file mode 100755 index 41ef4be4..00000000 Binary files a/static/images/status/geotag-balloon.png and /dev/null differ diff --git a/static/images/status/geotag-document.png b/static/images/status/geotag-document.png deleted file mode 100755 index 5b2b81f9..00000000 Binary files a/static/images/status/geotag-document.png and /dev/null differ diff --git a/static/images/status/geotag-small.png b/static/images/status/geotag-small.png deleted file mode 100755 index 6058a064..00000000 Binary files a/static/images/status/geotag-small.png and /dev/null differ diff --git a/static/images/status/geotag.png b/static/images/status/geotag.png deleted file mode 100755 index 35bdb90e..00000000 Binary files a/static/images/status/geotag.png and /dev/null differ diff --git a/static/images/status/ghost-small.png b/static/images/status/ghost-small.png deleted file mode 100755 index c53eade9..00000000 Binary files a/static/images/status/ghost-small.png and /dev/null differ diff --git a/static/images/status/ghost.png b/static/images/status/ghost.png deleted file mode 100755 index 8d4c9934..00000000 Binary files a/static/images/status/ghost.png and /dev/null differ diff --git a/static/images/status/glass--arrow.png b/static/images/status/glass--arrow.png deleted file mode 100755 index b50dcb8f..00000000 Binary files a/static/images/status/glass--arrow.png and /dev/null differ diff --git a/static/images/status/glass--exclamation.png b/static/images/status/glass--exclamation.png deleted file mode 100755 index 55f72cf4..00000000 Binary files a/static/images/status/glass--exclamation.png and /dev/null differ diff --git a/static/images/status/glass--minus.png b/static/images/status/glass--minus.png deleted file mode 100755 index 90c877b9..00000000 Binary files a/static/images/status/glass--minus.png and /dev/null differ diff --git a/static/images/status/glass--pencil.png b/static/images/status/glass--pencil.png deleted file mode 100755 index fc129c58..00000000 Binary files a/static/images/status/glass--pencil.png and /dev/null differ diff --git a/static/images/status/glass--plus.png b/static/images/status/glass--plus.png deleted file mode 100755 index acd2df91..00000000 Binary files a/static/images/status/glass--plus.png and /dev/null differ diff --git a/static/images/status/glass-empty.png b/static/images/status/glass-empty.png deleted file mode 100755 index c9aa5ec1..00000000 Binary files a/static/images/status/glass-empty.png and /dev/null differ diff --git a/static/images/status/glass.png b/static/images/status/glass.png deleted file mode 100755 index 9d033f95..00000000 Binary files a/static/images/status/glass.png and /dev/null differ diff --git a/static/images/status/globe--arrow.png b/static/images/status/globe--arrow.png deleted file mode 100755 index a1711cda..00000000 Binary files a/static/images/status/globe--arrow.png and /dev/null differ diff --git a/static/images/status/globe--exclamation.png b/static/images/status/globe--exclamation.png deleted file mode 100755 index e14ade8e..00000000 Binary files a/static/images/status/globe--exclamation.png and /dev/null differ diff --git a/static/images/status/globe--minus.png b/static/images/status/globe--minus.png deleted file mode 100755 index 74f100a6..00000000 Binary files a/static/images/status/globe--minus.png and /dev/null differ diff --git a/static/images/status/globe--pencil.png b/static/images/status/globe--pencil.png deleted file mode 100755 index 46fcc910..00000000 Binary files a/static/images/status/globe--pencil.png and /dev/null differ diff --git a/static/images/status/globe--plus.png b/static/images/status/globe--plus.png deleted file mode 100755 index fe4004bb..00000000 Binary files a/static/images/status/globe--plus.png and /dev/null differ diff --git a/static/images/status/globe-green.png b/static/images/status/globe-green.png deleted file mode 100755 index 9bfcabb4..00000000 Binary files a/static/images/status/globe-green.png and /dev/null differ diff --git a/static/images/status/globe-medium-green.png b/static/images/status/globe-medium-green.png deleted file mode 100755 index 8eef3651..00000000 Binary files a/static/images/status/globe-medium-green.png and /dev/null differ diff --git a/static/images/status/globe-medium.png b/static/images/status/globe-medium.png deleted file mode 100755 index 43a8e525..00000000 Binary files a/static/images/status/globe-medium.png and /dev/null differ diff --git a/static/images/status/globe-model.png b/static/images/status/globe-model.png deleted file mode 100755 index 5776936c..00000000 Binary files a/static/images/status/globe-model.png and /dev/null differ diff --git a/static/images/status/globe-network.png b/static/images/status/globe-network.png deleted file mode 100755 index ec27fad4..00000000 Binary files a/static/images/status/globe-network.png and /dev/null differ diff --git a/static/images/status/globe-place.png b/static/images/status/globe-place.png deleted file mode 100755 index 1c8007e1..00000000 Binary files a/static/images/status/globe-place.png and /dev/null differ diff --git a/static/images/status/globe-small-green.png b/static/images/status/globe-small-green.png deleted file mode 100755 index e843b388..00000000 Binary files a/static/images/status/globe-small-green.png and /dev/null differ diff --git a/static/images/status/globe-small.png b/static/images/status/globe-small.png deleted file mode 100755 index 510b3b04..00000000 Binary files a/static/images/status/globe-small.png and /dev/null differ diff --git a/static/images/status/globe.png b/static/images/status/globe.png deleted file mode 100755 index 48e5b6b3..00000000 Binary files a/static/images/status/globe.png and /dev/null differ diff --git a/static/images/status/gradient-small.png b/static/images/status/gradient-small.png deleted file mode 100755 index 56c0ad0e..00000000 Binary files a/static/images/status/gradient-small.png and /dev/null differ diff --git a/static/images/status/gradient.png b/static/images/status/gradient.png deleted file mode 100755 index d88b8a60..00000000 Binary files a/static/images/status/gradient.png and /dev/null differ diff --git a/static/images/status/grid-dot.png b/static/images/status/grid-dot.png deleted file mode 100755 index fde74c11..00000000 Binary files a/static/images/status/grid-dot.png and /dev/null differ diff --git a/static/images/status/grid-small-dot.png b/static/images/status/grid-small-dot.png deleted file mode 100755 index c5cec9b0..00000000 Binary files a/static/images/status/grid-small-dot.png and /dev/null differ diff --git a/static/images/status/grid-small.png b/static/images/status/grid-small.png deleted file mode 100755 index bc43dff2..00000000 Binary files a/static/images/status/grid-small.png and /dev/null differ diff --git a/static/images/status/grid-snap-dot.png b/static/images/status/grid-snap-dot.png deleted file mode 100755 index e697bbb6..00000000 Binary files a/static/images/status/grid-snap-dot.png and /dev/null differ diff --git a/static/images/status/grid-snap.png b/static/images/status/grid-snap.png deleted file mode 100755 index eaaff21d..00000000 Binary files a/static/images/status/grid-snap.png and /dev/null differ diff --git a/static/images/status/grid.png b/static/images/status/grid.png deleted file mode 100755 index 2eb69a4e..00000000 Binary files a/static/images/status/grid.png and /dev/null differ diff --git a/static/images/status/guide-snap.png b/static/images/status/guide-snap.png deleted file mode 100755 index 884c45cf..00000000 Binary files a/static/images/status/guide-snap.png and /dev/null differ diff --git a/static/images/status/guide.png b/static/images/status/guide.png deleted file mode 100755 index 2068a9c2..00000000 Binary files a/static/images/status/guide.png and /dev/null differ diff --git a/static/images/status/guitar--arrow.png b/static/images/status/guitar--arrow.png deleted file mode 100755 index 2b35e4ef..00000000 Binary files a/static/images/status/guitar--arrow.png and /dev/null differ diff --git a/static/images/status/guitar--exclamation.png b/static/images/status/guitar--exclamation.png deleted file mode 100755 index cb26c6dc..00000000 Binary files a/static/images/status/guitar--exclamation.png and /dev/null differ diff --git a/static/images/status/guitar--minus.png b/static/images/status/guitar--minus.png deleted file mode 100755 index 342fc3e7..00000000 Binary files a/static/images/status/guitar--minus.png and /dev/null differ diff --git a/static/images/status/guitar--pencil.png b/static/images/status/guitar--pencil.png deleted file mode 100755 index 7b6bfc02..00000000 Binary files a/static/images/status/guitar--pencil.png and /dev/null differ diff --git a/static/images/status/guitar--plus.png b/static/images/status/guitar--plus.png deleted file mode 100755 index ae1ffe27..00000000 Binary files a/static/images/status/guitar--plus.png and /dev/null differ diff --git a/static/images/status/guitar.png b/static/images/status/guitar.png deleted file mode 100755 index 04c7fcc1..00000000 Binary files a/static/images/status/guitar.png and /dev/null differ diff --git a/static/images/status/hammer--arrow.png b/static/images/status/hammer--arrow.png deleted file mode 100755 index 900c4d6a..00000000 Binary files a/static/images/status/hammer--arrow.png and /dev/null differ diff --git a/static/images/status/hammer--exclamation.png b/static/images/status/hammer--exclamation.png deleted file mode 100755 index 30bcfcf7..00000000 Binary files a/static/images/status/hammer--exclamation.png and /dev/null differ diff --git a/static/images/status/hammer--minus.png b/static/images/status/hammer--minus.png deleted file mode 100755 index 7e8e2b58..00000000 Binary files a/static/images/status/hammer--minus.png and /dev/null differ diff --git a/static/images/status/hammer--pencil.png b/static/images/status/hammer--pencil.png deleted file mode 100755 index 98fa568b..00000000 Binary files a/static/images/status/hammer--pencil.png and /dev/null differ diff --git a/static/images/status/hammer--plus.png b/static/images/status/hammer--plus.png deleted file mode 100755 index afd23890..00000000 Binary files a/static/images/status/hammer--plus.png and /dev/null differ diff --git a/static/images/status/hammer-left.png b/static/images/status/hammer-left.png deleted file mode 100755 index 82f7b0b7..00000000 Binary files a/static/images/status/hammer-left.png and /dev/null differ diff --git a/static/images/status/hammer-screwdriver.png b/static/images/status/hammer-screwdriver.png deleted file mode 100755 index 985d44c5..00000000 Binary files a/static/images/status/hammer-screwdriver.png and /dev/null differ diff --git a/static/images/status/hammer.png b/static/images/status/hammer.png deleted file mode 100755 index cf0ef85a..00000000 Binary files a/static/images/status/hammer.png and /dev/null differ diff --git a/static/images/status/hand-point-090.png b/static/images/status/hand-point-090.png deleted file mode 100755 index 92f46628..00000000 Binary files a/static/images/status/hand-point-090.png and /dev/null differ diff --git a/static/images/status/hand-point-180.png b/static/images/status/hand-point-180.png deleted file mode 100755 index a5638aca..00000000 Binary files a/static/images/status/hand-point-180.png and /dev/null differ diff --git a/static/images/status/hand-point-270.png b/static/images/status/hand-point-270.png deleted file mode 100755 index 531fd398..00000000 Binary files a/static/images/status/hand-point-270.png and /dev/null differ diff --git a/static/images/status/hand-point.png b/static/images/status/hand-point.png deleted file mode 100755 index e19ec770..00000000 Binary files a/static/images/status/hand-point.png and /dev/null differ diff --git a/static/images/status/hand-property.png b/static/images/status/hand-property.png deleted file mode 100755 index 0f0865a4..00000000 Binary files a/static/images/status/hand-property.png and /dev/null differ diff --git a/static/images/status/hand-share.png b/static/images/status/hand-share.png deleted file mode 100755 index 757c1b1e..00000000 Binary files a/static/images/status/hand-share.png and /dev/null differ diff --git a/static/images/status/hand.png b/static/images/status/hand.png deleted file mode 100755 index 7b47be2d..00000000 Binary files a/static/images/status/hand.png and /dev/null differ diff --git a/static/images/status/hard-hat--arrow.png b/static/images/status/hard-hat--arrow.png deleted file mode 100755 index c02076c5..00000000 Binary files a/static/images/status/hard-hat--arrow.png and /dev/null differ diff --git a/static/images/status/hard-hat--exclamation.png b/static/images/status/hard-hat--exclamation.png deleted file mode 100755 index 869efb98..00000000 Binary files a/static/images/status/hard-hat--exclamation.png and /dev/null differ diff --git a/static/images/status/hard-hat--minus.png b/static/images/status/hard-hat--minus.png deleted file mode 100755 index f61e2375..00000000 Binary files a/static/images/status/hard-hat--minus.png and /dev/null differ diff --git a/static/images/status/hard-hat--pencil.png b/static/images/status/hard-hat--pencil.png deleted file mode 100755 index 404f657e..00000000 Binary files a/static/images/status/hard-hat--pencil.png and /dev/null differ diff --git a/static/images/status/hard-hat--plus.png b/static/images/status/hard-hat--plus.png deleted file mode 100755 index f258f6dd..00000000 Binary files a/static/images/status/hard-hat--plus.png and /dev/null differ diff --git a/static/images/status/hard-hat-military.png b/static/images/status/hard-hat-military.png deleted file mode 100755 index 5d78ec3b..00000000 Binary files a/static/images/status/hard-hat-military.png and /dev/null differ diff --git a/static/images/status/hard-hat-mine.png b/static/images/status/hard-hat-mine.png deleted file mode 100755 index a1b51402..00000000 Binary files a/static/images/status/hard-hat-mine.png and /dev/null differ diff --git a/static/images/status/headphone--arrow.png b/static/images/status/headphone--arrow.png deleted file mode 100755 index aa4f6c1b..00000000 Binary files a/static/images/status/headphone--arrow.png and /dev/null differ diff --git a/static/images/status/headphone--exclamation.png b/static/images/status/headphone--exclamation.png deleted file mode 100755 index 6ee9ab5a..00000000 Binary files a/static/images/status/headphone--exclamation.png and /dev/null differ diff --git a/static/images/status/headphone--minus.png b/static/images/status/headphone--minus.png deleted file mode 100755 index 71d6c5a7..00000000 Binary files a/static/images/status/headphone--minus.png and /dev/null differ diff --git a/static/images/status/headphone--pencil.png b/static/images/status/headphone--pencil.png deleted file mode 100755 index c855baba..00000000 Binary files a/static/images/status/headphone--pencil.png and /dev/null differ diff --git a/static/images/status/headphone--plus.png b/static/images/status/headphone--plus.png deleted file mode 100755 index 51666f02..00000000 Binary files a/static/images/status/headphone--plus.png and /dev/null differ diff --git a/static/images/status/headphone-microphone.png b/static/images/status/headphone-microphone.png deleted file mode 100755 index 260478bd..00000000 Binary files a/static/images/status/headphone-microphone.png and /dev/null differ diff --git a/static/images/status/headphone.png b/static/images/status/headphone.png deleted file mode 100755 index a11cc7dd..00000000 Binary files a/static/images/status/headphone.png and /dev/null differ diff --git a/static/images/status/heart--arrow.png b/static/images/status/heart--arrow.png deleted file mode 100755 index 7d32f9a4..00000000 Binary files a/static/images/status/heart--arrow.png and /dev/null differ diff --git a/static/images/status/heart--exclamation.png b/static/images/status/heart--exclamation.png deleted file mode 100755 index f8db2dd3..00000000 Binary files a/static/images/status/heart--exclamation.png and /dev/null differ diff --git a/static/images/status/heart--minus.png b/static/images/status/heart--minus.png deleted file mode 100755 index b524b866..00000000 Binary files a/static/images/status/heart--minus.png and /dev/null differ diff --git a/static/images/status/heart--pencil.png b/static/images/status/heart--pencil.png deleted file mode 100755 index 0a3bce1e..00000000 Binary files a/static/images/status/heart--pencil.png and /dev/null differ diff --git a/static/images/status/heart--plus.png b/static/images/status/heart--plus.png deleted file mode 100755 index 9b715f95..00000000 Binary files a/static/images/status/heart--plus.png and /dev/null differ diff --git a/static/images/status/heart-break.png b/static/images/status/heart-break.png deleted file mode 100755 index 00702e7a..00000000 Binary files a/static/images/status/heart-break.png and /dev/null differ diff --git a/static/images/status/heart-empty.png b/static/images/status/heart-empty.png deleted file mode 100755 index b329477c..00000000 Binary files a/static/images/status/heart-empty.png and /dev/null differ diff --git a/static/images/status/heart-half.png b/static/images/status/heart-half.png deleted file mode 100755 index aaa8900e..00000000 Binary files a/static/images/status/heart-half.png and /dev/null differ diff --git a/static/images/status/heart-small-empty.png b/static/images/status/heart-small-empty.png deleted file mode 100755 index 6b889a83..00000000 Binary files a/static/images/status/heart-small-empty.png and /dev/null differ diff --git a/static/images/status/heart-small-half.png b/static/images/status/heart-small-half.png deleted file mode 100755 index 15123453..00000000 Binary files a/static/images/status/heart-small-half.png and /dev/null differ diff --git a/static/images/status/heart-small.png b/static/images/status/heart-small.png deleted file mode 100755 index d33feca3..00000000 Binary files a/static/images/status/heart-small.png and /dev/null differ diff --git a/static/images/status/highlighter--arrow.png b/static/images/status/highlighter--arrow.png deleted file mode 100755 index 72d2a9c0..00000000 Binary files a/static/images/status/highlighter--arrow.png and /dev/null differ diff --git a/static/images/status/highlighter--exclamation.png b/static/images/status/highlighter--exclamation.png deleted file mode 100755 index 94198b21..00000000 Binary files a/static/images/status/highlighter--exclamation.png and /dev/null differ diff --git a/static/images/status/highlighter--minus.png b/static/images/status/highlighter--minus.png deleted file mode 100755 index 99737d85..00000000 Binary files a/static/images/status/highlighter--minus.png and /dev/null differ diff --git a/static/images/status/highlighter--plus.png b/static/images/status/highlighter--plus.png deleted file mode 100755 index e3efd411..00000000 Binary files a/static/images/status/highlighter--plus.png and /dev/null differ diff --git a/static/images/status/highlighter-color.png b/static/images/status/highlighter-color.png deleted file mode 100755 index 0da3087f..00000000 Binary files a/static/images/status/highlighter-color.png and /dev/null differ diff --git a/static/images/status/highlighter-small.png b/static/images/status/highlighter-small.png deleted file mode 100755 index e86cfe70..00000000 Binary files a/static/images/status/highlighter-small.png and /dev/null differ diff --git a/static/images/status/highlighter-text.png b/static/images/status/highlighter-text.png deleted file mode 100755 index 719c537d..00000000 Binary files a/static/images/status/highlighter-text.png and /dev/null differ diff --git a/static/images/status/highlighter.png b/static/images/status/highlighter.png deleted file mode 100755 index 2648b90d..00000000 Binary files a/static/images/status/highlighter.png and /dev/null differ diff --git a/static/images/status/home--arrow.png b/static/images/status/home--arrow.png deleted file mode 100755 index f1b0af76..00000000 Binary files a/static/images/status/home--arrow.png and /dev/null differ diff --git a/static/images/status/home--exclamation.png b/static/images/status/home--exclamation.png deleted file mode 100755 index 75128c72..00000000 Binary files a/static/images/status/home--exclamation.png and /dev/null differ diff --git a/static/images/status/home--minus.png b/static/images/status/home--minus.png deleted file mode 100755 index bcd7e88e..00000000 Binary files a/static/images/status/home--minus.png and /dev/null differ diff --git a/static/images/status/home--pencil.png b/static/images/status/home--pencil.png deleted file mode 100755 index 5f328b09..00000000 Binary files a/static/images/status/home--pencil.png and /dev/null differ diff --git a/static/images/status/home--plus.png b/static/images/status/home--plus.png deleted file mode 100755 index e454533b..00000000 Binary files a/static/images/status/home--plus.png and /dev/null differ diff --git a/static/images/status/home-network.png b/static/images/status/home-network.png deleted file mode 100755 index c016f5e9..00000000 Binary files a/static/images/status/home-network.png and /dev/null differ diff --git a/static/images/status/home-small.png b/static/images/status/home-small.png deleted file mode 100755 index e403ba68..00000000 Binary files a/static/images/status/home-small.png and /dev/null differ diff --git a/static/images/status/home.png b/static/images/status/home.png deleted file mode 100755 index 622a2b73..00000000 Binary files a/static/images/status/home.png and /dev/null differ diff --git a/static/images/status/hourglass--arrow.png b/static/images/status/hourglass--arrow.png deleted file mode 100755 index 02c8c9f5..00000000 Binary files a/static/images/status/hourglass--arrow.png and /dev/null differ diff --git a/static/images/status/hourglass--exclamation.png b/static/images/status/hourglass--exclamation.png deleted file mode 100755 index 67436681..00000000 Binary files a/static/images/status/hourglass--exclamation.png and /dev/null differ diff --git a/static/images/status/hourglass--minus.png b/static/images/status/hourglass--minus.png deleted file mode 100755 index 1a3a926f..00000000 Binary files a/static/images/status/hourglass--minus.png and /dev/null differ diff --git a/static/images/status/hourglass--pencil.png b/static/images/status/hourglass--pencil.png deleted file mode 100755 index a3b30858..00000000 Binary files a/static/images/status/hourglass--pencil.png and /dev/null differ diff --git a/static/images/status/hourglass--plus.png b/static/images/status/hourglass--plus.png deleted file mode 100755 index 1aefd003..00000000 Binary files a/static/images/status/hourglass--plus.png and /dev/null differ diff --git a/static/images/status/hourglass-select-remain.png b/static/images/status/hourglass-select-remain.png deleted file mode 100755 index d3656ea9..00000000 Binary files a/static/images/status/hourglass-select-remain.png and /dev/null differ diff --git a/static/images/status/hourglass-select.png b/static/images/status/hourglass-select.png deleted file mode 100755 index d3940203..00000000 Binary files a/static/images/status/hourglass-select.png and /dev/null differ diff --git a/static/images/status/hourglass.png b/static/images/status/hourglass.png deleted file mode 100755 index 127c5d61..00000000 Binary files a/static/images/status/hourglass.png and /dev/null differ diff --git a/static/images/status/ice--arrow.png b/static/images/status/ice--arrow.png deleted file mode 100755 index bcd79110..00000000 Binary files a/static/images/status/ice--arrow.png and /dev/null differ diff --git a/static/images/status/ice--exclamation.png b/static/images/status/ice--exclamation.png deleted file mode 100755 index 44fbb4a3..00000000 Binary files a/static/images/status/ice--exclamation.png and /dev/null differ diff --git a/static/images/status/ice--minus.png b/static/images/status/ice--minus.png deleted file mode 100755 index 1dc511b7..00000000 Binary files a/static/images/status/ice--minus.png and /dev/null differ diff --git a/static/images/status/ice--pencil.png b/static/images/status/ice--pencil.png deleted file mode 100755 index 40390b43..00000000 Binary files a/static/images/status/ice--pencil.png and /dev/null differ diff --git a/static/images/status/ice--plus.png b/static/images/status/ice--plus.png deleted file mode 100755 index c8cf9b5e..00000000 Binary files a/static/images/status/ice--plus.png and /dev/null differ diff --git a/static/images/status/ice.png b/static/images/status/ice.png deleted file mode 100755 index a39b7afa..00000000 Binary files a/static/images/status/ice.png and /dev/null differ diff --git a/static/images/status/image--arrow.png b/static/images/status/image--arrow.png deleted file mode 100755 index ecb14201..00000000 Binary files a/static/images/status/image--arrow.png and /dev/null differ diff --git a/static/images/status/image--exclamation.png b/static/images/status/image--exclamation.png deleted file mode 100755 index 85a09210..00000000 Binary files a/static/images/status/image--exclamation.png and /dev/null differ diff --git a/static/images/status/image--minus.png b/static/images/status/image--minus.png deleted file mode 100755 index b0aecdd9..00000000 Binary files a/static/images/status/image--minus.png and /dev/null differ diff --git a/static/images/status/image--pencil.png b/static/images/status/image--pencil.png deleted file mode 100755 index 27513129..00000000 Binary files a/static/images/status/image--pencil.png and /dev/null differ diff --git a/static/images/status/image--plus.png b/static/images/status/image--plus.png deleted file mode 100755 index 3e294912..00000000 Binary files a/static/images/status/image--plus.png and /dev/null differ diff --git a/static/images/status/image-balloon.png b/static/images/status/image-balloon.png deleted file mode 100755 index ff60a833..00000000 Binary files a/static/images/status/image-balloon.png and /dev/null differ diff --git a/static/images/status/image-blur.png b/static/images/status/image-blur.png deleted file mode 100755 index b8ef0cfb..00000000 Binary files a/static/images/status/image-blur.png and /dev/null differ diff --git a/static/images/status/image-cast.png b/static/images/status/image-cast.png deleted file mode 100755 index 3d2a1104..00000000 Binary files a/static/images/status/image-cast.png and /dev/null differ diff --git a/static/images/status/image-crop.png b/static/images/status/image-crop.png deleted file mode 100755 index 99871e34..00000000 Binary files a/static/images/status/image-crop.png and /dev/null differ diff --git a/static/images/status/image-empty.png b/static/images/status/image-empty.png deleted file mode 100755 index 885ab6e9..00000000 Binary files a/static/images/status/image-empty.png and /dev/null differ diff --git a/static/images/status/image-export.png b/static/images/status/image-export.png deleted file mode 100755 index d94df7f8..00000000 Binary files a/static/images/status/image-export.png and /dev/null differ diff --git a/static/images/status/image-import.png b/static/images/status/image-import.png deleted file mode 100755 index bb31099f..00000000 Binary files a/static/images/status/image-import.png and /dev/null differ diff --git a/static/images/status/image-reflection.png b/static/images/status/image-reflection.png deleted file mode 100755 index 2dfc2610..00000000 Binary files a/static/images/status/image-reflection.png and /dev/null differ diff --git a/static/images/status/image-resize-actual.png b/static/images/status/image-resize-actual.png deleted file mode 100755 index 86853646..00000000 Binary files a/static/images/status/image-resize-actual.png and /dev/null differ diff --git a/static/images/status/image-resize.png b/static/images/status/image-resize.png deleted file mode 100755 index 4a6bc017..00000000 Binary files a/static/images/status/image-resize.png and /dev/null differ diff --git a/static/images/status/image-select.png b/static/images/status/image-select.png deleted file mode 100755 index 6c4227ea..00000000 Binary files a/static/images/status/image-select.png and /dev/null differ diff --git a/static/images/status/image-sharpen.png b/static/images/status/image-sharpen.png deleted file mode 100755 index eefbcf74..00000000 Binary files a/static/images/status/image-sharpen.png and /dev/null differ diff --git a/static/images/status/image-small-sunset.png b/static/images/status/image-small-sunset.png deleted file mode 100755 index a5d454de..00000000 Binary files a/static/images/status/image-small-sunset.png and /dev/null differ diff --git a/static/images/status/image-small.png b/static/images/status/image-small.png deleted file mode 100755 index bee5e40c..00000000 Binary files a/static/images/status/image-small.png and /dev/null differ diff --git a/static/images/status/image-sunset.png b/static/images/status/image-sunset.png deleted file mode 100755 index 3c5b5b95..00000000 Binary files a/static/images/status/image-sunset.png and /dev/null differ diff --git a/static/images/status/image-vertical-sunset.png b/static/images/status/image-vertical-sunset.png deleted file mode 100755 index eb0f32d8..00000000 Binary files a/static/images/status/image-vertical-sunset.png and /dev/null differ diff --git a/static/images/status/image-vertical.png b/static/images/status/image-vertical.png deleted file mode 100755 index c79bafb1..00000000 Binary files a/static/images/status/image-vertical.png and /dev/null differ diff --git a/static/images/status/image.png b/static/images/status/image.png deleted file mode 100755 index c485c201..00000000 Binary files a/static/images/status/image.png and /dev/null differ diff --git a/static/images/status/images-flickr.png b/static/images/status/images-flickr.png deleted file mode 100755 index 32931c76..00000000 Binary files a/static/images/status/images-flickr.png and /dev/null differ diff --git a/static/images/status/images-stack.png b/static/images/status/images-stack.png deleted file mode 100755 index ef098a88..00000000 Binary files a/static/images/status/images-stack.png and /dev/null differ diff --git a/static/images/status/images.png b/static/images/status/images.png deleted file mode 100755 index 32328d04..00000000 Binary files a/static/images/status/images.png and /dev/null differ diff --git a/static/images/status/inbox--arrow.png b/static/images/status/inbox--arrow.png deleted file mode 100755 index 2d890b93..00000000 Binary files a/static/images/status/inbox--arrow.png and /dev/null differ diff --git a/static/images/status/inbox--exclamation.png b/static/images/status/inbox--exclamation.png deleted file mode 100755 index d6a9bd61..00000000 Binary files a/static/images/status/inbox--exclamation.png and /dev/null differ diff --git a/static/images/status/inbox--minus.png b/static/images/status/inbox--minus.png deleted file mode 100755 index c268c7f6..00000000 Binary files a/static/images/status/inbox--minus.png and /dev/null differ diff --git a/static/images/status/inbox--pencil.png b/static/images/status/inbox--pencil.png deleted file mode 100755 index f4b5c287..00000000 Binary files a/static/images/status/inbox--pencil.png and /dev/null differ diff --git a/static/images/status/inbox--plus.png b/static/images/status/inbox--plus.png deleted file mode 100755 index 6381baea..00000000 Binary files a/static/images/status/inbox--plus.png and /dev/null differ diff --git a/static/images/status/inbox-document-music-playlist.png b/static/images/status/inbox-document-music-playlist.png deleted file mode 100755 index b10113f4..00000000 Binary files a/static/images/status/inbox-document-music-playlist.png and /dev/null differ diff --git a/static/images/status/inbox-document-music.png b/static/images/status/inbox-document-music.png deleted file mode 100755 index e934f8c3..00000000 Binary files a/static/images/status/inbox-document-music.png and /dev/null differ diff --git a/static/images/status/inbox-document-text.png b/static/images/status/inbox-document-text.png deleted file mode 100755 index 4b479cfe..00000000 Binary files a/static/images/status/inbox-document-text.png and /dev/null differ diff --git a/static/images/status/inbox-document.png b/static/images/status/inbox-document.png deleted file mode 100755 index 389cf437..00000000 Binary files a/static/images/status/inbox-document.png and /dev/null differ diff --git a/static/images/status/inbox-film.png b/static/images/status/inbox-film.png deleted file mode 100755 index fd869a5e..00000000 Binary files a/static/images/status/inbox-film.png and /dev/null differ diff --git a/static/images/status/inbox-image.png b/static/images/status/inbox-image.png deleted file mode 100755 index 769bc8dd..00000000 Binary files a/static/images/status/inbox-image.png and /dev/null differ diff --git a/static/images/status/inbox-slide.png b/static/images/status/inbox-slide.png deleted file mode 100755 index b753665a..00000000 Binary files a/static/images/status/inbox-slide.png and /dev/null differ diff --git a/static/images/status/inbox-table.png b/static/images/status/inbox-table.png deleted file mode 100755 index 2dc8ac63..00000000 Binary files a/static/images/status/inbox-table.png and /dev/null differ diff --git a/static/images/status/inbox.png b/static/images/status/inbox.png deleted file mode 100755 index e572a5b4..00000000 Binary files a/static/images/status/inbox.png and /dev/null differ diff --git a/static/images/status/infocard-small.png b/static/images/status/infocard-small.png deleted file mode 100755 index d8f8e58e..00000000 Binary files a/static/images/status/infocard-small.png and /dev/null differ diff --git a/static/images/status/infocard.png b/static/images/status/infocard.png deleted file mode 100755 index 1f650ce9..00000000 Binary files a/static/images/status/infocard.png and /dev/null differ diff --git a/static/images/status/information-balloon.png b/static/images/status/information-balloon.png deleted file mode 100755 index f14f2a30..00000000 Binary files a/static/images/status/information-balloon.png and /dev/null differ diff --git a/static/images/status/information-button.png b/static/images/status/information-button.png deleted file mode 100755 index 4ecaf370..00000000 Binary files a/static/images/status/information-button.png and /dev/null differ diff --git a/static/images/status/information-frame.png b/static/images/status/information-frame.png deleted file mode 100755 index 6205729f..00000000 Binary files a/static/images/status/information-frame.png and /dev/null differ diff --git a/static/images/status/information-octagon-frame.png b/static/images/status/information-octagon-frame.png deleted file mode 100755 index 1c94af30..00000000 Binary files a/static/images/status/information-octagon-frame.png and /dev/null differ diff --git a/static/images/status/information-octagon.png b/static/images/status/information-octagon.png deleted file mode 100755 index 4ca0c2fc..00000000 Binary files a/static/images/status/information-octagon.png and /dev/null differ diff --git a/static/images/status/information-shield.png b/static/images/status/information-shield.png deleted file mode 100755 index c41e5abe..00000000 Binary files a/static/images/status/information-shield.png and /dev/null differ diff --git a/static/images/status/information-small-white.png b/static/images/status/information-small-white.png deleted file mode 100755 index 062600af..00000000 Binary files a/static/images/status/information-small-white.png and /dev/null differ diff --git a/static/images/status/jar--arrow.png b/static/images/status/jar--arrow.png deleted file mode 100755 index d6131064..00000000 Binary files a/static/images/status/jar--arrow.png and /dev/null differ diff --git a/static/images/status/jar--exclamation.png b/static/images/status/jar--exclamation.png deleted file mode 100755 index 49969a55..00000000 Binary files a/static/images/status/jar--exclamation.png and /dev/null differ diff --git a/static/images/status/jar--minus.png b/static/images/status/jar--minus.png deleted file mode 100755 index bed53dee..00000000 Binary files a/static/images/status/jar--minus.png and /dev/null differ diff --git a/static/images/status/jar--pencil.png b/static/images/status/jar--pencil.png deleted file mode 100755 index 25d9473a..00000000 Binary files a/static/images/status/jar--pencil.png and /dev/null differ diff --git a/static/images/status/jar--plus.png b/static/images/status/jar--plus.png deleted file mode 100755 index c9d3c393..00000000 Binary files a/static/images/status/jar--plus.png and /dev/null differ diff --git a/static/images/status/jar-empty.png b/static/images/status/jar-empty.png deleted file mode 100755 index c3e0e862..00000000 Binary files a/static/images/status/jar-empty.png and /dev/null differ diff --git a/static/images/status/jar-label.png b/static/images/status/jar-label.png deleted file mode 100755 index 9ea17b82..00000000 Binary files a/static/images/status/jar-label.png and /dev/null differ diff --git a/static/images/status/jar-open.png b/static/images/status/jar-open.png deleted file mode 100755 index 9ecf67b5..00000000 Binary files a/static/images/status/jar-open.png and /dev/null differ diff --git a/static/images/status/jar.png b/static/images/status/jar.png deleted file mode 100755 index 8711832a..00000000 Binary files a/static/images/status/jar.png and /dev/null differ diff --git a/static/images/status/json.png b/static/images/status/json.png deleted file mode 100755 index 05b40057..00000000 Binary files a/static/images/status/json.png and /dev/null differ diff --git a/static/images/status/key--arrow.png b/static/images/status/key--arrow.png deleted file mode 100755 index a4901894..00000000 Binary files a/static/images/status/key--arrow.png and /dev/null differ diff --git a/static/images/status/key--exclamation.png b/static/images/status/key--exclamation.png deleted file mode 100755 index 2735e5c9..00000000 Binary files a/static/images/status/key--exclamation.png and /dev/null differ diff --git a/static/images/status/key--minus.png b/static/images/status/key--minus.png deleted file mode 100755 index fd939efe..00000000 Binary files a/static/images/status/key--minus.png and /dev/null differ diff --git a/static/images/status/key--pencil.png b/static/images/status/key--pencil.png deleted file mode 100755 index 645edfd7..00000000 Binary files a/static/images/status/key--pencil.png and /dev/null differ diff --git a/static/images/status/key--plus.png b/static/images/status/key--plus.png deleted file mode 100755 index 9c3e361d..00000000 Binary files a/static/images/status/key--plus.png and /dev/null differ diff --git a/static/images/status/key-solid.png b/static/images/status/key-solid.png deleted file mode 100755 index 1ca13e81..00000000 Binary files a/static/images/status/key-solid.png and /dev/null differ diff --git a/static/images/status/key.png b/static/images/status/key.png deleted file mode 100755 index 82846369..00000000 Binary files a/static/images/status/key.png and /dev/null differ diff --git a/static/images/status/keyboard--arrow.png b/static/images/status/keyboard--arrow.png deleted file mode 100755 index 33ac485e..00000000 Binary files a/static/images/status/keyboard--arrow.png and /dev/null differ diff --git a/static/images/status/keyboard--exclamation.png b/static/images/status/keyboard--exclamation.png deleted file mode 100755 index e2b2bd80..00000000 Binary files a/static/images/status/keyboard--exclamation.png and /dev/null differ diff --git a/static/images/status/keyboard--minus.png b/static/images/status/keyboard--minus.png deleted file mode 100755 index 15c1a3a8..00000000 Binary files a/static/images/status/keyboard--minus.png and /dev/null differ diff --git a/static/images/status/keyboard--pencil.png b/static/images/status/keyboard--pencil.png deleted file mode 100755 index a1529b5d..00000000 Binary files a/static/images/status/keyboard--pencil.png and /dev/null differ diff --git a/static/images/status/keyboard--plus.png b/static/images/status/keyboard--plus.png deleted file mode 100755 index 0fc595b8..00000000 Binary files a/static/images/status/keyboard--plus.png and /dev/null differ diff --git a/static/images/status/keyboard-space.png b/static/images/status/keyboard-space.png deleted file mode 100755 index 372f770f..00000000 Binary files a/static/images/status/keyboard-space.png and /dev/null differ diff --git a/static/images/status/keyboard.png b/static/images/status/keyboard.png deleted file mode 100755 index 2d71f418..00000000 Binary files a/static/images/status/keyboard.png and /dev/null differ diff --git a/static/images/status/language-balloon.png b/static/images/status/language-balloon.png deleted file mode 100755 index 99d4bc1e..00000000 Binary files a/static/images/status/language-balloon.png and /dev/null differ diff --git a/static/images/status/language-document.png b/static/images/status/language-document.png deleted file mode 100755 index 5829eeed..00000000 Binary files a/static/images/status/language-document.png and /dev/null differ diff --git a/static/images/status/language-small.png b/static/images/status/language-small.png deleted file mode 100755 index 81fa6fa7..00000000 Binary files a/static/images/status/language-small.png and /dev/null differ diff --git a/static/images/status/language.png b/static/images/status/language.png deleted file mode 100755 index b47e357a..00000000 Binary files a/static/images/status/language.png and /dev/null differ diff --git a/static/images/status/layer--arrow.png b/static/images/status/layer--arrow.png deleted file mode 100755 index f48cda17..00000000 Binary files a/static/images/status/layer--arrow.png and /dev/null differ diff --git a/static/images/status/layer--exclamation.png b/static/images/status/layer--exclamation.png deleted file mode 100755 index 7123eb64..00000000 Binary files a/static/images/status/layer--exclamation.png and /dev/null differ diff --git a/static/images/status/layer--minus.png b/static/images/status/layer--minus.png deleted file mode 100755 index a595a9cb..00000000 Binary files a/static/images/status/layer--minus.png and /dev/null differ diff --git a/static/images/status/layer--pencil.png b/static/images/status/layer--pencil.png deleted file mode 100755 index a80cd2bf..00000000 Binary files a/static/images/status/layer--pencil.png and /dev/null differ diff --git a/static/images/status/layer--plus.png b/static/images/status/layer--plus.png deleted file mode 100755 index 797853dd..00000000 Binary files a/static/images/status/layer--plus.png and /dev/null differ diff --git a/static/images/status/layer-flip-vertical.png b/static/images/status/layer-flip-vertical.png deleted file mode 100755 index beb7354e..00000000 Binary files a/static/images/status/layer-flip-vertical.png and /dev/null differ diff --git a/static/images/status/layer-flip.png b/static/images/status/layer-flip.png deleted file mode 100755 index 886b078d..00000000 Binary files a/static/images/status/layer-flip.png and /dev/null differ diff --git a/static/images/status/layer-mask.png b/static/images/status/layer-mask.png deleted file mode 100755 index 41817532..00000000 Binary files a/static/images/status/layer-mask.png and /dev/null differ diff --git a/static/images/status/layer-resize-actual.png b/static/images/status/layer-resize-actual.png deleted file mode 100755 index a85a4164..00000000 Binary files a/static/images/status/layer-resize-actual.png and /dev/null differ diff --git a/static/images/status/layer-resize-replicate-vertical.png b/static/images/status/layer-resize-replicate-vertical.png deleted file mode 100755 index c3a6443c..00000000 Binary files a/static/images/status/layer-resize-replicate-vertical.png and /dev/null differ diff --git a/static/images/status/layer-resize-replicate.png b/static/images/status/layer-resize-replicate.png deleted file mode 100755 index 32590739..00000000 Binary files a/static/images/status/layer-resize-replicate.png and /dev/null differ diff --git a/static/images/status/layer-resize.png b/static/images/status/layer-resize.png deleted file mode 100755 index f87de60d..00000000 Binary files a/static/images/status/layer-resize.png and /dev/null differ diff --git a/static/images/status/layer-rotate-left.png b/static/images/status/layer-rotate-left.png deleted file mode 100755 index beff61da..00000000 Binary files a/static/images/status/layer-rotate-left.png and /dev/null differ diff --git a/static/images/status/layer-rotate.png b/static/images/status/layer-rotate.png deleted file mode 100755 index 7b00cc8e..00000000 Binary files a/static/images/status/layer-rotate.png and /dev/null differ diff --git a/static/images/status/layer-select-point.png b/static/images/status/layer-select-point.png deleted file mode 100755 index 299b2f53..00000000 Binary files a/static/images/status/layer-select-point.png and /dev/null differ diff --git a/static/images/status/layer-select.png b/static/images/status/layer-select.png deleted file mode 100755 index 70beec92..00000000 Binary files a/static/images/status/layer-select.png and /dev/null differ diff --git a/static/images/status/layer-shade.png b/static/images/status/layer-shade.png deleted file mode 100755 index 8b6cf1cc..00000000 Binary files a/static/images/status/layer-shade.png and /dev/null differ diff --git a/static/images/status/layer-shape-curve.png b/static/images/status/layer-shape-curve.png deleted file mode 100755 index 8b52ae7d..00000000 Binary files a/static/images/status/layer-shape-curve.png and /dev/null differ diff --git a/static/images/status/layer-shape-ellipse.png b/static/images/status/layer-shape-ellipse.png deleted file mode 100755 index a186a26b..00000000 Binary files a/static/images/status/layer-shape-ellipse.png and /dev/null differ diff --git a/static/images/status/layer-shape-line.png b/static/images/status/layer-shape-line.png deleted file mode 100755 index bdf68ec0..00000000 Binary files a/static/images/status/layer-shape-line.png and /dev/null differ diff --git a/static/images/status/layer-shape-polygon.png b/static/images/status/layer-shape-polygon.png deleted file mode 100755 index 28eba7dd..00000000 Binary files a/static/images/status/layer-shape-polygon.png and /dev/null differ diff --git a/static/images/status/layer-shape-polyline.png b/static/images/status/layer-shape-polyline.png deleted file mode 100755 index ae7670d0..00000000 Binary files a/static/images/status/layer-shape-polyline.png and /dev/null differ diff --git a/static/images/status/layer-shape-round.png b/static/images/status/layer-shape-round.png deleted file mode 100755 index 24aa4cec..00000000 Binary files a/static/images/status/layer-shape-round.png and /dev/null differ diff --git a/static/images/status/layer-shape-text.png b/static/images/status/layer-shape-text.png deleted file mode 100755 index 686da45d..00000000 Binary files a/static/images/status/layer-shape-text.png and /dev/null differ diff --git a/static/images/status/layer-shape.png b/static/images/status/layer-shape.png deleted file mode 100755 index 7c7883c0..00000000 Binary files a/static/images/status/layer-shape.png and /dev/null differ diff --git a/static/images/status/layer-shred.png b/static/images/status/layer-shred.png deleted file mode 100755 index ea2e5ffe..00000000 Binary files a/static/images/status/layer-shred.png and /dev/null differ diff --git a/static/images/status/layer-small.png b/static/images/status/layer-small.png deleted file mode 100755 index d5d05ffc..00000000 Binary files a/static/images/status/layer-small.png and /dev/null differ diff --git a/static/images/status/layer-transparent.png b/static/images/status/layer-transparent.png deleted file mode 100755 index 769c5f6a..00000000 Binary files a/static/images/status/layer-transparent.png and /dev/null differ diff --git a/static/images/status/layer-vector.png b/static/images/status/layer-vector.png deleted file mode 100755 index a455dcb0..00000000 Binary files a/static/images/status/layer-vector.png and /dev/null differ diff --git a/static/images/status/layer.png b/static/images/status/layer.png deleted file mode 100755 index a1a65c9f..00000000 Binary files a/static/images/status/layer.png and /dev/null differ diff --git a/static/images/status/layers-alignment-bottom.png b/static/images/status/layers-alignment-bottom.png deleted file mode 100755 index 17240991..00000000 Binary files a/static/images/status/layers-alignment-bottom.png and /dev/null differ diff --git a/static/images/status/layers-alignment-center.png b/static/images/status/layers-alignment-center.png deleted file mode 100755 index 1a2ad5de..00000000 Binary files a/static/images/status/layers-alignment-center.png and /dev/null differ diff --git a/static/images/status/layers-alignment-left.png b/static/images/status/layers-alignment-left.png deleted file mode 100755 index b96cf702..00000000 Binary files a/static/images/status/layers-alignment-left.png and /dev/null differ diff --git a/static/images/status/layers-alignment-middle.png b/static/images/status/layers-alignment-middle.png deleted file mode 100755 index a098f2e3..00000000 Binary files a/static/images/status/layers-alignment-middle.png and /dev/null differ diff --git a/static/images/status/layers-alignment-right.png b/static/images/status/layers-alignment-right.png deleted file mode 100755 index abbd5d1d..00000000 Binary files a/static/images/status/layers-alignment-right.png and /dev/null differ diff --git a/static/images/status/layers-alignment.png b/static/images/status/layers-alignment.png deleted file mode 100755 index 1b10483a..00000000 Binary files a/static/images/status/layers-alignment.png and /dev/null differ diff --git a/static/images/status/layers-arrange-back.png b/static/images/status/layers-arrange-back.png deleted file mode 100755 index 0effc3be..00000000 Binary files a/static/images/status/layers-arrange-back.png and /dev/null differ diff --git a/static/images/status/layers-arrange.png b/static/images/status/layers-arrange.png deleted file mode 100755 index 7bea99aa..00000000 Binary files a/static/images/status/layers-arrange.png and /dev/null differ diff --git a/static/images/status/layers-group.png b/static/images/status/layers-group.png deleted file mode 100755 index 6d090b53..00000000 Binary files a/static/images/status/layers-group.png and /dev/null differ diff --git a/static/images/status/layers-small.png b/static/images/status/layers-small.png deleted file mode 100755 index dfc76437..00000000 Binary files a/static/images/status/layers-small.png and /dev/null differ diff --git a/static/images/status/layers-stack-arrange-back.png b/static/images/status/layers-stack-arrange-back.png deleted file mode 100755 index 3e56ba24..00000000 Binary files a/static/images/status/layers-stack-arrange-back.png and /dev/null differ diff --git a/static/images/status/layers-stack-arrange.png b/static/images/status/layers-stack-arrange.png deleted file mode 100755 index db3286bb..00000000 Binary files a/static/images/status/layers-stack-arrange.png and /dev/null differ diff --git a/static/images/status/layers-stack.png b/static/images/status/layers-stack.png deleted file mode 100755 index 7267af85..00000000 Binary files a/static/images/status/layers-stack.png and /dev/null differ diff --git a/static/images/status/layers-ungroup.png b/static/images/status/layers-ungroup.png deleted file mode 100755 index f2563f92..00000000 Binary files a/static/images/status/layers-ungroup.png and /dev/null differ diff --git a/static/images/status/layers.png b/static/images/status/layers.png deleted file mode 100755 index c48733e7..00000000 Binary files a/static/images/status/layers.png and /dev/null differ diff --git a/static/images/status/layout-2-equal.png b/static/images/status/layout-2-equal.png deleted file mode 100755 index 8b9c6a96..00000000 Binary files a/static/images/status/layout-2-equal.png and /dev/null differ diff --git a/static/images/status/layout-2.png b/static/images/status/layout-2.png deleted file mode 100755 index 16a45c71..00000000 Binary files a/static/images/status/layout-2.png and /dev/null differ diff --git a/static/images/status/layout-3-mix.png b/static/images/status/layout-3-mix.png deleted file mode 100755 index 212f93ef..00000000 Binary files a/static/images/status/layout-3-mix.png and /dev/null differ diff --git a/static/images/status/layout-3.png b/static/images/status/layout-3.png deleted file mode 100755 index 110dabc3..00000000 Binary files a/static/images/status/layout-3.png and /dev/null differ diff --git a/static/images/status/layout-design.png b/static/images/status/layout-design.png deleted file mode 100755 index eeecea9d..00000000 Binary files a/static/images/status/layout-design.png and /dev/null differ diff --git a/static/images/status/layout-header-2-equal.png b/static/images/status/layout-header-2-equal.png deleted file mode 100755 index d157e39c..00000000 Binary files a/static/images/status/layout-header-2-equal.png and /dev/null differ diff --git a/static/images/status/layout-header-2.png b/static/images/status/layout-header-2.png deleted file mode 100755 index b2b36ba3..00000000 Binary files a/static/images/status/layout-header-2.png and /dev/null differ diff --git a/static/images/status/layout-header-3-mix.png b/static/images/status/layout-header-3-mix.png deleted file mode 100755 index 1965c918..00000000 Binary files a/static/images/status/layout-header-3-mix.png and /dev/null differ diff --git a/static/images/status/layout-header-3.png b/static/images/status/layout-header-3.png deleted file mode 100755 index 59bb0d01..00000000 Binary files a/static/images/status/layout-header-3.png and /dev/null differ diff --git a/static/images/status/layout-header.png b/static/images/status/layout-header.png deleted file mode 100755 index 10ffc3a5..00000000 Binary files a/static/images/status/layout-header.png and /dev/null differ diff --git a/static/images/status/layout-hf-2-equal.png b/static/images/status/layout-hf-2-equal.png deleted file mode 100755 index 18cc516b..00000000 Binary files a/static/images/status/layout-hf-2-equal.png and /dev/null differ diff --git a/static/images/status/layout-hf-2.png b/static/images/status/layout-hf-2.png deleted file mode 100755 index d374cd63..00000000 Binary files a/static/images/status/layout-hf-2.png and /dev/null differ diff --git a/static/images/status/layout-hf-3-mix.png b/static/images/status/layout-hf-3-mix.png deleted file mode 100755 index 5bd1ff6b..00000000 Binary files a/static/images/status/layout-hf-3-mix.png and /dev/null differ diff --git a/static/images/status/layout-hf-3.png b/static/images/status/layout-hf-3.png deleted file mode 100755 index 23fae283..00000000 Binary files a/static/images/status/layout-hf-3.png and /dev/null differ diff --git a/static/images/status/layout-hf.png b/static/images/status/layout-hf.png deleted file mode 100755 index b7f0beac..00000000 Binary files a/static/images/status/layout-hf.png and /dev/null differ diff --git a/static/images/status/layout-join-vertical.png b/static/images/status/layout-join-vertical.png deleted file mode 100755 index 080f83ac..00000000 Binary files a/static/images/status/layout-join-vertical.png and /dev/null differ diff --git a/static/images/status/layout-join.png b/static/images/status/layout-join.png deleted file mode 100755 index ae5840ff..00000000 Binary files a/static/images/status/layout-join.png and /dev/null differ diff --git a/static/images/status/layout-select-content.png b/static/images/status/layout-select-content.png deleted file mode 100755 index c31707fa..00000000 Binary files a/static/images/status/layout-select-content.png and /dev/null differ diff --git a/static/images/status/layout-select-footer.png b/static/images/status/layout-select-footer.png deleted file mode 100755 index 536497d0..00000000 Binary files a/static/images/status/layout-select-footer.png and /dev/null differ diff --git a/static/images/status/layout-select-sidebar.png b/static/images/status/layout-select-sidebar.png deleted file mode 100755 index bf68c47c..00000000 Binary files a/static/images/status/layout-select-sidebar.png and /dev/null differ diff --git a/static/images/status/layout-select.png b/static/images/status/layout-select.png deleted file mode 100755 index 050c0d1d..00000000 Binary files a/static/images/status/layout-select.png and /dev/null differ diff --git a/static/images/status/layout-split-vertical.png b/static/images/status/layout-split-vertical.png deleted file mode 100755 index afeb400f..00000000 Binary files a/static/images/status/layout-split-vertical.png and /dev/null differ diff --git a/static/images/status/layout-split.png b/static/images/status/layout-split.png deleted file mode 100755 index 52586c4c..00000000 Binary files a/static/images/status/layout-split.png and /dev/null differ diff --git a/static/images/status/layout.png b/static/images/status/layout.png deleted file mode 100755 index 74dd1d6d..00000000 Binary files a/static/images/status/layout.png and /dev/null differ diff --git a/static/images/status/leaf--arrow.png b/static/images/status/leaf--arrow.png deleted file mode 100755 index 309dc757..00000000 Binary files a/static/images/status/leaf--arrow.png and /dev/null differ diff --git a/static/images/status/leaf--exclamation.png b/static/images/status/leaf--exclamation.png deleted file mode 100755 index 85c18f9f..00000000 Binary files a/static/images/status/leaf--exclamation.png and /dev/null differ diff --git a/static/images/status/leaf--minus.png b/static/images/status/leaf--minus.png deleted file mode 100755 index d800d10c..00000000 Binary files a/static/images/status/leaf--minus.png and /dev/null differ diff --git a/static/images/status/leaf--pencil.png b/static/images/status/leaf--pencil.png deleted file mode 100755 index 9a66ebb0..00000000 Binary files a/static/images/status/leaf--pencil.png and /dev/null differ diff --git a/static/images/status/leaf--plus.png b/static/images/status/leaf--plus.png deleted file mode 100755 index ea9fa60a..00000000 Binary files a/static/images/status/leaf--plus.png and /dev/null differ diff --git a/static/images/status/leaf-wormhole.png b/static/images/status/leaf-wormhole.png deleted file mode 100755 index 9f42f3fa..00000000 Binary files a/static/images/status/leaf-wormhole.png and /dev/null differ diff --git a/static/images/status/leaf.png b/static/images/status/leaf.png deleted file mode 100755 index e79f406e..00000000 Binary files a/static/images/status/leaf.png and /dev/null differ diff --git a/static/images/status/license-key.png b/static/images/status/license-key.png deleted file mode 100755 index 9143cb29..00000000 Binary files a/static/images/status/license-key.png and /dev/null differ diff --git a/static/images/status/lifebuoy--arrow.png b/static/images/status/lifebuoy--arrow.png deleted file mode 100755 index a48876f9..00000000 Binary files a/static/images/status/lifebuoy--arrow.png and /dev/null differ diff --git a/static/images/status/lifebuoy--exclamation.png b/static/images/status/lifebuoy--exclamation.png deleted file mode 100755 index 655f7bad..00000000 Binary files a/static/images/status/lifebuoy--exclamation.png and /dev/null differ diff --git a/static/images/status/lifebuoy--minus.png b/static/images/status/lifebuoy--minus.png deleted file mode 100755 index 86082b3f..00000000 Binary files a/static/images/status/lifebuoy--minus.png and /dev/null differ diff --git a/static/images/status/lifebuoy--pencil.png b/static/images/status/lifebuoy--pencil.png deleted file mode 100755 index 027162d2..00000000 Binary files a/static/images/status/lifebuoy--pencil.png and /dev/null differ diff --git a/static/images/status/lifebuoy--plus.png b/static/images/status/lifebuoy--plus.png deleted file mode 100755 index 847f8cde..00000000 Binary files a/static/images/status/lifebuoy--plus.png and /dev/null differ diff --git a/static/images/status/lifebuoy.png b/static/images/status/lifebuoy.png deleted file mode 100755 index 2fb98bf5..00000000 Binary files a/static/images/status/lifebuoy.png and /dev/null differ diff --git a/static/images/status/light-bulb--arrow.png b/static/images/status/light-bulb--arrow.png deleted file mode 100755 index 8a30b91b..00000000 Binary files a/static/images/status/light-bulb--arrow.png and /dev/null differ diff --git a/static/images/status/light-bulb--exclamation.png b/static/images/status/light-bulb--exclamation.png deleted file mode 100755 index c5542f4a..00000000 Binary files a/static/images/status/light-bulb--exclamation.png and /dev/null differ diff --git a/static/images/status/light-bulb--minus.png b/static/images/status/light-bulb--minus.png deleted file mode 100755 index 324def8b..00000000 Binary files a/static/images/status/light-bulb--minus.png and /dev/null differ diff --git a/static/images/status/light-bulb--pencil.png b/static/images/status/light-bulb--pencil.png deleted file mode 100755 index 86db6e25..00000000 Binary files a/static/images/status/light-bulb--pencil.png and /dev/null differ diff --git a/static/images/status/light-bulb--plus.png b/static/images/status/light-bulb--plus.png deleted file mode 100755 index ab3993f1..00000000 Binary files a/static/images/status/light-bulb--plus.png and /dev/null differ diff --git a/static/images/status/light-bulb-code.png b/static/images/status/light-bulb-code.png deleted file mode 100755 index d95ab1b8..00000000 Binary files a/static/images/status/light-bulb-code.png and /dev/null differ diff --git a/static/images/status/light-bulb-off.png b/static/images/status/light-bulb-off.png deleted file mode 100755 index 385154b2..00000000 Binary files a/static/images/status/light-bulb-off.png and /dev/null differ diff --git a/static/images/status/light-bulb-small-off.png b/static/images/status/light-bulb-small-off.png deleted file mode 100755 index 18e1a202..00000000 Binary files a/static/images/status/light-bulb-small-off.png and /dev/null differ diff --git a/static/images/status/light-bulb-small.png b/static/images/status/light-bulb-small.png deleted file mode 100755 index f58afa5e..00000000 Binary files a/static/images/status/light-bulb-small.png and /dev/null differ diff --git a/static/images/status/light-bulb.png b/static/images/status/light-bulb.png deleted file mode 100755 index 845e1107..00000000 Binary files a/static/images/status/light-bulb.png and /dev/null differ diff --git a/static/images/status/lightning--arrow.png b/static/images/status/lightning--arrow.png deleted file mode 100755 index 9c02a32f..00000000 Binary files a/static/images/status/lightning--arrow.png and /dev/null differ diff --git a/static/images/status/lightning--exclamation.png b/static/images/status/lightning--exclamation.png deleted file mode 100755 index 501aaa10..00000000 Binary files a/static/images/status/lightning--exclamation.png and /dev/null differ diff --git a/static/images/status/lightning--minus.png b/static/images/status/lightning--minus.png deleted file mode 100755 index 7dcd3920..00000000 Binary files a/static/images/status/lightning--minus.png and /dev/null differ diff --git a/static/images/status/lightning--pencil.png b/static/images/status/lightning--pencil.png deleted file mode 100755 index 3f7f1090..00000000 Binary files a/static/images/status/lightning--pencil.png and /dev/null differ diff --git a/static/images/status/lightning--plus.png b/static/images/status/lightning--plus.png deleted file mode 100755 index 7072d03e..00000000 Binary files a/static/images/status/lightning--plus.png and /dev/null differ diff --git a/static/images/status/lightning-small.png b/static/images/status/lightning-small.png deleted file mode 100755 index f3b7e1bc..00000000 Binary files a/static/images/status/lightning-small.png and /dev/null differ diff --git a/static/images/status/lightning.png b/static/images/status/lightning.png deleted file mode 100755 index 1800099b..00000000 Binary files a/static/images/status/lightning.png and /dev/null differ diff --git a/static/images/status/locale.png b/static/images/status/locale.png deleted file mode 100755 index eaf23635..00000000 Binary files a/static/images/status/locale.png and /dev/null differ diff --git a/static/images/status/lock--arrow.png b/static/images/status/lock--arrow.png deleted file mode 100755 index 5f7e3568..00000000 Binary files a/static/images/status/lock--arrow.png and /dev/null differ diff --git a/static/images/status/lock--exclamation.png b/static/images/status/lock--exclamation.png deleted file mode 100755 index e1ca5fee..00000000 Binary files a/static/images/status/lock--exclamation.png and /dev/null differ diff --git a/static/images/status/lock--minus.png b/static/images/status/lock--minus.png deleted file mode 100755 index cf8b5cac..00000000 Binary files a/static/images/status/lock--minus.png and /dev/null differ diff --git a/static/images/status/lock--pencil.png b/static/images/status/lock--pencil.png deleted file mode 100755 index 6507fc7f..00000000 Binary files a/static/images/status/lock--pencil.png and /dev/null differ diff --git a/static/images/status/lock--plus.png b/static/images/status/lock--plus.png deleted file mode 100755 index df093bdd..00000000 Binary files a/static/images/status/lock--plus.png and /dev/null differ diff --git a/static/images/status/lock-small.png b/static/images/status/lock-small.png deleted file mode 100755 index 3d6f96d4..00000000 Binary files a/static/images/status/lock-small.png and /dev/null differ diff --git a/static/images/status/lock-unlock.png b/static/images/status/lock-unlock.png deleted file mode 100755 index a9994ae1..00000000 Binary files a/static/images/status/lock-unlock.png and /dev/null differ diff --git a/static/images/status/luggage--arrow.png b/static/images/status/luggage--arrow.png deleted file mode 100755 index 3d1148f6..00000000 Binary files a/static/images/status/luggage--arrow.png and /dev/null differ diff --git a/static/images/status/luggage--exclamation.png b/static/images/status/luggage--exclamation.png deleted file mode 100755 index 08b934c8..00000000 Binary files a/static/images/status/luggage--exclamation.png and /dev/null differ diff --git a/static/images/status/luggage--minus.png b/static/images/status/luggage--minus.png deleted file mode 100755 index e95858f0..00000000 Binary files a/static/images/status/luggage--minus.png and /dev/null differ diff --git a/static/images/status/luggage--pencil.png b/static/images/status/luggage--pencil.png deleted file mode 100755 index 6fbcfd15..00000000 Binary files a/static/images/status/luggage--pencil.png and /dev/null differ diff --git a/static/images/status/luggage--plus.png b/static/images/status/luggage--plus.png deleted file mode 100755 index b9f8a0a6..00000000 Binary files a/static/images/status/luggage--plus.png and /dev/null differ diff --git a/static/images/status/luggage-tag.png b/static/images/status/luggage-tag.png deleted file mode 100755 index 4ff7bb6a..00000000 Binary files a/static/images/status/luggage-tag.png and /dev/null differ diff --git a/static/images/status/luggage.png b/static/images/status/luggage.png deleted file mode 100755 index 4ec9180d..00000000 Binary files a/static/images/status/luggage.png and /dev/null differ diff --git a/static/images/status/magnet--arrow.png b/static/images/status/magnet--arrow.png deleted file mode 100755 index 905b8f6d..00000000 Binary files a/static/images/status/magnet--arrow.png and /dev/null differ diff --git a/static/images/status/magnet--exclamation.png b/static/images/status/magnet--exclamation.png deleted file mode 100755 index 7813a9f4..00000000 Binary files a/static/images/status/magnet--exclamation.png and /dev/null differ diff --git a/static/images/status/magnet--minus.png b/static/images/status/magnet--minus.png deleted file mode 100755 index 7d406fc1..00000000 Binary files a/static/images/status/magnet--minus.png and /dev/null differ diff --git a/static/images/status/magnet--pencil.png b/static/images/status/magnet--pencil.png deleted file mode 100755 index 7e005b74..00000000 Binary files a/static/images/status/magnet--pencil.png and /dev/null differ diff --git a/static/images/status/magnet--plus.png b/static/images/status/magnet--plus.png deleted file mode 100755 index 95d77b2d..00000000 Binary files a/static/images/status/magnet--plus.png and /dev/null differ diff --git a/static/images/status/magnet-blue.png b/static/images/status/magnet-blue.png deleted file mode 100755 index ca433e47..00000000 Binary files a/static/images/status/magnet-blue.png and /dev/null differ diff --git a/static/images/status/magnet-small.png b/static/images/status/magnet-small.png deleted file mode 100755 index 765ed792..00000000 Binary files a/static/images/status/magnet-small.png and /dev/null differ diff --git a/static/images/status/magnet.png b/static/images/status/magnet.png deleted file mode 100755 index 33ee04a2..00000000 Binary files a/static/images/status/magnet.png and /dev/null differ diff --git a/static/images/status/magnifier--arrow.png b/static/images/status/magnifier--arrow.png deleted file mode 100755 index 2df6c519..00000000 Binary files a/static/images/status/magnifier--arrow.png and /dev/null differ diff --git a/static/images/status/magnifier--exclamation.png b/static/images/status/magnifier--exclamation.png deleted file mode 100755 index 83e50a0c..00000000 Binary files a/static/images/status/magnifier--exclamation.png and /dev/null differ diff --git a/static/images/status/magnifier--minus.png b/static/images/status/magnifier--minus.png deleted file mode 100755 index 5e0b3883..00000000 Binary files a/static/images/status/magnifier--minus.png and /dev/null differ diff --git a/static/images/status/magnifier--pencil.png b/static/images/status/magnifier--pencil.png deleted file mode 100755 index a83efa5a..00000000 Binary files a/static/images/status/magnifier--pencil.png and /dev/null differ diff --git a/static/images/status/magnifier--plus.png b/static/images/status/magnifier--plus.png deleted file mode 100755 index 87a9cd2a..00000000 Binary files a/static/images/status/magnifier--plus.png and /dev/null differ diff --git a/static/images/status/magnifier-history-left.png b/static/images/status/magnifier-history-left.png deleted file mode 100755 index 14c34c3f..00000000 Binary files a/static/images/status/magnifier-history-left.png and /dev/null differ diff --git a/static/images/status/magnifier-history.png b/static/images/status/magnifier-history.png deleted file mode 100755 index 2cfa1de4..00000000 Binary files a/static/images/status/magnifier-history.png and /dev/null differ diff --git a/static/images/status/magnifier-left.png b/static/images/status/magnifier-left.png deleted file mode 100755 index b4b23129..00000000 Binary files a/static/images/status/magnifier-left.png and /dev/null differ diff --git a/static/images/status/magnifier-medium-left.png b/static/images/status/magnifier-medium-left.png deleted file mode 100755 index 3747c976..00000000 Binary files a/static/images/status/magnifier-medium-left.png and /dev/null differ diff --git a/static/images/status/magnifier-medium.png b/static/images/status/magnifier-medium.png deleted file mode 100755 index a35215f1..00000000 Binary files a/static/images/status/magnifier-medium.png and /dev/null differ diff --git a/static/images/status/magnifier-small.png b/static/images/status/magnifier-small.png deleted file mode 100755 index 07a3717f..00000000 Binary files a/static/images/status/magnifier-small.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom-actual-equal.png b/static/images/status/magnifier-zoom-actual-equal.png deleted file mode 100755 index 7f81ac1e..00000000 Binary files a/static/images/status/magnifier-zoom-actual-equal.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom-actual.png b/static/images/status/magnifier-zoom-actual.png deleted file mode 100755 index ecd21731..00000000 Binary files a/static/images/status/magnifier-zoom-actual.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom-fit.png b/static/images/status/magnifier-zoom-fit.png deleted file mode 100755 index a052429e..00000000 Binary files a/static/images/status/magnifier-zoom-fit.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom-in.png b/static/images/status/magnifier-zoom-in.png deleted file mode 100755 index 37f4ef9b..00000000 Binary files a/static/images/status/magnifier-zoom-in.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom-out.png b/static/images/status/magnifier-zoom-out.png deleted file mode 100755 index 4fa98f00..00000000 Binary files a/static/images/status/magnifier-zoom-out.png and /dev/null differ diff --git a/static/images/status/magnifier-zoom.png b/static/images/status/magnifier-zoom.png deleted file mode 100755 index 8fc2189d..00000000 Binary files a/static/images/status/magnifier-zoom.png and /dev/null differ diff --git a/static/images/status/magnifier.png b/static/images/status/magnifier.png deleted file mode 100755 index 7a5ae62e..00000000 Binary files a/static/images/status/magnifier.png and /dev/null differ diff --git a/static/images/status/mahjong--arrow.png b/static/images/status/mahjong--arrow.png deleted file mode 100755 index db50868f..00000000 Binary files a/static/images/status/mahjong--arrow.png and /dev/null differ diff --git a/static/images/status/mahjong--exclamation.png b/static/images/status/mahjong--exclamation.png deleted file mode 100755 index b3aea55a..00000000 Binary files a/static/images/status/mahjong--exclamation.png and /dev/null differ diff --git a/static/images/status/mahjong--minus.png b/static/images/status/mahjong--minus.png deleted file mode 100755 index f519ceab..00000000 Binary files a/static/images/status/mahjong--minus.png and /dev/null differ diff --git a/static/images/status/mahjong--pencil.png b/static/images/status/mahjong--pencil.png deleted file mode 100755 index 8f7ca2cc..00000000 Binary files a/static/images/status/mahjong--pencil.png and /dev/null differ diff --git a/static/images/status/mahjong--plus.png b/static/images/status/mahjong--plus.png deleted file mode 100755 index 34be7265..00000000 Binary files a/static/images/status/mahjong--plus.png and /dev/null differ diff --git a/static/images/status/mahjong-white.png b/static/images/status/mahjong-white.png deleted file mode 100755 index a0a811bd..00000000 Binary files a/static/images/status/mahjong-white.png and /dev/null differ diff --git a/static/images/status/mahjong.png b/static/images/status/mahjong.png deleted file mode 100755 index bb8e4c5d..00000000 Binary files a/static/images/status/mahjong.png and /dev/null differ diff --git a/static/images/status/mail--arrow.png b/static/images/status/mail--arrow.png deleted file mode 100755 index 0fd4d5b0..00000000 Binary files a/static/images/status/mail--arrow.png and /dev/null differ diff --git a/static/images/status/mail--exclamation.png b/static/images/status/mail--exclamation.png deleted file mode 100755 index a33c0cad..00000000 Binary files a/static/images/status/mail--exclamation.png and /dev/null differ diff --git a/static/images/status/mail--minus.png b/static/images/status/mail--minus.png deleted file mode 100755 index 844553dd..00000000 Binary files a/static/images/status/mail--minus.png and /dev/null differ diff --git a/static/images/status/mail--pencil.png b/static/images/status/mail--pencil.png deleted file mode 100755 index 4dad6dc9..00000000 Binary files a/static/images/status/mail--pencil.png and /dev/null differ diff --git a/static/images/status/mail--plus.png b/static/images/status/mail--plus.png deleted file mode 100755 index 22ab7255..00000000 Binary files a/static/images/status/mail--plus.png and /dev/null differ diff --git a/static/images/status/mail-open-document-music-playlist.png b/static/images/status/mail-open-document-music-playlist.png deleted file mode 100755 index 853d4a80..00000000 Binary files a/static/images/status/mail-open-document-music-playlist.png and /dev/null differ diff --git a/static/images/status/mail-open-document-music.png b/static/images/status/mail-open-document-music.png deleted file mode 100755 index 4133e5c6..00000000 Binary files a/static/images/status/mail-open-document-music.png and /dev/null differ diff --git a/static/images/status/mail-open-document-text.png b/static/images/status/mail-open-document-text.png deleted file mode 100755 index abfaf825..00000000 Binary files a/static/images/status/mail-open-document-text.png and /dev/null differ diff --git a/static/images/status/mail-open-document.png b/static/images/status/mail-open-document.png deleted file mode 100755 index 31dd3dec..00000000 Binary files a/static/images/status/mail-open-document.png and /dev/null differ diff --git a/static/images/status/mail-open-film.png b/static/images/status/mail-open-film.png deleted file mode 100755 index 21814e0f..00000000 Binary files a/static/images/status/mail-open-film.png and /dev/null differ diff --git a/static/images/status/mail-open-image.png b/static/images/status/mail-open-image.png deleted file mode 100755 index 7450e9d7..00000000 Binary files a/static/images/status/mail-open-image.png and /dev/null differ diff --git a/static/images/status/mail-open-table.png b/static/images/status/mail-open-table.png deleted file mode 100755 index f4ab2f56..00000000 Binary files a/static/images/status/mail-open-table.png and /dev/null differ diff --git a/static/images/status/mail-open.png b/static/images/status/mail-open.png deleted file mode 100755 index 159322cf..00000000 Binary files a/static/images/status/mail-open.png and /dev/null differ diff --git a/static/images/status/mail-small.png b/static/images/status/mail-small.png deleted file mode 100755 index 3d5f5957..00000000 Binary files a/static/images/status/mail-small.png and /dev/null differ diff --git a/static/images/status/mail.png b/static/images/status/mail.png deleted file mode 100755 index e708416d..00000000 Binary files a/static/images/status/mail.png and /dev/null differ diff --git a/static/images/status/mails-stack.png b/static/images/status/mails-stack.png deleted file mode 100755 index d54d0c60..00000000 Binary files a/static/images/status/mails-stack.png and /dev/null differ diff --git a/static/images/status/mails.png b/static/images/status/mails.png deleted file mode 100755 index 17d3221f..00000000 Binary files a/static/images/status/mails.png and /dev/null differ diff --git a/static/images/status/map--arrow.png b/static/images/status/map--arrow.png deleted file mode 100755 index 461833c7..00000000 Binary files a/static/images/status/map--arrow.png and /dev/null differ diff --git a/static/images/status/map--exclamation.png b/static/images/status/map--exclamation.png deleted file mode 100755 index 2c9d3aa8..00000000 Binary files a/static/images/status/map--exclamation.png and /dev/null differ diff --git a/static/images/status/map--minus.png b/static/images/status/map--minus.png deleted file mode 100755 index bc25f176..00000000 Binary files a/static/images/status/map--minus.png and /dev/null differ diff --git a/static/images/status/map--pencil.png b/static/images/status/map--pencil.png deleted file mode 100755 index 8d8ff8e1..00000000 Binary files a/static/images/status/map--pencil.png and /dev/null differ diff --git a/static/images/status/map--plus.png b/static/images/status/map--plus.png deleted file mode 100755 index 8505cd15..00000000 Binary files a/static/images/status/map--plus.png and /dev/null differ diff --git a/static/images/status/map-pin.png b/static/images/status/map-pin.png deleted file mode 100755 index 7c4d2551..00000000 Binary files a/static/images/status/map-pin.png and /dev/null differ diff --git a/static/images/status/map.png b/static/images/status/map.png deleted file mode 100755 index 0bad54e5..00000000 Binary files a/static/images/status/map.png and /dev/null differ diff --git a/static/images/status/maps-stack.png b/static/images/status/maps-stack.png deleted file mode 100755 index 7607d905..00000000 Binary files a/static/images/status/maps-stack.png and /dev/null differ diff --git a/static/images/status/maps.png b/static/images/status/maps.png deleted file mode 100755 index 27646209..00000000 Binary files a/static/images/status/maps.png and /dev/null differ diff --git a/static/images/status/marker--arrow.png b/static/images/status/marker--arrow.png deleted file mode 100755 index 6a7bce65..00000000 Binary files a/static/images/status/marker--arrow.png and /dev/null differ diff --git a/static/images/status/marker--exclamation.png b/static/images/status/marker--exclamation.png deleted file mode 100755 index e131af6f..00000000 Binary files a/static/images/status/marker--exclamation.png and /dev/null differ diff --git a/static/images/status/marker--minus.png b/static/images/status/marker--minus.png deleted file mode 100755 index 6210c1e8..00000000 Binary files a/static/images/status/marker--minus.png and /dev/null differ diff --git a/static/images/status/marker--pencil.png b/static/images/status/marker--pencil.png deleted file mode 100755 index 5fad0386..00000000 Binary files a/static/images/status/marker--pencil.png and /dev/null differ diff --git a/static/images/status/marker--plus.png b/static/images/status/marker--plus.png deleted file mode 100755 index eec9426e..00000000 Binary files a/static/images/status/marker--plus.png and /dev/null differ diff --git a/static/images/status/marker.png b/static/images/status/marker.png deleted file mode 100755 index 20a8d212..00000000 Binary files a/static/images/status/marker.png and /dev/null differ diff --git a/static/images/status/mask.png b/static/images/status/mask.png deleted file mode 100755 index eb601ca6..00000000 Binary files a/static/images/status/mask.png and /dev/null differ diff --git a/static/images/status/medal--arrow.png b/static/images/status/medal--arrow.png deleted file mode 100755 index 29fbbda2..00000000 Binary files a/static/images/status/medal--arrow.png and /dev/null differ diff --git a/static/images/status/medal--exclamation.png b/static/images/status/medal--exclamation.png deleted file mode 100755 index 0c58eb8a..00000000 Binary files a/static/images/status/medal--exclamation.png and /dev/null differ diff --git a/static/images/status/medal--minus.png b/static/images/status/medal--minus.png deleted file mode 100755 index 95fde750..00000000 Binary files a/static/images/status/medal--minus.png and /dev/null differ diff --git a/static/images/status/medal--pencil.png b/static/images/status/medal--pencil.png deleted file mode 100755 index d2c6e957..00000000 Binary files a/static/images/status/medal--pencil.png and /dev/null differ diff --git a/static/images/status/medal--plus.png b/static/images/status/medal--plus.png deleted file mode 100755 index 1ff8ebe6..00000000 Binary files a/static/images/status/medal--plus.png and /dev/null differ diff --git a/static/images/status/medal-bronze-red.png b/static/images/status/medal-bronze-red.png deleted file mode 100755 index 9a537086..00000000 Binary files a/static/images/status/medal-bronze-red.png and /dev/null differ diff --git a/static/images/status/medal-bronze.png b/static/images/status/medal-bronze.png deleted file mode 100755 index 3f3ff992..00000000 Binary files a/static/images/status/medal-bronze.png and /dev/null differ diff --git a/static/images/status/medal-red.png b/static/images/status/medal-red.png deleted file mode 100755 index 3717d725..00000000 Binary files a/static/images/status/medal-red.png and /dev/null differ diff --git a/static/images/status/medal-silver-red.png b/static/images/status/medal-silver-red.png deleted file mode 100755 index a096d8f9..00000000 Binary files a/static/images/status/medal-silver-red.png and /dev/null differ diff --git a/static/images/status/medal-silver.png b/static/images/status/medal-silver.png deleted file mode 100755 index c578e3ad..00000000 Binary files a/static/images/status/medal-silver.png and /dev/null differ diff --git a/static/images/status/medal.png b/static/images/status/medal.png deleted file mode 100755 index 2f82d8b1..00000000 Binary files a/static/images/status/medal.png and /dev/null differ diff --git a/static/images/status/media-player--arrow.png b/static/images/status/media-player--arrow.png deleted file mode 100755 index e555c333..00000000 Binary files a/static/images/status/media-player--arrow.png and /dev/null differ diff --git a/static/images/status/media-player--exclamation.png b/static/images/status/media-player--exclamation.png deleted file mode 100755 index 33e4f071..00000000 Binary files a/static/images/status/media-player--exclamation.png and /dev/null differ diff --git a/static/images/status/media-player--minus.png b/static/images/status/media-player--minus.png deleted file mode 100755 index 9848ae8c..00000000 Binary files a/static/images/status/media-player--minus.png and /dev/null differ diff --git a/static/images/status/media-player--pencil.png b/static/images/status/media-player--pencil.png deleted file mode 100755 index 9cbe9ca8..00000000 Binary files a/static/images/status/media-player--pencil.png and /dev/null differ diff --git a/static/images/status/media-player--plus.png b/static/images/status/media-player--plus.png deleted file mode 100755 index 5c4f6911..00000000 Binary files a/static/images/status/media-player--plus.png and /dev/null differ diff --git a/static/images/status/media-player-black.png b/static/images/status/media-player-black.png deleted file mode 100755 index 4dc60114..00000000 Binary files a/static/images/status/media-player-black.png and /dev/null differ diff --git a/static/images/status/media-player-cast.png b/static/images/status/media-player-cast.png deleted file mode 100755 index 02432a4b..00000000 Binary files a/static/images/status/media-player-cast.png and /dev/null differ diff --git a/static/images/status/media-player-medium-black.png b/static/images/status/media-player-medium-black.png deleted file mode 100755 index 95d593b2..00000000 Binary files a/static/images/status/media-player-medium-black.png and /dev/null differ diff --git a/static/images/status/media-player-medium-blue.png b/static/images/status/media-player-medium-blue.png deleted file mode 100755 index 9733f49e..00000000 Binary files a/static/images/status/media-player-medium-blue.png and /dev/null differ diff --git a/static/images/status/media-player-medium-green.png b/static/images/status/media-player-medium-green.png deleted file mode 100755 index d5bd5c38..00000000 Binary files a/static/images/status/media-player-medium-green.png and /dev/null differ diff --git a/static/images/status/media-player-medium-orange.png b/static/images/status/media-player-medium-orange.png deleted file mode 100755 index 1d0ed22e..00000000 Binary files a/static/images/status/media-player-medium-orange.png and /dev/null differ diff --git a/static/images/status/media-player-medium-pink.png b/static/images/status/media-player-medium-pink.png deleted file mode 100755 index 74ba3018..00000000 Binary files a/static/images/status/media-player-medium-pink.png and /dev/null differ diff --git a/static/images/status/media-player-medium-purple.png b/static/images/status/media-player-medium-purple.png deleted file mode 100755 index abbfaf89..00000000 Binary files a/static/images/status/media-player-medium-purple.png and /dev/null differ diff --git a/static/images/status/media-player-medium-red.png b/static/images/status/media-player-medium-red.png deleted file mode 100755 index 25a3b1d7..00000000 Binary files a/static/images/status/media-player-medium-red.png and /dev/null differ diff --git a/static/images/status/media-player-medium-yellow.png b/static/images/status/media-player-medium-yellow.png deleted file mode 100755 index f4bae782..00000000 Binary files a/static/images/status/media-player-medium-yellow.png and /dev/null differ diff --git a/static/images/status/media-player-medium.png b/static/images/status/media-player-medium.png deleted file mode 100755 index df23fc10..00000000 Binary files a/static/images/status/media-player-medium.png and /dev/null differ diff --git a/static/images/status/media-player-phone-horizontal.png b/static/images/status/media-player-phone-horizontal.png deleted file mode 100755 index 62582729..00000000 Binary files a/static/images/status/media-player-phone-horizontal.png and /dev/null differ diff --git a/static/images/status/media-player-phone.png b/static/images/status/media-player-phone.png deleted file mode 100755 index 0ce94fed..00000000 Binary files a/static/images/status/media-player-phone.png and /dev/null differ diff --git a/static/images/status/media-player-small-blue.png b/static/images/status/media-player-small-blue.png deleted file mode 100755 index 4c8d167d..00000000 Binary files a/static/images/status/media-player-small-blue.png and /dev/null differ diff --git a/static/images/status/media-player-small-green.png b/static/images/status/media-player-small-green.png deleted file mode 100755 index 21c390ca..00000000 Binary files a/static/images/status/media-player-small-green.png and /dev/null differ diff --git a/static/images/status/media-player-small-pink.png b/static/images/status/media-player-small-pink.png deleted file mode 100755 index f88fc801..00000000 Binary files a/static/images/status/media-player-small-pink.png and /dev/null differ diff --git a/static/images/status/media-player-small-red.png b/static/images/status/media-player-small-red.png deleted file mode 100755 index 0edc61bc..00000000 Binary files a/static/images/status/media-player-small-red.png and /dev/null differ diff --git a/static/images/status/media-player-small.png b/static/images/status/media-player-small.png deleted file mode 100755 index 566c9e19..00000000 Binary files a/static/images/status/media-player-small.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall-black.png b/static/images/status/media-player-xsmall-black.png deleted file mode 100755 index 53468de8..00000000 Binary files a/static/images/status/media-player-xsmall-black.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall-blue.png b/static/images/status/media-player-xsmall-blue.png deleted file mode 100755 index d926b5e4..00000000 Binary files a/static/images/status/media-player-xsmall-blue.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall-green.png b/static/images/status/media-player-xsmall-green.png deleted file mode 100755 index 7cdcf48d..00000000 Binary files a/static/images/status/media-player-xsmall-green.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall-pink.png b/static/images/status/media-player-xsmall-pink.png deleted file mode 100755 index 697e2ecb..00000000 Binary files a/static/images/status/media-player-xsmall-pink.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall-polish.png b/static/images/status/media-player-xsmall-polish.png deleted file mode 100755 index d28448bc..00000000 Binary files a/static/images/status/media-player-xsmall-polish.png and /dev/null differ diff --git a/static/images/status/media-player-xsmall.png b/static/images/status/media-player-xsmall.png deleted file mode 100755 index 047d8a60..00000000 Binary files a/static/images/status/media-player-xsmall.png and /dev/null differ diff --git a/static/images/status/media-player.png b/static/images/status/media-player.png deleted file mode 100755 index fea250d0..00000000 Binary files a/static/images/status/media-player.png and /dev/null differ diff --git a/static/images/status/media-players.png b/static/images/status/media-players.png deleted file mode 100755 index 2944d182..00000000 Binary files a/static/images/status/media-players.png and /dev/null differ diff --git a/static/images/status/megaphone--arrow.png b/static/images/status/megaphone--arrow.png deleted file mode 100755 index 7a198c8d..00000000 Binary files a/static/images/status/megaphone--arrow.png and /dev/null differ diff --git a/static/images/status/megaphone--exclamation.png b/static/images/status/megaphone--exclamation.png deleted file mode 100755 index daae0a7d..00000000 Binary files a/static/images/status/megaphone--exclamation.png and /dev/null differ diff --git a/static/images/status/megaphone--minus.png b/static/images/status/megaphone--minus.png deleted file mode 100755 index 0234d8fc..00000000 Binary files a/static/images/status/megaphone--minus.png and /dev/null differ diff --git a/static/images/status/megaphone--pencil.png b/static/images/status/megaphone--pencil.png deleted file mode 100755 index ef6d79fa..00000000 Binary files a/static/images/status/megaphone--pencil.png and /dev/null differ diff --git a/static/images/status/megaphone--plus.png b/static/images/status/megaphone--plus.png deleted file mode 100755 index c5771ef2..00000000 Binary files a/static/images/status/megaphone--plus.png and /dev/null differ diff --git a/static/images/status/megaphone.png b/static/images/status/megaphone.png deleted file mode 100755 index d1dacfa1..00000000 Binary files a/static/images/status/megaphone.png and /dev/null differ diff --git a/static/images/status/memory.png b/static/images/status/memory.png deleted file mode 100755 index 4c71a247..00000000 Binary files a/static/images/status/memory.png and /dev/null differ diff --git a/static/images/status/metronome--arrow.png b/static/images/status/metronome--arrow.png deleted file mode 100755 index 59d005df..00000000 Binary files a/static/images/status/metronome--arrow.png and /dev/null differ diff --git a/static/images/status/metronome--exclamation.png b/static/images/status/metronome--exclamation.png deleted file mode 100755 index a9b911aa..00000000 Binary files a/static/images/status/metronome--exclamation.png and /dev/null differ diff --git a/static/images/status/metronome--minus.png b/static/images/status/metronome--minus.png deleted file mode 100755 index eef72f2c..00000000 Binary files a/static/images/status/metronome--minus.png and /dev/null differ diff --git a/static/images/status/metronome--pencil.png b/static/images/status/metronome--pencil.png deleted file mode 100755 index a7a49e1e..00000000 Binary files a/static/images/status/metronome--pencil.png and /dev/null differ diff --git a/static/images/status/metronome--plus.png b/static/images/status/metronome--plus.png deleted file mode 100755 index e67ddc97..00000000 Binary files a/static/images/status/metronome--plus.png and /dev/null differ diff --git a/static/images/status/metronome.png b/static/images/status/metronome.png deleted file mode 100755 index 5b9fa259..00000000 Binary files a/static/images/status/metronome.png and /dev/null differ diff --git a/static/images/status/microformats.png b/static/images/status/microformats.png deleted file mode 100755 index 2a4e1fec..00000000 Binary files a/static/images/status/microformats.png and /dev/null differ diff --git a/static/images/status/microphone--arrow.png b/static/images/status/microphone--arrow.png deleted file mode 100755 index 0c8bd0da..00000000 Binary files a/static/images/status/microphone--arrow.png and /dev/null differ diff --git a/static/images/status/microphone--exclamation.png b/static/images/status/microphone--exclamation.png deleted file mode 100755 index 48df58d2..00000000 Binary files a/static/images/status/microphone--exclamation.png and /dev/null differ diff --git a/static/images/status/microphone--minus.png b/static/images/status/microphone--minus.png deleted file mode 100755 index 739c5938..00000000 Binary files a/static/images/status/microphone--minus.png and /dev/null differ diff --git a/static/images/status/microphone--pencil.png b/static/images/status/microphone--pencil.png deleted file mode 100755 index 79f3a4a8..00000000 Binary files a/static/images/status/microphone--pencil.png and /dev/null differ diff --git a/static/images/status/microphone--plus.png b/static/images/status/microphone--plus.png deleted file mode 100755 index be293807..00000000 Binary files a/static/images/status/microphone--plus.png and /dev/null differ diff --git a/static/images/status/microphone.png b/static/images/status/microphone.png deleted file mode 100755 index 3f23ad9e..00000000 Binary files a/static/images/status/microphone.png and /dev/null differ diff --git a/static/images/status/minus-button.png b/static/images/status/minus-button.png deleted file mode 100755 index 6dc019a6..00000000 Binary files a/static/images/status/minus-button.png and /dev/null differ diff --git a/static/images/status/minus-circle-frame.png b/static/images/status/minus-circle-frame.png deleted file mode 100755 index c3a76ad1..00000000 Binary files a/static/images/status/minus-circle-frame.png and /dev/null differ diff --git a/static/images/status/minus-circle.png b/static/images/status/minus-circle.png deleted file mode 100755 index 0cd0ca2b..00000000 Binary files a/static/images/status/minus-circle.png and /dev/null differ diff --git a/static/images/status/minus-octagon-frame.png b/static/images/status/minus-octagon-frame.png deleted file mode 100755 index 84e0056c..00000000 Binary files a/static/images/status/minus-octagon-frame.png and /dev/null differ diff --git a/static/images/status/minus-octagon.png b/static/images/status/minus-octagon.png deleted file mode 100755 index e8c9d238..00000000 Binary files a/static/images/status/minus-octagon.png and /dev/null differ diff --git a/static/images/status/minus-shield.png b/static/images/status/minus-shield.png deleted file mode 100755 index 394c32d4..00000000 Binary files a/static/images/status/minus-shield.png and /dev/null differ diff --git a/static/images/status/minus-small-circle.png b/static/images/status/minus-small-circle.png deleted file mode 100755 index 63d92eb6..00000000 Binary files a/static/images/status/minus-small-circle.png and /dev/null differ diff --git a/static/images/status/minus-small-white.png b/static/images/status/minus-small-white.png deleted file mode 100755 index c923d387..00000000 Binary files a/static/images/status/minus-small-white.png and /dev/null differ diff --git a/static/images/status/minus-small.png b/static/images/status/minus-small.png deleted file mode 100755 index b4476db4..00000000 Binary files a/static/images/status/minus-small.png and /dev/null differ diff --git a/static/images/status/minus-white.png b/static/images/status/minus-white.png deleted file mode 100755 index 8efd5d33..00000000 Binary files a/static/images/status/minus-white.png and /dev/null differ diff --git a/static/images/status/minus.png b/static/images/status/minus.png deleted file mode 100755 index f953427f..00000000 Binary files a/static/images/status/minus.png and /dev/null differ diff --git a/static/images/status/mobile-phone--arrow.png b/static/images/status/mobile-phone--arrow.png deleted file mode 100755 index 778a03a3..00000000 Binary files a/static/images/status/mobile-phone--arrow.png and /dev/null differ diff --git a/static/images/status/mobile-phone--exclamation.png b/static/images/status/mobile-phone--exclamation.png deleted file mode 100755 index 2e549460..00000000 Binary files a/static/images/status/mobile-phone--exclamation.png and /dev/null differ diff --git a/static/images/status/mobile-phone--minus.png b/static/images/status/mobile-phone--minus.png deleted file mode 100755 index 33df9a7d..00000000 Binary files a/static/images/status/mobile-phone--minus.png and /dev/null differ diff --git a/static/images/status/mobile-phone--pencil.png b/static/images/status/mobile-phone--pencil.png deleted file mode 100755 index 400b19a6..00000000 Binary files a/static/images/status/mobile-phone--pencil.png and /dev/null differ diff --git a/static/images/status/mobile-phone--plus.png b/static/images/status/mobile-phone--plus.png deleted file mode 100755 index 698e4db4..00000000 Binary files a/static/images/status/mobile-phone--plus.png and /dev/null differ diff --git a/static/images/status/mobile-phone-cast.png b/static/images/status/mobile-phone-cast.png deleted file mode 100755 index 0f3178dd..00000000 Binary files a/static/images/status/mobile-phone-cast.png and /dev/null differ diff --git a/static/images/status/mobile-phone-off.png b/static/images/status/mobile-phone-off.png deleted file mode 100755 index e1615f42..00000000 Binary files a/static/images/status/mobile-phone-off.png and /dev/null differ diff --git a/static/images/status/mobile-phone.png b/static/images/status/mobile-phone.png deleted file mode 100755 index 55f8b311..00000000 Binary files a/static/images/status/mobile-phone.png and /dev/null differ diff --git a/static/images/status/money--arrow.png b/static/images/status/money--arrow.png deleted file mode 100755 index 080c1107..00000000 Binary files a/static/images/status/money--arrow.png and /dev/null differ diff --git a/static/images/status/money--exclamation.png b/static/images/status/money--exclamation.png deleted file mode 100755 index 8ca62059..00000000 Binary files a/static/images/status/money--exclamation.png and /dev/null differ diff --git a/static/images/status/money--minus.png b/static/images/status/money--minus.png deleted file mode 100755 index 02185ffd..00000000 Binary files a/static/images/status/money--minus.png and /dev/null differ diff --git a/static/images/status/money--pencil.png b/static/images/status/money--pencil.png deleted file mode 100755 index 5a3756c8..00000000 Binary files a/static/images/status/money--pencil.png and /dev/null differ diff --git a/static/images/status/money--plus.png b/static/images/status/money--plus.png deleted file mode 100755 index d29e0cec..00000000 Binary files a/static/images/status/money--plus.png and /dev/null differ diff --git a/static/images/status/money-coin.png b/static/images/status/money-coin.png deleted file mode 100755 index 45633a70..00000000 Binary files a/static/images/status/money-coin.png and /dev/null differ diff --git a/static/images/status/money.png b/static/images/status/money.png deleted file mode 100755 index 940b1db8..00000000 Binary files a/static/images/status/money.png and /dev/null differ diff --git a/static/images/status/monitor--arrow.png b/static/images/status/monitor--arrow.png deleted file mode 100755 index e24b23e1..00000000 Binary files a/static/images/status/monitor--arrow.png and /dev/null differ diff --git a/static/images/status/monitor--exclamation.png b/static/images/status/monitor--exclamation.png deleted file mode 100755 index 456f4f5a..00000000 Binary files a/static/images/status/monitor--exclamation.png and /dev/null differ diff --git a/static/images/status/monitor--minus.png b/static/images/status/monitor--minus.png deleted file mode 100755 index 506815b3..00000000 Binary files a/static/images/status/monitor--minus.png and /dev/null differ diff --git a/static/images/status/monitor--pencil.png b/static/images/status/monitor--pencil.png deleted file mode 100755 index 5ce6a5da..00000000 Binary files a/static/images/status/monitor--pencil.png and /dev/null differ diff --git a/static/images/status/monitor--plus.png b/static/images/status/monitor--plus.png deleted file mode 100755 index 2fb345bb..00000000 Binary files a/static/images/status/monitor--plus.png and /dev/null differ diff --git a/static/images/status/monitor-cast.png b/static/images/status/monitor-cast.png deleted file mode 100755 index 39c2a29e..00000000 Binary files a/static/images/status/monitor-cast.png and /dev/null differ diff --git a/static/images/status/monitor-image.png b/static/images/status/monitor-image.png deleted file mode 100755 index f4811ef4..00000000 Binary files a/static/images/status/monitor-image.png and /dev/null differ diff --git a/static/images/status/monitor-network.png b/static/images/status/monitor-network.png deleted file mode 100755 index fdd40e27..00000000 Binary files a/static/images/status/monitor-network.png and /dev/null differ diff --git a/static/images/status/monitor-off.png b/static/images/status/monitor-off.png deleted file mode 100755 index 47eb4aba..00000000 Binary files a/static/images/status/monitor-off.png and /dev/null differ diff --git a/static/images/status/monitor-screensaver.png b/static/images/status/monitor-screensaver.png deleted file mode 100755 index dd505e67..00000000 Binary files a/static/images/status/monitor-screensaver.png and /dev/null differ diff --git a/static/images/status/monitor-sidebar.png b/static/images/status/monitor-sidebar.png deleted file mode 100755 index 634eec1a..00000000 Binary files a/static/images/status/monitor-sidebar.png and /dev/null differ diff --git a/static/images/status/monitor-wallpaper.png b/static/images/status/monitor-wallpaper.png deleted file mode 100755 index e60d39cd..00000000 Binary files a/static/images/status/monitor-wallpaper.png and /dev/null differ diff --git a/static/images/status/monitor-window-3d.png b/static/images/status/monitor-window-3d.png deleted file mode 100755 index bc7ad313..00000000 Binary files a/static/images/status/monitor-window-3d.png and /dev/null differ diff --git a/static/images/status/monitor-window-flow.png b/static/images/status/monitor-window-flow.png deleted file mode 100755 index 8ffe22c7..00000000 Binary files a/static/images/status/monitor-window-flow.png and /dev/null differ diff --git a/static/images/status/monitor-window.png b/static/images/status/monitor-window.png deleted file mode 100755 index f91fe28f..00000000 Binary files a/static/images/status/monitor-window.png and /dev/null differ diff --git a/static/images/status/monitor.png b/static/images/status/monitor.png deleted file mode 100755 index 2df0a38a..00000000 Binary files a/static/images/status/monitor.png and /dev/null differ diff --git a/static/images/status/mouse--arrow.png b/static/images/status/mouse--arrow.png deleted file mode 100755 index 30fe4683..00000000 Binary files a/static/images/status/mouse--arrow.png and /dev/null differ diff --git a/static/images/status/mouse--exclamation.png b/static/images/status/mouse--exclamation.png deleted file mode 100755 index d19651fe..00000000 Binary files a/static/images/status/mouse--exclamation.png and /dev/null differ diff --git a/static/images/status/mouse--minus.png b/static/images/status/mouse--minus.png deleted file mode 100755 index 92ea6227..00000000 Binary files a/static/images/status/mouse--minus.png and /dev/null differ diff --git a/static/images/status/mouse--pencil.png b/static/images/status/mouse--pencil.png deleted file mode 100755 index e24b630a..00000000 Binary files a/static/images/status/mouse--pencil.png and /dev/null differ diff --git a/static/images/status/mouse--plus.png b/static/images/status/mouse--plus.png deleted file mode 100755 index 6a29d56f..00000000 Binary files a/static/images/status/mouse--plus.png and /dev/null differ diff --git a/static/images/status/mouse-select-right.png b/static/images/status/mouse-select-right.png deleted file mode 100755 index 370c9ba7..00000000 Binary files a/static/images/status/mouse-select-right.png and /dev/null differ diff --git a/static/images/status/mouse-select-wheel.png b/static/images/status/mouse-select-wheel.png deleted file mode 100755 index c4b5f2cc..00000000 Binary files a/static/images/status/mouse-select-wheel.png and /dev/null differ diff --git a/static/images/status/mouse-select.png b/static/images/status/mouse-select.png deleted file mode 100755 index 3ff688f8..00000000 Binary files a/static/images/status/mouse-select.png and /dev/null differ diff --git a/static/images/status/mouse.png b/static/images/status/mouse.png deleted file mode 100755 index baa14b5d..00000000 Binary files a/static/images/status/mouse.png and /dev/null differ diff --git a/static/images/status/music--arrow.png b/static/images/status/music--arrow.png deleted file mode 100755 index d0ae1ae9..00000000 Binary files a/static/images/status/music--arrow.png and /dev/null differ diff --git a/static/images/status/music--exclamation.png b/static/images/status/music--exclamation.png deleted file mode 100755 index dbe18bcf..00000000 Binary files a/static/images/status/music--exclamation.png and /dev/null differ diff --git a/static/images/status/music--minus.png b/static/images/status/music--minus.png deleted file mode 100755 index 56af226f..00000000 Binary files a/static/images/status/music--minus.png and /dev/null differ diff --git a/static/images/status/music--pencil.png b/static/images/status/music--pencil.png deleted file mode 100755 index f29e9009..00000000 Binary files a/static/images/status/music--pencil.png and /dev/null differ diff --git a/static/images/status/music--plus.png b/static/images/status/music--plus.png deleted file mode 100755 index da42e173..00000000 Binary files a/static/images/status/music--plus.png and /dev/null differ diff --git a/static/images/status/music-beam-16.png b/static/images/status/music-beam-16.png deleted file mode 100755 index 1d08c507..00000000 Binary files a/static/images/status/music-beam-16.png and /dev/null differ diff --git a/static/images/status/music-beam.png b/static/images/status/music-beam.png deleted file mode 100755 index 73ce1ca4..00000000 Binary files a/static/images/status/music-beam.png and /dev/null differ diff --git a/static/images/status/music-small.png b/static/images/status/music-small.png deleted file mode 100755 index e55718ae..00000000 Binary files a/static/images/status/music-small.png and /dev/null differ diff --git a/static/images/status/music.png b/static/images/status/music.png deleted file mode 100755 index ddb4a4e1..00000000 Binary files a/static/images/status/music.png and /dev/null differ diff --git a/static/images/status/na.png b/static/images/status/na.png deleted file mode 100755 index 93807bcb..00000000 Binary files a/static/images/status/na.png and /dev/null differ diff --git a/static/images/status/navigation-000-button.png b/static/images/status/navigation-000-button.png deleted file mode 100755 index 51020717..00000000 Binary files a/static/images/status/navigation-000-button.png and /dev/null differ diff --git a/static/images/status/navigation-000-frame.png b/static/images/status/navigation-000-frame.png deleted file mode 100755 index 41c2dde3..00000000 Binary files a/static/images/status/navigation-000-frame.png and /dev/null differ diff --git a/static/images/status/navigation-000-white.png b/static/images/status/navigation-000-white.png deleted file mode 100755 index fcc169da..00000000 Binary files a/static/images/status/navigation-000-white.png and /dev/null differ diff --git a/static/images/status/navigation-090-button.png b/static/images/status/navigation-090-button.png deleted file mode 100755 index a76885bd..00000000 Binary files a/static/images/status/navigation-090-button.png and /dev/null differ diff --git a/static/images/status/navigation-090-frame.png b/static/images/status/navigation-090-frame.png deleted file mode 100755 index 44156a77..00000000 Binary files a/static/images/status/navigation-090-frame.png and /dev/null differ diff --git a/static/images/status/navigation-090-white.png b/static/images/status/navigation-090-white.png deleted file mode 100755 index b328096f..00000000 Binary files a/static/images/status/navigation-090-white.png and /dev/null differ diff --git a/static/images/status/navigation-090.png b/static/images/status/navigation-090.png deleted file mode 100755 index 411e2875..00000000 Binary files a/static/images/status/navigation-090.png and /dev/null differ diff --git a/static/images/status/navigation-180-button.png b/static/images/status/navigation-180-button.png deleted file mode 100755 index 058be1a6..00000000 Binary files a/static/images/status/navigation-180-button.png and /dev/null differ diff --git a/static/images/status/navigation-180-frame.png b/static/images/status/navigation-180-frame.png deleted file mode 100755 index f9a8edb6..00000000 Binary files a/static/images/status/navigation-180-frame.png and /dev/null differ diff --git a/static/images/status/navigation-180-white.png b/static/images/status/navigation-180-white.png deleted file mode 100755 index 375df427..00000000 Binary files a/static/images/status/navigation-180-white.png and /dev/null differ diff --git a/static/images/status/navigation-180.png b/static/images/status/navigation-180.png deleted file mode 100755 index e3f39762..00000000 Binary files a/static/images/status/navigation-180.png and /dev/null differ diff --git a/static/images/status/navigation-270-button.png b/static/images/status/navigation-270-button.png deleted file mode 100755 index 9c53794e..00000000 Binary files a/static/images/status/navigation-270-button.png and /dev/null differ diff --git a/static/images/status/navigation-270-frame.png b/static/images/status/navigation-270-frame.png deleted file mode 100755 index e4d1c781..00000000 Binary files a/static/images/status/navigation-270-frame.png and /dev/null differ diff --git a/static/images/status/navigation-270-white.png b/static/images/status/navigation-270-white.png deleted file mode 100755 index c01bbcfd..00000000 Binary files a/static/images/status/navigation-270-white.png and /dev/null differ diff --git a/static/images/status/navigation-270.png b/static/images/status/navigation-270.png deleted file mode 100755 index 0fc9a7b8..00000000 Binary files a/static/images/status/navigation-270.png and /dev/null differ diff --git a/static/images/status/navigation.png b/static/images/status/navigation.png deleted file mode 100755 index d6c52613..00000000 Binary files a/static/images/status/navigation.png and /dev/null differ diff --git a/static/images/status/network-cloud.png b/static/images/status/network-cloud.png deleted file mode 100755 index 0527a92b..00000000 Binary files a/static/images/status/network-cloud.png and /dev/null differ diff --git a/static/images/status/network-clouds.png b/static/images/status/network-clouds.png deleted file mode 100755 index 50c962c9..00000000 Binary files a/static/images/status/network-clouds.png and /dev/null differ diff --git a/static/images/status/network-ethernet.png b/static/images/status/network-ethernet.png deleted file mode 100755 index 24ca7370..00000000 Binary files a/static/images/status/network-ethernet.png and /dev/null differ diff --git a/static/images/status/network-hub.png b/static/images/status/network-hub.png deleted file mode 100755 index 752968bb..00000000 Binary files a/static/images/status/network-hub.png and /dev/null differ diff --git a/static/images/status/network.png b/static/images/status/network.png deleted file mode 100755 index 8224771b..00000000 Binary files a/static/images/status/network.png and /dev/null differ diff --git a/static/images/status/new.png b/static/images/status/new.png deleted file mode 100755 index 6eb6b2f7..00000000 Binary files a/static/images/status/new.png and /dev/null differ diff --git a/static/images/status/newspaper--arrow.png b/static/images/status/newspaper--arrow.png deleted file mode 100755 index a3ff369d..00000000 Binary files a/static/images/status/newspaper--arrow.png and /dev/null differ diff --git a/static/images/status/newspaper--exclamation.png b/static/images/status/newspaper--exclamation.png deleted file mode 100755 index a761b72a..00000000 Binary files a/static/images/status/newspaper--exclamation.png and /dev/null differ diff --git a/static/images/status/newspaper--minus.png b/static/images/status/newspaper--minus.png deleted file mode 100755 index a4cbe173..00000000 Binary files a/static/images/status/newspaper--minus.png and /dev/null differ diff --git a/static/images/status/newspaper--pencil.png b/static/images/status/newspaper--pencil.png deleted file mode 100755 index 20578cd2..00000000 Binary files a/static/images/status/newspaper--pencil.png and /dev/null differ diff --git a/static/images/status/newspaper--plus.png b/static/images/status/newspaper--plus.png deleted file mode 100755 index 6360aff4..00000000 Binary files a/static/images/status/newspaper--plus.png and /dev/null differ diff --git a/static/images/status/newspaper.png b/static/images/status/newspaper.png deleted file mode 100755 index 70e7e5a0..00000000 Binary files a/static/images/status/newspaper.png and /dev/null differ diff --git a/static/images/status/newspapers.png b/static/images/status/newspapers.png deleted file mode 100755 index e4561208..00000000 Binary files a/static/images/status/newspapers.png and /dev/null differ diff --git a/static/images/status/node-delete-child.png b/static/images/status/node-delete-child.png deleted file mode 100755 index 2fa1d9bb..00000000 Binary files a/static/images/status/node-delete-child.png and /dev/null differ diff --git a/static/images/status/node-delete-next.png b/static/images/status/node-delete-next.png deleted file mode 100755 index 1c08bca5..00000000 Binary files a/static/images/status/node-delete-next.png and /dev/null differ diff --git a/static/images/status/node-delete-previous.png b/static/images/status/node-delete-previous.png deleted file mode 100755 index d8e6c5ab..00000000 Binary files a/static/images/status/node-delete-previous.png and /dev/null differ diff --git a/static/images/status/node-delete.png b/static/images/status/node-delete.png deleted file mode 100755 index b22b6285..00000000 Binary files a/static/images/status/node-delete.png and /dev/null differ diff --git a/static/images/status/node-design.png b/static/images/status/node-design.png deleted file mode 100755 index fb2d4066..00000000 Binary files a/static/images/status/node-design.png and /dev/null differ diff --git a/static/images/status/node-insert-child.png b/static/images/status/node-insert-child.png deleted file mode 100755 index 0051fdee..00000000 Binary files a/static/images/status/node-insert-child.png and /dev/null differ diff --git a/static/images/status/node-insert-next.png b/static/images/status/node-insert-next.png deleted file mode 100755 index ba4f1090..00000000 Binary files a/static/images/status/node-insert-next.png and /dev/null differ diff --git a/static/images/status/node-insert-previous.png b/static/images/status/node-insert-previous.png deleted file mode 100755 index 4fb30da6..00000000 Binary files a/static/images/status/node-insert-previous.png and /dev/null differ diff --git a/static/images/status/node-insert.png b/static/images/status/node-insert.png deleted file mode 100755 index f18a8e3e..00000000 Binary files a/static/images/status/node-insert.png and /dev/null differ diff --git a/static/images/status/node-magnifier.png b/static/images/status/node-magnifier.png deleted file mode 100755 index 2fbdb45a..00000000 Binary files a/static/images/status/node-magnifier.png and /dev/null differ diff --git a/static/images/status/node-select-all.png b/static/images/status/node-select-all.png deleted file mode 100755 index af438028..00000000 Binary files a/static/images/status/node-select-all.png and /dev/null differ diff --git a/static/images/status/node-select-child.png b/static/images/status/node-select-child.png deleted file mode 100755 index 689d4b84..00000000 Binary files a/static/images/status/node-select-child.png and /dev/null differ diff --git a/static/images/status/node-select-next.png b/static/images/status/node-select-next.png deleted file mode 100755 index 35186694..00000000 Binary files a/static/images/status/node-select-next.png and /dev/null differ diff --git a/static/images/status/node-select-previous.png b/static/images/status/node-select-previous.png deleted file mode 100755 index e193d530..00000000 Binary files a/static/images/status/node-select-previous.png and /dev/null differ diff --git a/static/images/status/node-select.png b/static/images/status/node-select.png deleted file mode 100755 index d2aba04c..00000000 Binary files a/static/images/status/node-select.png and /dev/null differ diff --git a/static/images/status/node.png b/static/images/status/node.png deleted file mode 100755 index 88f1a2bb..00000000 Binary files a/static/images/status/node.png and /dev/null differ diff --git a/static/images/status/notebook--arrow.png b/static/images/status/notebook--arrow.png deleted file mode 100755 index 07ca8503..00000000 Binary files a/static/images/status/notebook--arrow.png and /dev/null differ diff --git a/static/images/status/notebook--exclamation.png b/static/images/status/notebook--exclamation.png deleted file mode 100755 index 432689fd..00000000 Binary files a/static/images/status/notebook--exclamation.png and /dev/null differ diff --git a/static/images/status/notebook--minus.png b/static/images/status/notebook--minus.png deleted file mode 100755 index 933eb367..00000000 Binary files a/static/images/status/notebook--minus.png and /dev/null differ diff --git a/static/images/status/notebook--pencil.png b/static/images/status/notebook--pencil.png deleted file mode 100755 index 9e025e7c..00000000 Binary files a/static/images/status/notebook--pencil.png and /dev/null differ diff --git a/static/images/status/notebook--plus.png b/static/images/status/notebook--plus.png deleted file mode 100755 index 1ff61a1b..00000000 Binary files a/static/images/status/notebook--plus.png and /dev/null differ diff --git a/static/images/status/notebook.png b/static/images/status/notebook.png deleted file mode 100755 index 34f6b38c..00000000 Binary files a/static/images/status/notebook.png and /dev/null differ diff --git a/static/images/status/notebooks.png b/static/images/status/notebooks.png deleted file mode 100755 index 304d40f6..00000000 Binary files a/static/images/status/notebooks.png and /dev/null differ diff --git a/static/images/status/open-share-balloon.png b/static/images/status/open-share-balloon.png deleted file mode 100755 index b9856a52..00000000 Binary files a/static/images/status/open-share-balloon.png and /dev/null differ diff --git a/static/images/status/open-share-document.png b/static/images/status/open-share-document.png deleted file mode 100755 index da01968d..00000000 Binary files a/static/images/status/open-share-document.png and /dev/null differ diff --git a/static/images/status/open-share-small.png b/static/images/status/open-share-small.png deleted file mode 100755 index 140c1a72..00000000 Binary files a/static/images/status/open-share-small.png and /dev/null differ diff --git a/static/images/status/open-share.png b/static/images/status/open-share.png deleted file mode 100755 index 0718672a..00000000 Binary files a/static/images/status/open-share.png and /dev/null differ diff --git a/static/images/status/open-source.png b/static/images/status/open-source.png deleted file mode 100755 index 5baef4b3..00000000 Binary files a/static/images/status/open-source.png and /dev/null differ diff --git a/static/images/status/openid.png b/static/images/status/openid.png deleted file mode 100755 index 1e6a552f..00000000 Binary files a/static/images/status/openid.png and /dev/null differ diff --git a/static/images/status/opml-balloon.png b/static/images/status/opml-balloon.png deleted file mode 100755 index 8e865389..00000000 Binary files a/static/images/status/opml-balloon.png and /dev/null differ diff --git a/static/images/status/opml-document.png b/static/images/status/opml-document.png deleted file mode 100755 index 43079d4b..00000000 Binary files a/static/images/status/opml-document.png and /dev/null differ diff --git a/static/images/status/opml-small.png b/static/images/status/opml-small.png deleted file mode 100755 index 5c7abaac..00000000 Binary files a/static/images/status/opml-small.png and /dev/null differ diff --git a/static/images/status/opml.png b/static/images/status/opml.png deleted file mode 100755 index bc82f332..00000000 Binary files a/static/images/status/opml.png and /dev/null differ diff --git a/static/images/status/paint-brush--arrow.png b/static/images/status/paint-brush--arrow.png deleted file mode 100755 index ae914c7b..00000000 Binary files a/static/images/status/paint-brush--arrow.png and /dev/null differ diff --git a/static/images/status/paint-brush--exclamation.png b/static/images/status/paint-brush--exclamation.png deleted file mode 100755 index d0c9e5b7..00000000 Binary files a/static/images/status/paint-brush--exclamation.png and /dev/null differ diff --git a/static/images/status/paint-brush--minus.png b/static/images/status/paint-brush--minus.png deleted file mode 100755 index fca31180..00000000 Binary files a/static/images/status/paint-brush--minus.png and /dev/null differ diff --git a/static/images/status/paint-brush--pencil.png b/static/images/status/paint-brush--pencil.png deleted file mode 100755 index c4de0f58..00000000 Binary files a/static/images/status/paint-brush--pencil.png and /dev/null differ diff --git a/static/images/status/paint-brush--plus.png b/static/images/status/paint-brush--plus.png deleted file mode 100755 index fd338778..00000000 Binary files a/static/images/status/paint-brush--plus.png and /dev/null differ diff --git a/static/images/status/paint-brush-color.png b/static/images/status/paint-brush-color.png deleted file mode 100755 index 6eb6e9b9..00000000 Binary files a/static/images/status/paint-brush-color.png and /dev/null differ diff --git a/static/images/status/paint-brush-small.png b/static/images/status/paint-brush-small.png deleted file mode 100755 index 95f15f8d..00000000 Binary files a/static/images/status/paint-brush-small.png and /dev/null differ diff --git a/static/images/status/paint-brush.png b/static/images/status/paint-brush.png deleted file mode 100755 index 260406cb..00000000 Binary files a/static/images/status/paint-brush.png and /dev/null differ diff --git a/static/images/status/paint-can--arrow.png b/static/images/status/paint-can--arrow.png deleted file mode 100755 index 74a2e683..00000000 Binary files a/static/images/status/paint-can--arrow.png and /dev/null differ diff --git a/static/images/status/paint-can--exclamation.png b/static/images/status/paint-can--exclamation.png deleted file mode 100755 index 0b018868..00000000 Binary files a/static/images/status/paint-can--exclamation.png and /dev/null differ diff --git a/static/images/status/paint-can--minus.png b/static/images/status/paint-can--minus.png deleted file mode 100755 index aeeb53c5..00000000 Binary files a/static/images/status/paint-can--minus.png and /dev/null differ diff --git a/static/images/status/paint-can--pencil.png b/static/images/status/paint-can--pencil.png deleted file mode 100755 index f6cfe81b..00000000 Binary files a/static/images/status/paint-can--pencil.png and /dev/null differ diff --git a/static/images/status/paint-can--plus.png b/static/images/status/paint-can--plus.png deleted file mode 100755 index 59be395a..00000000 Binary files a/static/images/status/paint-can--plus.png and /dev/null differ diff --git a/static/images/status/paint-can-color.png b/static/images/status/paint-can-color.png deleted file mode 100755 index 1381f5af..00000000 Binary files a/static/images/status/paint-can-color.png and /dev/null differ diff --git a/static/images/status/paint-can-paint-brush.png b/static/images/status/paint-can-paint-brush.png deleted file mode 100755 index c1fe7d9d..00000000 Binary files a/static/images/status/paint-can-paint-brush.png and /dev/null differ diff --git a/static/images/status/paint-can.png b/static/images/status/paint-can.png deleted file mode 100755 index fe618fc9..00000000 Binary files a/static/images/status/paint-can.png and /dev/null differ diff --git a/static/images/status/paint-tube--arrow.png b/static/images/status/paint-tube--arrow.png deleted file mode 100755 index c93a9b39..00000000 Binary files a/static/images/status/paint-tube--arrow.png and /dev/null differ diff --git a/static/images/status/paint-tube--exclamation.png b/static/images/status/paint-tube--exclamation.png deleted file mode 100755 index 7d027571..00000000 Binary files a/static/images/status/paint-tube--exclamation.png and /dev/null differ diff --git a/static/images/status/paint-tube--minus.png b/static/images/status/paint-tube--minus.png deleted file mode 100755 index 40dcbeba..00000000 Binary files a/static/images/status/paint-tube--minus.png and /dev/null differ diff --git a/static/images/status/paint-tube--pencil.png b/static/images/status/paint-tube--pencil.png deleted file mode 100755 index ac0a7713..00000000 Binary files a/static/images/status/paint-tube--pencil.png and /dev/null differ diff --git a/static/images/status/paint-tube--plus.png b/static/images/status/paint-tube--plus.png deleted file mode 100755 index 396d69c4..00000000 Binary files a/static/images/status/paint-tube--plus.png and /dev/null differ diff --git a/static/images/status/paint-tube-color.png b/static/images/status/paint-tube-color.png deleted file mode 100755 index 957a5d7e..00000000 Binary files a/static/images/status/paint-tube-color.png and /dev/null differ diff --git a/static/images/status/paint-tube.png b/static/images/status/paint-tube.png deleted file mode 100755 index ba0ee66f..00000000 Binary files a/static/images/status/paint-tube.png and /dev/null differ diff --git a/static/images/status/palette--arrow.png b/static/images/status/palette--arrow.png deleted file mode 100755 index 7cfcbd26..00000000 Binary files a/static/images/status/palette--arrow.png and /dev/null differ diff --git a/static/images/status/palette--exclamation.png b/static/images/status/palette--exclamation.png deleted file mode 100755 index e67ab03b..00000000 Binary files a/static/images/status/palette--exclamation.png and /dev/null differ diff --git a/static/images/status/palette--minus.png b/static/images/status/palette--minus.png deleted file mode 100755 index 72e948ff..00000000 Binary files a/static/images/status/palette--minus.png and /dev/null differ diff --git a/static/images/status/palette--pencil.png b/static/images/status/palette--pencil.png deleted file mode 100755 index a5ee5721..00000000 Binary files a/static/images/status/palette--pencil.png and /dev/null differ diff --git a/static/images/status/palette--plus.png b/static/images/status/palette--plus.png deleted file mode 100755 index 3090be2d..00000000 Binary files a/static/images/status/palette--plus.png and /dev/null differ diff --git a/static/images/status/palette-color.png b/static/images/status/palette-color.png deleted file mode 100755 index bee9196d..00000000 Binary files a/static/images/status/palette-color.png and /dev/null differ diff --git a/static/images/status/palette-paint-brush.png b/static/images/status/palette-paint-brush.png deleted file mode 100755 index c32f0bdf..00000000 Binary files a/static/images/status/palette-paint-brush.png and /dev/null differ diff --git a/static/images/status/palette.png b/static/images/status/palette.png deleted file mode 100755 index df7ccc11..00000000 Binary files a/static/images/status/palette.png and /dev/null differ diff --git a/static/images/status/paper-bag--arrow.png b/static/images/status/paper-bag--arrow.png deleted file mode 100755 index 6eee2436..00000000 Binary files a/static/images/status/paper-bag--arrow.png and /dev/null differ diff --git a/static/images/status/paper-bag--exclamation.png b/static/images/status/paper-bag--exclamation.png deleted file mode 100755 index 02fa1fdc..00000000 Binary files a/static/images/status/paper-bag--exclamation.png and /dev/null differ diff --git a/static/images/status/paper-bag--minus.png b/static/images/status/paper-bag--minus.png deleted file mode 100755 index b1101f78..00000000 Binary files a/static/images/status/paper-bag--minus.png and /dev/null differ diff --git a/static/images/status/paper-bag--pencil.png b/static/images/status/paper-bag--pencil.png deleted file mode 100755 index 3924c367..00000000 Binary files a/static/images/status/paper-bag--pencil.png and /dev/null differ diff --git a/static/images/status/paper-bag--plus.png b/static/images/status/paper-bag--plus.png deleted file mode 100755 index 6512019f..00000000 Binary files a/static/images/status/paper-bag--plus.png and /dev/null differ diff --git a/static/images/status/paper-bag-label.png b/static/images/status/paper-bag-label.png deleted file mode 100755 index a1cb25a0..00000000 Binary files a/static/images/status/paper-bag-label.png and /dev/null differ diff --git a/static/images/status/paper-bag.png b/static/images/status/paper-bag.png deleted file mode 100755 index f4c3166c..00000000 Binary files a/static/images/status/paper-bag.png and /dev/null differ diff --git a/static/images/status/paper-clip-small.png b/static/images/status/paper-clip-small.png deleted file mode 100755 index 23ed8dd1..00000000 Binary files a/static/images/status/paper-clip-small.png and /dev/null differ diff --git a/static/images/status/paper-clip.png b/static/images/status/paper-clip.png deleted file mode 100755 index 5f2d4af6..00000000 Binary files a/static/images/status/paper-clip.png and /dev/null differ diff --git a/static/images/status/paper-plane--arrow.png b/static/images/status/paper-plane--arrow.png deleted file mode 100755 index 3b8f12fb..00000000 Binary files a/static/images/status/paper-plane--arrow.png and /dev/null differ diff --git a/static/images/status/paper-plane--exclamation.png b/static/images/status/paper-plane--exclamation.png deleted file mode 100755 index f2b54552..00000000 Binary files a/static/images/status/paper-plane--exclamation.png and /dev/null differ diff --git a/static/images/status/paper-plane--minus.png b/static/images/status/paper-plane--minus.png deleted file mode 100755 index 4d6ddfa4..00000000 Binary files a/static/images/status/paper-plane--minus.png and /dev/null differ diff --git a/static/images/status/paper-plane--pencil.png b/static/images/status/paper-plane--pencil.png deleted file mode 100755 index 57b2a629..00000000 Binary files a/static/images/status/paper-plane--pencil.png and /dev/null differ diff --git a/static/images/status/paper-plane--plus.png b/static/images/status/paper-plane--plus.png deleted file mode 100755 index c5f7dfd0..00000000 Binary files a/static/images/status/paper-plane--plus.png and /dev/null differ diff --git a/static/images/status/paper-plane-return.png b/static/images/status/paper-plane-return.png deleted file mode 100755 index 5ae489fa..00000000 Binary files a/static/images/status/paper-plane-return.png and /dev/null differ diff --git a/static/images/status/paper-plane.png b/static/images/status/paper-plane.png deleted file mode 100755 index 95b0da45..00000000 Binary files a/static/images/status/paper-plane.png and /dev/null differ diff --git a/static/images/status/party-hat.png b/static/images/status/party-hat.png deleted file mode 100755 index 490c42b2..00000000 Binary files a/static/images/status/party-hat.png and /dev/null differ diff --git a/static/images/status/pda--arrow.png b/static/images/status/pda--arrow.png deleted file mode 100755 index 961be376..00000000 Binary files a/static/images/status/pda--arrow.png and /dev/null differ diff --git a/static/images/status/pda--exclamation.png b/static/images/status/pda--exclamation.png deleted file mode 100755 index e53f3026..00000000 Binary files a/static/images/status/pda--exclamation.png and /dev/null differ diff --git a/static/images/status/pda--minus.png b/static/images/status/pda--minus.png deleted file mode 100755 index 434e779b..00000000 Binary files a/static/images/status/pda--minus.png and /dev/null differ diff --git a/static/images/status/pda--pencil.png b/static/images/status/pda--pencil.png deleted file mode 100755 index ed838e71..00000000 Binary files a/static/images/status/pda--pencil.png and /dev/null differ diff --git a/static/images/status/pda--plus.png b/static/images/status/pda--plus.png deleted file mode 100755 index e810e018..00000000 Binary files a/static/images/status/pda--plus.png and /dev/null differ diff --git a/static/images/status/pda-off.png b/static/images/status/pda-off.png deleted file mode 100755 index 9ea536de..00000000 Binary files a/static/images/status/pda-off.png and /dev/null differ diff --git a/static/images/status/pda.png b/static/images/status/pda.png deleted file mode 100755 index d55ae173..00000000 Binary files a/static/images/status/pda.png and /dev/null differ diff --git a/static/images/status/pencil--arrow.png b/static/images/status/pencil--arrow.png deleted file mode 100755 index 6b248b97..00000000 Binary files a/static/images/status/pencil--arrow.png and /dev/null differ diff --git a/static/images/status/pencil--exclamation.png b/static/images/status/pencil--exclamation.png deleted file mode 100755 index f34db38d..00000000 Binary files a/static/images/status/pencil--exclamation.png and /dev/null differ diff --git a/static/images/status/pencil--minus.png b/static/images/status/pencil--minus.png deleted file mode 100755 index d69a8437..00000000 Binary files a/static/images/status/pencil--minus.png and /dev/null differ diff --git a/static/images/status/pencil--plus.png b/static/images/status/pencil--plus.png deleted file mode 100755 index 66be8ceb..00000000 Binary files a/static/images/status/pencil--plus.png and /dev/null differ diff --git a/static/images/status/pencil-color.png b/static/images/status/pencil-color.png deleted file mode 100755 index b583f9db..00000000 Binary files a/static/images/status/pencil-color.png and /dev/null differ diff --git a/static/images/status/pencil-field.png b/static/images/status/pencil-field.png deleted file mode 100755 index c6ac8162..00000000 Binary files a/static/images/status/pencil-field.png and /dev/null differ diff --git a/static/images/status/pencil-ruler.png b/static/images/status/pencil-ruler.png deleted file mode 100755 index d9d16b3c..00000000 Binary files a/static/images/status/pencil-ruler.png and /dev/null differ diff --git a/static/images/status/pencil-small.png b/static/images/status/pencil-small.png deleted file mode 100755 index 3d81c2fb..00000000 Binary files a/static/images/status/pencil-small.png and /dev/null differ diff --git a/static/images/status/pencil.png b/static/images/status/pencil.png deleted file mode 100755 index dbab8f40..00000000 Binary files a/static/images/status/pencil.png and /dev/null differ diff --git a/static/images/status/photo-album--arrow.png b/static/images/status/photo-album--arrow.png deleted file mode 100755 index 5f3bdfc8..00000000 Binary files a/static/images/status/photo-album--arrow.png and /dev/null differ diff --git a/static/images/status/photo-album--exclamation.png b/static/images/status/photo-album--exclamation.png deleted file mode 100755 index 345281b7..00000000 Binary files a/static/images/status/photo-album--exclamation.png and /dev/null differ diff --git a/static/images/status/photo-album--minus.png b/static/images/status/photo-album--minus.png deleted file mode 100755 index a67e68ae..00000000 Binary files a/static/images/status/photo-album--minus.png and /dev/null differ diff --git a/static/images/status/photo-album--pencil.png b/static/images/status/photo-album--pencil.png deleted file mode 100755 index 68126e9d..00000000 Binary files a/static/images/status/photo-album--pencil.png and /dev/null differ diff --git a/static/images/status/photo-album--plus.png b/static/images/status/photo-album--plus.png deleted file mode 100755 index 99f33512..00000000 Binary files a/static/images/status/photo-album--plus.png and /dev/null differ diff --git a/static/images/status/photo-album-blue.png b/static/images/status/photo-album-blue.png deleted file mode 100755 index d4217a36..00000000 Binary files a/static/images/status/photo-album-blue.png and /dev/null differ diff --git a/static/images/status/photo-album.png b/static/images/status/photo-album.png deleted file mode 100755 index 146f2609..00000000 Binary files a/static/images/status/photo-album.png and /dev/null differ diff --git a/static/images/status/piano--arrow.png b/static/images/status/piano--arrow.png deleted file mode 100755 index 4a27a666..00000000 Binary files a/static/images/status/piano--arrow.png and /dev/null differ diff --git a/static/images/status/piano--exclamation.png b/static/images/status/piano--exclamation.png deleted file mode 100755 index 50aaecca..00000000 Binary files a/static/images/status/piano--exclamation.png and /dev/null differ diff --git a/static/images/status/piano--minus.png b/static/images/status/piano--minus.png deleted file mode 100755 index 5d21fdc8..00000000 Binary files a/static/images/status/piano--minus.png and /dev/null differ diff --git a/static/images/status/piano--pencil.png b/static/images/status/piano--pencil.png deleted file mode 100755 index 02dd5641..00000000 Binary files a/static/images/status/piano--pencil.png and /dev/null differ diff --git a/static/images/status/piano--plus.png b/static/images/status/piano--plus.png deleted file mode 100755 index 7c61beaa..00000000 Binary files a/static/images/status/piano--plus.png and /dev/null differ diff --git a/static/images/status/piano.png b/static/images/status/piano.png deleted file mode 100755 index 94096782..00000000 Binary files a/static/images/status/piano.png and /dev/null differ diff --git a/static/images/status/picture--arrow.png b/static/images/status/picture--arrow.png deleted file mode 100755 index ffc381c8..00000000 Binary files a/static/images/status/picture--arrow.png and /dev/null differ diff --git a/static/images/status/picture--exclamation.png b/static/images/status/picture--exclamation.png deleted file mode 100755 index c60b186c..00000000 Binary files a/static/images/status/picture--exclamation.png and /dev/null differ diff --git a/static/images/status/picture--minus.png b/static/images/status/picture--minus.png deleted file mode 100755 index 221b15fa..00000000 Binary files a/static/images/status/picture--minus.png and /dev/null differ diff --git a/static/images/status/picture--pencil.png b/static/images/status/picture--pencil.png deleted file mode 100755 index f1afcd95..00000000 Binary files a/static/images/status/picture--pencil.png and /dev/null differ diff --git a/static/images/status/picture--plus.png b/static/images/status/picture--plus.png deleted file mode 100755 index 9d165f26..00000000 Binary files a/static/images/status/picture--plus.png and /dev/null differ diff --git a/static/images/status/picture-small-sunset.png b/static/images/status/picture-small-sunset.png deleted file mode 100755 index 1cb417f2..00000000 Binary files a/static/images/status/picture-small-sunset.png and /dev/null differ diff --git a/static/images/status/picture-small.png b/static/images/status/picture-small.png deleted file mode 100755 index 54bf7aca..00000000 Binary files a/static/images/status/picture-small.png and /dev/null differ diff --git a/static/images/status/picture-sunset.png b/static/images/status/picture-sunset.png deleted file mode 100755 index 56776681..00000000 Binary files a/static/images/status/picture-sunset.png and /dev/null differ diff --git a/static/images/status/picture.png b/static/images/status/picture.png deleted file mode 100755 index 8f071724..00000000 Binary files a/static/images/status/picture.png and /dev/null differ diff --git a/static/images/status/pictures-stack.png b/static/images/status/pictures-stack.png deleted file mode 100755 index efb0b884..00000000 Binary files a/static/images/status/pictures-stack.png and /dev/null differ diff --git a/static/images/status/pictures.png b/static/images/status/pictures.png deleted file mode 100755 index f486d78c..00000000 Binary files a/static/images/status/pictures.png and /dev/null differ diff --git a/static/images/status/pill--arrow.png b/static/images/status/pill--arrow.png deleted file mode 100755 index 175e5168..00000000 Binary files a/static/images/status/pill--arrow.png and /dev/null differ diff --git a/static/images/status/pill--exclamation.png b/static/images/status/pill--exclamation.png deleted file mode 100755 index 01521caf..00000000 Binary files a/static/images/status/pill--exclamation.png and /dev/null differ diff --git a/static/images/status/pill--minus.png b/static/images/status/pill--minus.png deleted file mode 100755 index 4983b46d..00000000 Binary files a/static/images/status/pill--minus.png and /dev/null differ diff --git a/static/images/status/pill--pencil.png b/static/images/status/pill--pencil.png deleted file mode 100755 index 08c41b4b..00000000 Binary files a/static/images/status/pill--pencil.png and /dev/null differ diff --git a/static/images/status/pill--plus.png b/static/images/status/pill--plus.png deleted file mode 100755 index 38ff4176..00000000 Binary files a/static/images/status/pill--plus.png and /dev/null differ diff --git a/static/images/status/pill-small.png b/static/images/status/pill-small.png deleted file mode 100755 index 21263f44..00000000 Binary files a/static/images/status/pill-small.png and /dev/null differ diff --git a/static/images/status/pill.png b/static/images/status/pill.png deleted file mode 100755 index a461e49f..00000000 Binary files a/static/images/status/pill.png and /dev/null differ diff --git a/static/images/status/pin--arrow.png b/static/images/status/pin--arrow.png deleted file mode 100755 index ca8c5fb4..00000000 Binary files a/static/images/status/pin--arrow.png and /dev/null differ diff --git a/static/images/status/pin--exclamation.png b/static/images/status/pin--exclamation.png deleted file mode 100755 index 3b535bc9..00000000 Binary files a/static/images/status/pin--exclamation.png and /dev/null differ diff --git a/static/images/status/pin--minus.png b/static/images/status/pin--minus.png deleted file mode 100755 index ef44fe7b..00000000 Binary files a/static/images/status/pin--minus.png and /dev/null differ diff --git a/static/images/status/pin--pencil.png b/static/images/status/pin--pencil.png deleted file mode 100755 index 58af83be..00000000 Binary files a/static/images/status/pin--pencil.png and /dev/null differ diff --git a/static/images/status/pin--plus.png b/static/images/status/pin--plus.png deleted file mode 100755 index c85160d0..00000000 Binary files a/static/images/status/pin--plus.png and /dev/null differ diff --git a/static/images/status/pin-small.png b/static/images/status/pin-small.png deleted file mode 100755 index 81bb54ba..00000000 Binary files a/static/images/status/pin-small.png and /dev/null differ diff --git a/static/images/status/pin.png b/static/images/status/pin.png deleted file mode 100755 index 6d818ebc..00000000 Binary files a/static/images/status/pin.png and /dev/null differ diff --git a/static/images/status/pipette--arrow.png b/static/images/status/pipette--arrow.png deleted file mode 100755 index 5c50856f..00000000 Binary files a/static/images/status/pipette--arrow.png and /dev/null differ diff --git a/static/images/status/pipette--exclamation.png b/static/images/status/pipette--exclamation.png deleted file mode 100755 index d8f86cd4..00000000 Binary files a/static/images/status/pipette--exclamation.png and /dev/null differ diff --git a/static/images/status/pipette--minus.png b/static/images/status/pipette--minus.png deleted file mode 100755 index e2056f3f..00000000 Binary files a/static/images/status/pipette--minus.png and /dev/null differ diff --git a/static/images/status/pipette--pencil.png b/static/images/status/pipette--pencil.png deleted file mode 100755 index 5aa7ddd9..00000000 Binary files a/static/images/status/pipette--pencil.png and /dev/null differ diff --git a/static/images/status/pipette--plus.png b/static/images/status/pipette--plus.png deleted file mode 100755 index 39c9f9d0..00000000 Binary files a/static/images/status/pipette--plus.png and /dev/null differ diff --git a/static/images/status/pipette-color.png b/static/images/status/pipette-color.png deleted file mode 100755 index 4a529f97..00000000 Binary files a/static/images/status/pipette-color.png and /dev/null differ diff --git a/static/images/status/pipette.png b/static/images/status/pipette.png deleted file mode 100755 index 2e6966a4..00000000 Binary files a/static/images/status/pipette.png and /dev/null differ diff --git a/static/images/status/playing-card--arrow.png b/static/images/status/playing-card--arrow.png deleted file mode 100755 index 4d0220a1..00000000 Binary files a/static/images/status/playing-card--arrow.png and /dev/null differ diff --git a/static/images/status/playing-card--exclamation.png b/static/images/status/playing-card--exclamation.png deleted file mode 100755 index ffcceff9..00000000 Binary files a/static/images/status/playing-card--exclamation.png and /dev/null differ diff --git a/static/images/status/playing-card--minus.png b/static/images/status/playing-card--minus.png deleted file mode 100755 index c57f92cc..00000000 Binary files a/static/images/status/playing-card--minus.png and /dev/null differ diff --git a/static/images/status/playing-card--pencil.png b/static/images/status/playing-card--pencil.png deleted file mode 100755 index 3cad6d87..00000000 Binary files a/static/images/status/playing-card--pencil.png and /dev/null differ diff --git a/static/images/status/playing-card--plus.png b/static/images/status/playing-card--plus.png deleted file mode 100755 index 0ae2a062..00000000 Binary files a/static/images/status/playing-card--plus.png and /dev/null differ diff --git a/static/images/status/playing-card.png b/static/images/status/playing-card.png deleted file mode 100755 index 77c45b09..00000000 Binary files a/static/images/status/playing-card.png and /dev/null differ diff --git a/static/images/status/plug--arrow.png b/static/images/status/plug--arrow.png deleted file mode 100755 index 4b8a29fa..00000000 Binary files a/static/images/status/plug--arrow.png and /dev/null differ diff --git a/static/images/status/plug--exclamation.png b/static/images/status/plug--exclamation.png deleted file mode 100755 index ed8cb8e4..00000000 Binary files a/static/images/status/plug--exclamation.png and /dev/null differ diff --git a/static/images/status/plug--minus.png b/static/images/status/plug--minus.png deleted file mode 100755 index 3714f96c..00000000 Binary files a/static/images/status/plug--minus.png and /dev/null differ diff --git a/static/images/status/plug--pencil.png b/static/images/status/plug--pencil.png deleted file mode 100755 index b59deb79..00000000 Binary files a/static/images/status/plug--pencil.png and /dev/null differ diff --git a/static/images/status/plug--plus.png b/static/images/status/plug--plus.png deleted file mode 100755 index d380b173..00000000 Binary files a/static/images/status/plug--plus.png and /dev/null differ diff --git a/static/images/status/plus-button.png b/static/images/status/plus-button.png deleted file mode 100755 index 10d1f600..00000000 Binary files a/static/images/status/plus-button.png and /dev/null differ diff --git a/static/images/status/plus-circle-frame.png b/static/images/status/plus-circle-frame.png deleted file mode 100755 index 03ad9d3d..00000000 Binary files a/static/images/status/plus-circle-frame.png and /dev/null differ diff --git a/static/images/status/plus-octagon-frame.png b/static/images/status/plus-octagon-frame.png deleted file mode 100755 index eeb856b5..00000000 Binary files a/static/images/status/plus-octagon-frame.png and /dev/null differ diff --git a/static/images/status/plus-octagon.png b/static/images/status/plus-octagon.png deleted file mode 100755 index 18317094..00000000 Binary files a/static/images/status/plus-octagon.png and /dev/null differ diff --git a/static/images/status/plus-shield.png b/static/images/status/plus-shield.png deleted file mode 100755 index bd72035d..00000000 Binary files a/static/images/status/plus-shield.png and /dev/null differ diff --git a/static/images/status/plus-small-circle.png b/static/images/status/plus-small-circle.png deleted file mode 100755 index 700492ca..00000000 Binary files a/static/images/status/plus-small-circle.png and /dev/null differ diff --git a/static/images/status/plus-small-white.png b/static/images/status/plus-small-white.png deleted file mode 100755 index 1ed34752..00000000 Binary files a/static/images/status/plus-small-white.png and /dev/null differ diff --git a/static/images/status/plus-small.png b/static/images/status/plus-small.png deleted file mode 100755 index 6bbba514..00000000 Binary files a/static/images/status/plus-small.png and /dev/null differ diff --git a/static/images/status/plus-white.png b/static/images/status/plus-white.png deleted file mode 100755 index c765946e..00000000 Binary files a/static/images/status/plus-white.png and /dev/null differ diff --git a/static/images/status/plus.png b/static/images/status/plus.png deleted file mode 100755 index 4ac1bafb..00000000 Binary files a/static/images/status/plus.png and /dev/null differ diff --git a/static/images/status/point--arrow.png b/static/images/status/point--arrow.png deleted file mode 100755 index 600b9fc8..00000000 Binary files a/static/images/status/point--arrow.png and /dev/null differ diff --git a/static/images/status/point--exclamation.png b/static/images/status/point--exclamation.png deleted file mode 100755 index 41f00334..00000000 Binary files a/static/images/status/point--exclamation.png and /dev/null differ diff --git a/static/images/status/point--minus.png b/static/images/status/point--minus.png deleted file mode 100755 index 8727f00f..00000000 Binary files a/static/images/status/point--minus.png and /dev/null differ diff --git a/static/images/status/point--pencil.png b/static/images/status/point--pencil.png deleted file mode 100755 index bae53080..00000000 Binary files a/static/images/status/point--pencil.png and /dev/null differ diff --git a/static/images/status/point--plus.png b/static/images/status/point--plus.png deleted file mode 100755 index f784c2d6..00000000 Binary files a/static/images/status/point--plus.png and /dev/null differ diff --git a/static/images/status/point-bronze.png b/static/images/status/point-bronze.png deleted file mode 100755 index 555ea3ed..00000000 Binary files a/static/images/status/point-bronze.png and /dev/null differ diff --git a/static/images/status/point-silver.png b/static/images/status/point-silver.png deleted file mode 100755 index 113c591d..00000000 Binary files a/static/images/status/point-silver.png and /dev/null differ diff --git a/static/images/status/point-small.png b/static/images/status/point-small.png deleted file mode 100755 index 13a304b9..00000000 Binary files a/static/images/status/point-small.png and /dev/null differ diff --git a/static/images/status/point.png b/static/images/status/point.png deleted file mode 100755 index 1776e06e..00000000 Binary files a/static/images/status/point.png and /dev/null differ diff --git a/static/images/status/points.png b/static/images/status/points.png deleted file mode 100755 index d5178111..00000000 Binary files a/static/images/status/points.png and /dev/null differ diff --git a/static/images/status/postage-stamp--arrow.png b/static/images/status/postage-stamp--arrow.png deleted file mode 100755 index 86b3fa5a..00000000 Binary files a/static/images/status/postage-stamp--arrow.png and /dev/null differ diff --git a/static/images/status/postage-stamp--exclamation.png b/static/images/status/postage-stamp--exclamation.png deleted file mode 100755 index 3fa2202e..00000000 Binary files a/static/images/status/postage-stamp--exclamation.png and /dev/null differ diff --git a/static/images/status/postage-stamp--minus.png b/static/images/status/postage-stamp--minus.png deleted file mode 100755 index 12f36bcb..00000000 Binary files a/static/images/status/postage-stamp--minus.png and /dev/null differ diff --git a/static/images/status/postage-stamp--pencil.png b/static/images/status/postage-stamp--pencil.png deleted file mode 100755 index 177ec1b1..00000000 Binary files a/static/images/status/postage-stamp--pencil.png and /dev/null differ diff --git a/static/images/status/postage-stamp--plus.png b/static/images/status/postage-stamp--plus.png deleted file mode 100755 index 248439cc..00000000 Binary files a/static/images/status/postage-stamp--plus.png and /dev/null differ diff --git a/static/images/status/postage-stamp.png b/static/images/status/postage-stamp.png deleted file mode 100755 index 527f55af..00000000 Binary files a/static/images/status/postage-stamp.png and /dev/null differ diff --git a/static/images/status/present--arrow.png b/static/images/status/present--arrow.png deleted file mode 100755 index 2dc4b4f0..00000000 Binary files a/static/images/status/present--arrow.png and /dev/null differ diff --git a/static/images/status/present--exclamation.png b/static/images/status/present--exclamation.png deleted file mode 100755 index 45d0a9a5..00000000 Binary files a/static/images/status/present--exclamation.png and /dev/null differ diff --git a/static/images/status/present--minus.png b/static/images/status/present--minus.png deleted file mode 100755 index 9caeb436..00000000 Binary files a/static/images/status/present--minus.png and /dev/null differ diff --git a/static/images/status/present--pencil.png b/static/images/status/present--pencil.png deleted file mode 100755 index 616c1827..00000000 Binary files a/static/images/status/present--pencil.png and /dev/null differ diff --git a/static/images/status/present--plus.png b/static/images/status/present--plus.png deleted file mode 100755 index ecff5d6c..00000000 Binary files a/static/images/status/present--plus.png and /dev/null differ diff --git a/static/images/status/present-label.png b/static/images/status/present-label.png deleted file mode 100755 index 022b4eb7..00000000 Binary files a/static/images/status/present-label.png and /dev/null differ diff --git a/static/images/status/present.png b/static/images/status/present.png deleted file mode 100755 index 70efabae..00000000 Binary files a/static/images/status/present.png and /dev/null differ diff --git a/static/images/status/price-tag--arrow.png b/static/images/status/price-tag--arrow.png deleted file mode 100755 index 51e67532..00000000 Binary files a/static/images/status/price-tag--arrow.png and /dev/null differ diff --git a/static/images/status/price-tag--exclamation.png b/static/images/status/price-tag--exclamation.png deleted file mode 100755 index 9f7ecc18..00000000 Binary files a/static/images/status/price-tag--exclamation.png and /dev/null differ diff --git a/static/images/status/price-tag--minus.png b/static/images/status/price-tag--minus.png deleted file mode 100755 index 2e212159..00000000 Binary files a/static/images/status/price-tag--minus.png and /dev/null differ diff --git a/static/images/status/price-tag--pencil.png b/static/images/status/price-tag--pencil.png deleted file mode 100755 index eb324265..00000000 Binary files a/static/images/status/price-tag--pencil.png and /dev/null differ diff --git a/static/images/status/price-tag--plus.png b/static/images/status/price-tag--plus.png deleted file mode 100755 index 0f8bd25c..00000000 Binary files a/static/images/status/price-tag--plus.png and /dev/null differ diff --git a/static/images/status/price-tag-label.png b/static/images/status/price-tag-label.png deleted file mode 100755 index 2d68e6cd..00000000 Binary files a/static/images/status/price-tag-label.png and /dev/null differ diff --git a/static/images/status/price-tag.png b/static/images/status/price-tag.png deleted file mode 100755 index 16a793c0..00000000 Binary files a/static/images/status/price-tag.png and /dev/null differ diff --git a/static/images/status/printer--arrow.png b/static/images/status/printer--arrow.png deleted file mode 100755 index 2855416e..00000000 Binary files a/static/images/status/printer--arrow.png and /dev/null differ diff --git a/static/images/status/printer--exclamation.png b/static/images/status/printer--exclamation.png deleted file mode 100755 index 3852f4ed..00000000 Binary files a/static/images/status/printer--exclamation.png and /dev/null differ diff --git a/static/images/status/printer--minus.png b/static/images/status/printer--minus.png deleted file mode 100755 index 32a5e9b9..00000000 Binary files a/static/images/status/printer--minus.png and /dev/null differ diff --git a/static/images/status/printer--pencil.png b/static/images/status/printer--pencil.png deleted file mode 100755 index 98fc2e65..00000000 Binary files a/static/images/status/printer--pencil.png and /dev/null differ diff --git a/static/images/status/printer--plus.png b/static/images/status/printer--plus.png deleted file mode 100755 index 3638178b..00000000 Binary files a/static/images/status/printer--plus.png and /dev/null differ diff --git a/static/images/status/printer-empty.png b/static/images/status/printer-empty.png deleted file mode 100755 index e6035ed3..00000000 Binary files a/static/images/status/printer-empty.png and /dev/null differ diff --git a/static/images/status/printer-network.png b/static/images/status/printer-network.png deleted file mode 100755 index 301f710d..00000000 Binary files a/static/images/status/printer-network.png and /dev/null differ diff --git a/static/images/status/printer-small.png b/static/images/status/printer-small.png deleted file mode 100755 index 604320d2..00000000 Binary files a/static/images/status/printer-small.png and /dev/null differ diff --git a/static/images/status/printer.png b/static/images/status/printer.png deleted file mode 100755 index 9edfbbcb..00000000 Binary files a/static/images/status/printer.png and /dev/null differ diff --git a/static/images/status/processor.png b/static/images/status/processor.png deleted file mode 100755 index 37e97942..00000000 Binary files a/static/images/status/processor.png and /dev/null differ diff --git a/static/images/status/projection-screen--arrow.png b/static/images/status/projection-screen--arrow.png deleted file mode 100755 index 825cd301..00000000 Binary files a/static/images/status/projection-screen--arrow.png and /dev/null differ diff --git a/static/images/status/projection-screen--exclamation.png b/static/images/status/projection-screen--exclamation.png deleted file mode 100755 index 2c97423c..00000000 Binary files a/static/images/status/projection-screen--exclamation.png and /dev/null differ diff --git a/static/images/status/projection-screen--minus.png b/static/images/status/projection-screen--minus.png deleted file mode 100755 index 58a6da03..00000000 Binary files a/static/images/status/projection-screen--minus.png and /dev/null differ diff --git a/static/images/status/projection-screen--pencil.png b/static/images/status/projection-screen--pencil.png deleted file mode 100755 index 01e498c3..00000000 Binary files a/static/images/status/projection-screen--pencil.png and /dev/null differ diff --git a/static/images/status/projection-screen--plus.png b/static/images/status/projection-screen--plus.png deleted file mode 100755 index 18510eab..00000000 Binary files a/static/images/status/projection-screen--plus.png and /dev/null differ diff --git a/static/images/status/projection-screen-presentation.png b/static/images/status/projection-screen-presentation.png deleted file mode 100755 index e1e6e091..00000000 Binary files a/static/images/status/projection-screen-presentation.png and /dev/null differ diff --git a/static/images/status/projection-screen.png b/static/images/status/projection-screen.png deleted file mode 100755 index 03199601..00000000 Binary files a/static/images/status/projection-screen.png and /dev/null differ diff --git a/static/images/status/property-blue.png b/static/images/status/property-blue.png deleted file mode 100755 index 2c63f2f1..00000000 Binary files a/static/images/status/property-blue.png and /dev/null differ diff --git a/static/images/status/property-export.png b/static/images/status/property-export.png deleted file mode 100755 index 15b7afc9..00000000 Binary files a/static/images/status/property-export.png and /dev/null differ diff --git a/static/images/status/property-import.png b/static/images/status/property-import.png deleted file mode 100755 index b7036f9a..00000000 Binary files a/static/images/status/property-import.png and /dev/null differ diff --git a/static/images/status/property.png b/static/images/status/property.png deleted file mode 100755 index b0e549e4..00000000 Binary files a/static/images/status/property.png and /dev/null differ diff --git a/static/images/status/puzzle--arrow.png b/static/images/status/puzzle--arrow.png deleted file mode 100755 index 16d2ef58..00000000 Binary files a/static/images/status/puzzle--arrow.png and /dev/null differ diff --git a/static/images/status/puzzle--exclamation.png b/static/images/status/puzzle--exclamation.png deleted file mode 100755 index b39859b7..00000000 Binary files a/static/images/status/puzzle--exclamation.png and /dev/null differ diff --git a/static/images/status/puzzle--minus.png b/static/images/status/puzzle--minus.png deleted file mode 100755 index 14712452..00000000 Binary files a/static/images/status/puzzle--minus.png and /dev/null differ diff --git a/static/images/status/puzzle--pencil.png b/static/images/status/puzzle--pencil.png deleted file mode 100755 index c6aa3255..00000000 Binary files a/static/images/status/puzzle--pencil.png and /dev/null differ diff --git a/static/images/status/puzzle--plus.png b/static/images/status/puzzle--plus.png deleted file mode 100755 index 932d1dec..00000000 Binary files a/static/images/status/puzzle--plus.png and /dev/null differ diff --git a/static/images/status/puzzle.png b/static/images/status/puzzle.png deleted file mode 100755 index 172881f9..00000000 Binary files a/static/images/status/puzzle.png and /dev/null differ diff --git a/static/images/status/question-balloon.png b/static/images/status/question-balloon.png deleted file mode 100755 index 05a1e62e..00000000 Binary files a/static/images/status/question-balloon.png and /dev/null differ diff --git a/static/images/status/question-button.png b/static/images/status/question-button.png deleted file mode 100755 index aa0f4eac..00000000 Binary files a/static/images/status/question-button.png and /dev/null differ diff --git a/static/images/status/question-frame.png b/static/images/status/question-frame.png deleted file mode 100755 index 4db0f088..00000000 Binary files a/static/images/status/question-frame.png and /dev/null differ diff --git a/static/images/status/question-octagon-frame.png b/static/images/status/question-octagon-frame.png deleted file mode 100755 index d8f40613..00000000 Binary files a/static/images/status/question-octagon-frame.png and /dev/null differ diff --git a/static/images/status/question-octagon.png b/static/images/status/question-octagon.png deleted file mode 100755 index 6817eb64..00000000 Binary files a/static/images/status/question-octagon.png and /dev/null differ diff --git a/static/images/status/question-shield.png b/static/images/status/question-shield.png deleted file mode 100755 index dfb45d8e..00000000 Binary files a/static/images/status/question-shield.png and /dev/null differ diff --git a/static/images/status/question-small-white.png b/static/images/status/question-small-white.png deleted file mode 100755 index 132d3f5b..00000000 Binary files a/static/images/status/question-small-white.png and /dev/null differ diff --git a/static/images/status/question-small.png b/static/images/status/question-small.png deleted file mode 100755 index 71285810..00000000 Binary files a/static/images/status/question-small.png and /dev/null differ diff --git a/static/images/status/quill--arrow.png b/static/images/status/quill--arrow.png deleted file mode 100755 index 6e3c3220..00000000 Binary files a/static/images/status/quill--arrow.png and /dev/null differ diff --git a/static/images/status/quill--exclamation.png b/static/images/status/quill--exclamation.png deleted file mode 100755 index 33d99efd..00000000 Binary files a/static/images/status/quill--exclamation.png and /dev/null differ diff --git a/static/images/status/quill--minus.png b/static/images/status/quill--minus.png deleted file mode 100755 index 9300c4c4..00000000 Binary files a/static/images/status/quill--minus.png and /dev/null differ diff --git a/static/images/status/quill--plus.png b/static/images/status/quill--plus.png deleted file mode 100755 index 6bdadd6e..00000000 Binary files a/static/images/status/quill--plus.png and /dev/null differ diff --git a/static/images/status/quill.png b/static/images/status/quill.png deleted file mode 100755 index 0e2b42d7..00000000 Binary files a/static/images/status/quill.png and /dev/null differ diff --git a/static/images/status/rainbow.png b/static/images/status/rainbow.png deleted file mode 100755 index 8064d426..00000000 Binary files a/static/images/status/rainbow.png and /dev/null differ diff --git a/static/images/status/receipt--arrow.png b/static/images/status/receipt--arrow.png deleted file mode 100755 index 913f3295..00000000 Binary files a/static/images/status/receipt--arrow.png and /dev/null differ diff --git a/static/images/status/receipt--exclamation.png b/static/images/status/receipt--exclamation.png deleted file mode 100755 index 7ad43af1..00000000 Binary files a/static/images/status/receipt--exclamation.png and /dev/null differ diff --git a/static/images/status/receipt--minus.png b/static/images/status/receipt--minus.png deleted file mode 100755 index 068e423c..00000000 Binary files a/static/images/status/receipt--minus.png and /dev/null differ diff --git a/static/images/status/receipt--pencil.png b/static/images/status/receipt--pencil.png deleted file mode 100755 index c2cec544..00000000 Binary files a/static/images/status/receipt--pencil.png and /dev/null differ diff --git a/static/images/status/receipt--plus.png b/static/images/status/receipt--plus.png deleted file mode 100755 index 0d285b25..00000000 Binary files a/static/images/status/receipt--plus.png and /dev/null differ diff --git a/static/images/status/receipt-excel-text.png b/static/images/status/receipt-excel-text.png deleted file mode 100755 index 05aba462..00000000 Binary files a/static/images/status/receipt-excel-text.png and /dev/null differ diff --git a/static/images/status/receipt-excel.png b/static/images/status/receipt-excel.png deleted file mode 100755 index e199b739..00000000 Binary files a/static/images/status/receipt-excel.png and /dev/null differ diff --git a/static/images/status/receipt-export.png b/static/images/status/receipt-export.png deleted file mode 100755 index a0ecee8c..00000000 Binary files a/static/images/status/receipt-export.png and /dev/null differ diff --git a/static/images/status/receipt-import.png b/static/images/status/receipt-import.png deleted file mode 100755 index 0f91d3e8..00000000 Binary files a/static/images/status/receipt-import.png and /dev/null differ diff --git a/static/images/status/receipt-invoice.png b/static/images/status/receipt-invoice.png deleted file mode 100755 index fed61407..00000000 Binary files a/static/images/status/receipt-invoice.png and /dev/null differ diff --git a/static/images/status/receipt-shred.png b/static/images/status/receipt-shred.png deleted file mode 100755 index 54fd873c..00000000 Binary files a/static/images/status/receipt-shred.png and /dev/null differ diff --git a/static/images/status/receipt-stamp.png b/static/images/status/receipt-stamp.png deleted file mode 100755 index c7c55b6c..00000000 Binary files a/static/images/status/receipt-stamp.png and /dev/null differ diff --git a/static/images/status/receipt-text.png b/static/images/status/receipt-text.png deleted file mode 100755 index 1772ac72..00000000 Binary files a/static/images/status/receipt-text.png and /dev/null differ diff --git a/static/images/status/receipt.png b/static/images/status/receipt.png deleted file mode 100755 index 1548b0ac..00000000 Binary files a/static/images/status/receipt.png and /dev/null differ diff --git a/static/images/status/receipts-text.png b/static/images/status/receipts-text.png deleted file mode 100755 index 14c5d0fb..00000000 Binary files a/static/images/status/receipts-text.png and /dev/null differ diff --git a/static/images/status/receipts.png b/static/images/status/receipts.png deleted file mode 100755 index aedc628a..00000000 Binary files a/static/images/status/receipts.png and /dev/null differ diff --git a/static/images/status/report--arrow.png b/static/images/status/report--arrow.png deleted file mode 100755 index fe3b7ea7..00000000 Binary files a/static/images/status/report--arrow.png and /dev/null differ diff --git a/static/images/status/report--exclamation.png b/static/images/status/report--exclamation.png deleted file mode 100755 index 70248841..00000000 Binary files a/static/images/status/report--exclamation.png and /dev/null differ diff --git a/static/images/status/report--minus.png b/static/images/status/report--minus.png deleted file mode 100755 index d96585be..00000000 Binary files a/static/images/status/report--minus.png and /dev/null differ diff --git a/static/images/status/report--pencil.png b/static/images/status/report--pencil.png deleted file mode 100755 index ac0b3ebb..00000000 Binary files a/static/images/status/report--pencil.png and /dev/null differ diff --git a/static/images/status/report--plus.png b/static/images/status/report--plus.png deleted file mode 100755 index 193ccb71..00000000 Binary files a/static/images/status/report--plus.png and /dev/null differ diff --git a/static/images/status/report-excel.png b/static/images/status/report-excel.png deleted file mode 100755 index 262c79e7..00000000 Binary files a/static/images/status/report-excel.png and /dev/null differ diff --git a/static/images/status/report-paper.png b/static/images/status/report-paper.png deleted file mode 100755 index c435e115..00000000 Binary files a/static/images/status/report-paper.png and /dev/null differ diff --git a/static/images/status/report-word.png b/static/images/status/report-word.png deleted file mode 100755 index d1e0fc96..00000000 Binary files a/static/images/status/report-word.png and /dev/null differ diff --git a/static/images/status/report.png b/static/images/status/report.png deleted file mode 100755 index aa8bbe92..00000000 Binary files a/static/images/status/report.png and /dev/null differ diff --git a/static/images/status/reports-stack.png b/static/images/status/reports-stack.png deleted file mode 100755 index 311b53d6..00000000 Binary files a/static/images/status/reports-stack.png and /dev/null differ diff --git a/static/images/status/reports.png b/static/images/status/reports.png deleted file mode 100755 index 599ac69c..00000000 Binary files a/static/images/status/reports.png and /dev/null differ diff --git a/static/images/status/robot-off.png b/static/images/status/robot-off.png deleted file mode 100755 index 228dd13f..00000000 Binary files a/static/images/status/robot-off.png and /dev/null differ diff --git a/static/images/status/robot.png b/static/images/status/robot.png deleted file mode 100755 index df2b8998..00000000 Binary files a/static/images/status/robot.png and /dev/null differ diff --git a/static/images/status/rocket--arrow.png b/static/images/status/rocket--arrow.png deleted file mode 100755 index 8d71355b..00000000 Binary files a/static/images/status/rocket--arrow.png and /dev/null differ diff --git a/static/images/status/rocket--exclamation.png b/static/images/status/rocket--exclamation.png deleted file mode 100755 index e7cbf946..00000000 Binary files a/static/images/status/rocket--exclamation.png and /dev/null differ diff --git a/static/images/status/rocket--minus.png b/static/images/status/rocket--minus.png deleted file mode 100755 index 876e95bb..00000000 Binary files a/static/images/status/rocket--minus.png and /dev/null differ diff --git a/static/images/status/rocket--pencil.png b/static/images/status/rocket--pencil.png deleted file mode 100755 index b49d0804..00000000 Binary files a/static/images/status/rocket--pencil.png and /dev/null differ diff --git a/static/images/status/rocket--plus.png b/static/images/status/rocket--plus.png deleted file mode 100755 index bdd45610..00000000 Binary files a/static/images/status/rocket--plus.png and /dev/null differ diff --git a/static/images/status/rocket-fly.png b/static/images/status/rocket-fly.png deleted file mode 100755 index 61131bff..00000000 Binary files a/static/images/status/rocket-fly.png and /dev/null differ diff --git a/static/images/status/rocket.png b/static/images/status/rocket.png deleted file mode 100755 index c0858fe2..00000000 Binary files a/static/images/status/rocket.png and /dev/null differ diff --git a/static/images/status/ruby.png b/static/images/status/ruby.png deleted file mode 100755 index 7db6ba0f..00000000 Binary files a/static/images/status/ruby.png and /dev/null differ diff --git a/static/images/status/ruler--arrow.png b/static/images/status/ruler--arrow.png deleted file mode 100755 index 24c65fb3..00000000 Binary files a/static/images/status/ruler--arrow.png and /dev/null differ diff --git a/static/images/status/ruler--exclamation.png b/static/images/status/ruler--exclamation.png deleted file mode 100755 index 53e06c9c..00000000 Binary files a/static/images/status/ruler--exclamation.png and /dev/null differ diff --git a/static/images/status/ruler--minus.png b/static/images/status/ruler--minus.png deleted file mode 100755 index 6ab17455..00000000 Binary files a/static/images/status/ruler--minus.png and /dev/null differ diff --git a/static/images/status/ruler--pencil.png b/static/images/status/ruler--pencil.png deleted file mode 100755 index 941af0e3..00000000 Binary files a/static/images/status/ruler--pencil.png and /dev/null differ diff --git a/static/images/status/ruler--plus.png b/static/images/status/ruler--plus.png deleted file mode 100755 index e1cc1544..00000000 Binary files a/static/images/status/ruler--plus.png and /dev/null differ diff --git a/static/images/status/ruler-crop.png b/static/images/status/ruler-crop.png deleted file mode 100755 index 6d8446fa..00000000 Binary files a/static/images/status/ruler-crop.png and /dev/null differ diff --git a/static/images/status/ruler-triangle.png b/static/images/status/ruler-triangle.png deleted file mode 100755 index 0cd3155e..00000000 Binary files a/static/images/status/ruler-triangle.png and /dev/null differ diff --git a/static/images/status/ruler.png b/static/images/status/ruler.png deleted file mode 100755 index 3e307c46..00000000 Binary files a/static/images/status/ruler.png and /dev/null differ diff --git a/static/images/status/safe--arrow.png b/static/images/status/safe--arrow.png deleted file mode 100755 index ed8c0206..00000000 Binary files a/static/images/status/safe--arrow.png and /dev/null differ diff --git a/static/images/status/safe--exclamation.png b/static/images/status/safe--exclamation.png deleted file mode 100755 index f32f1da6..00000000 Binary files a/static/images/status/safe--exclamation.png and /dev/null differ diff --git a/static/images/status/safe--minus.png b/static/images/status/safe--minus.png deleted file mode 100755 index 043e04d6..00000000 Binary files a/static/images/status/safe--minus.png and /dev/null differ diff --git a/static/images/status/safe--pencil.png b/static/images/status/safe--pencil.png deleted file mode 100755 index c9af5f86..00000000 Binary files a/static/images/status/safe--pencil.png and /dev/null differ diff --git a/static/images/status/safe--plus.png b/static/images/status/safe--plus.png deleted file mode 100755 index e2d7eb96..00000000 Binary files a/static/images/status/safe--plus.png and /dev/null differ diff --git a/static/images/status/safe.png b/static/images/status/safe.png deleted file mode 100755 index e3d7da9d..00000000 Binary files a/static/images/status/safe.png and /dev/null differ diff --git a/static/images/status/scanner--arrow.png b/static/images/status/scanner--arrow.png deleted file mode 100755 index 2aface75..00000000 Binary files a/static/images/status/scanner--arrow.png and /dev/null differ diff --git a/static/images/status/scanner--exclamation.png b/static/images/status/scanner--exclamation.png deleted file mode 100755 index 08cbd6b6..00000000 Binary files a/static/images/status/scanner--exclamation.png and /dev/null differ diff --git a/static/images/status/scanner--minus.png b/static/images/status/scanner--minus.png deleted file mode 100755 index f39d2bb8..00000000 Binary files a/static/images/status/scanner--minus.png and /dev/null differ diff --git a/static/images/status/scanner--pencil.png b/static/images/status/scanner--pencil.png deleted file mode 100755 index 830cc80c..00000000 Binary files a/static/images/status/scanner--pencil.png and /dev/null differ diff --git a/static/images/status/scanner--plus.png b/static/images/status/scanner--plus.png deleted file mode 100755 index 747e889a..00000000 Binary files a/static/images/status/scanner--plus.png and /dev/null differ diff --git a/static/images/status/scanner-off.png b/static/images/status/scanner-off.png deleted file mode 100755 index 90a153cb..00000000 Binary files a/static/images/status/scanner-off.png and /dev/null differ diff --git a/static/images/status/scanner.png b/static/images/status/scanner.png deleted file mode 100755 index 9dfc8cfb..00000000 Binary files a/static/images/status/scanner.png and /dev/null differ diff --git a/static/images/status/scissors--arrow.png b/static/images/status/scissors--arrow.png deleted file mode 100755 index 76988628..00000000 Binary files a/static/images/status/scissors--arrow.png and /dev/null differ diff --git a/static/images/status/scissors--exclamation.png b/static/images/status/scissors--exclamation.png deleted file mode 100755 index ee734935..00000000 Binary files a/static/images/status/scissors--exclamation.png and /dev/null differ diff --git a/static/images/status/scissors--minus.png b/static/images/status/scissors--minus.png deleted file mode 100755 index 0d679a83..00000000 Binary files a/static/images/status/scissors--minus.png and /dev/null differ diff --git a/static/images/status/scissors--pencil.png b/static/images/status/scissors--pencil.png deleted file mode 100755 index f38401fd..00000000 Binary files a/static/images/status/scissors--pencil.png and /dev/null differ diff --git a/static/images/status/scissors--plus.png b/static/images/status/scissors--plus.png deleted file mode 100755 index ba358d31..00000000 Binary files a/static/images/status/scissors--plus.png and /dev/null differ diff --git a/static/images/status/scissors-blue.png b/static/images/status/scissors-blue.png deleted file mode 100755 index ca21cb2a..00000000 Binary files a/static/images/status/scissors-blue.png and /dev/null differ diff --git a/static/images/status/scissors.png b/static/images/status/scissors.png deleted file mode 100755 index 85f80b59..00000000 Binary files a/static/images/status/scissors.png and /dev/null differ diff --git a/static/images/status/screwdriver--arrow.png b/static/images/status/screwdriver--arrow.png deleted file mode 100755 index 4c24f616..00000000 Binary files a/static/images/status/screwdriver--arrow.png and /dev/null differ diff --git a/static/images/status/screwdriver--exclamation.png b/static/images/status/screwdriver--exclamation.png deleted file mode 100755 index bf67556e..00000000 Binary files a/static/images/status/screwdriver--exclamation.png and /dev/null differ diff --git a/static/images/status/screwdriver--minus.png b/static/images/status/screwdriver--minus.png deleted file mode 100755 index cf251a5a..00000000 Binary files a/static/images/status/screwdriver--minus.png and /dev/null differ diff --git a/static/images/status/screwdriver--pencil.png b/static/images/status/screwdriver--pencil.png deleted file mode 100755 index 3c924491..00000000 Binary files a/static/images/status/screwdriver--pencil.png and /dev/null differ diff --git a/static/images/status/screwdriver--plus.png b/static/images/status/screwdriver--plus.png deleted file mode 100755 index 89a32261..00000000 Binary files a/static/images/status/screwdriver--plus.png and /dev/null differ diff --git a/static/images/status/screwdriver.png b/static/images/status/screwdriver.png deleted file mode 100755 index db3516d4..00000000 Binary files a/static/images/status/screwdriver.png and /dev/null differ diff --git a/static/images/status/script--arrow.png b/static/images/status/script--arrow.png deleted file mode 100755 index dcf51da8..00000000 Binary files a/static/images/status/script--arrow.png and /dev/null differ diff --git a/static/images/status/script--exclamation.png b/static/images/status/script--exclamation.png deleted file mode 100755 index fc1e03c8..00000000 Binary files a/static/images/status/script--exclamation.png and /dev/null differ diff --git a/static/images/status/script--minus.png b/static/images/status/script--minus.png deleted file mode 100755 index fc7b9f4a..00000000 Binary files a/static/images/status/script--minus.png and /dev/null differ diff --git a/static/images/status/script--pencil.png b/static/images/status/script--pencil.png deleted file mode 100755 index e999199d..00000000 Binary files a/static/images/status/script--pencil.png and /dev/null differ diff --git a/static/images/status/script--plus.png b/static/images/status/script--plus.png deleted file mode 100755 index fae3d7d5..00000000 Binary files a/static/images/status/script--plus.png and /dev/null differ diff --git a/static/images/status/script-attribute-b.png b/static/images/status/script-attribute-b.png deleted file mode 100755 index deff4174..00000000 Binary files a/static/images/status/script-attribute-b.png and /dev/null differ diff --git a/static/images/status/script-attribute-c.png b/static/images/status/script-attribute-c.png deleted file mode 100755 index 7aca3f88..00000000 Binary files a/static/images/status/script-attribute-c.png and /dev/null differ diff --git a/static/images/status/script-attribute-d.png b/static/images/status/script-attribute-d.png deleted file mode 100755 index 85748773..00000000 Binary files a/static/images/status/script-attribute-d.png and /dev/null differ diff --git a/static/images/status/script-attribute-e.png b/static/images/status/script-attribute-e.png deleted file mode 100755 index b27ad98a..00000000 Binary files a/static/images/status/script-attribute-e.png and /dev/null differ diff --git a/static/images/status/script-attribute-f.png b/static/images/status/script-attribute-f.png deleted file mode 100755 index 111612ac..00000000 Binary files a/static/images/status/script-attribute-f.png and /dev/null differ diff --git a/static/images/status/script-attribute-g.png b/static/images/status/script-attribute-g.png deleted file mode 100755 index b83a885c..00000000 Binary files a/static/images/status/script-attribute-g.png and /dev/null differ diff --git a/static/images/status/script-attribute-h.png b/static/images/status/script-attribute-h.png deleted file mode 100755 index 46398b85..00000000 Binary files a/static/images/status/script-attribute-h.png and /dev/null differ diff --git a/static/images/status/script-attribute-i.png b/static/images/status/script-attribute-i.png deleted file mode 100755 index e1f09a6e..00000000 Binary files a/static/images/status/script-attribute-i.png and /dev/null differ diff --git a/static/images/status/script-attribute-j.png b/static/images/status/script-attribute-j.png deleted file mode 100755 index 244df116..00000000 Binary files a/static/images/status/script-attribute-j.png and /dev/null differ diff --git a/static/images/status/script-attribute-k.png b/static/images/status/script-attribute-k.png deleted file mode 100755 index d650eb2d..00000000 Binary files a/static/images/status/script-attribute-k.png and /dev/null differ diff --git a/static/images/status/script-attribute-l.png b/static/images/status/script-attribute-l.png deleted file mode 100755 index 2a093ac8..00000000 Binary files a/static/images/status/script-attribute-l.png and /dev/null differ diff --git a/static/images/status/script-attribute-m.png b/static/images/status/script-attribute-m.png deleted file mode 100755 index 1eea46f3..00000000 Binary files a/static/images/status/script-attribute-m.png and /dev/null differ diff --git a/static/images/status/script-attribute-n.png b/static/images/status/script-attribute-n.png deleted file mode 100755 index 7ae18dca..00000000 Binary files a/static/images/status/script-attribute-n.png and /dev/null differ diff --git a/static/images/status/script-attribute-o.png b/static/images/status/script-attribute-o.png deleted file mode 100755 index d55b9285..00000000 Binary files a/static/images/status/script-attribute-o.png and /dev/null differ diff --git a/static/images/status/script-attribute-p.png b/static/images/status/script-attribute-p.png deleted file mode 100755 index f598f00e..00000000 Binary files a/static/images/status/script-attribute-p.png and /dev/null differ diff --git a/static/images/status/script-attribute-q.png b/static/images/status/script-attribute-q.png deleted file mode 100755 index f5f70265..00000000 Binary files a/static/images/status/script-attribute-q.png and /dev/null differ diff --git a/static/images/status/script-attribute-r.png b/static/images/status/script-attribute-r.png deleted file mode 100755 index 176f67d6..00000000 Binary files a/static/images/status/script-attribute-r.png and /dev/null differ diff --git a/static/images/status/script-attribute-s.png b/static/images/status/script-attribute-s.png deleted file mode 100755 index 8fa6ba4e..00000000 Binary files a/static/images/status/script-attribute-s.png and /dev/null differ diff --git a/static/images/status/script-attribute-t.png b/static/images/status/script-attribute-t.png deleted file mode 100755 index 5d5d41a0..00000000 Binary files a/static/images/status/script-attribute-t.png and /dev/null differ diff --git a/static/images/status/script-attribute-u.png b/static/images/status/script-attribute-u.png deleted file mode 100755 index 94b13c44..00000000 Binary files a/static/images/status/script-attribute-u.png and /dev/null differ diff --git a/static/images/status/script-attribute-v.png b/static/images/status/script-attribute-v.png deleted file mode 100755 index 4099374f..00000000 Binary files a/static/images/status/script-attribute-v.png and /dev/null differ diff --git a/static/images/status/script-attribute-w.png b/static/images/status/script-attribute-w.png deleted file mode 100755 index 5063bebf..00000000 Binary files a/static/images/status/script-attribute-w.png and /dev/null differ diff --git a/static/images/status/script-attribute-x.png b/static/images/status/script-attribute-x.png deleted file mode 100755 index c653b1bf..00000000 Binary files a/static/images/status/script-attribute-x.png and /dev/null differ diff --git a/static/images/status/script-attribute-y.png b/static/images/status/script-attribute-y.png deleted file mode 100755 index f17c33e0..00000000 Binary files a/static/images/status/script-attribute-y.png and /dev/null differ diff --git a/static/images/status/script-attribute-z.png b/static/images/status/script-attribute-z.png deleted file mode 100755 index b93aa4e1..00000000 Binary files a/static/images/status/script-attribute-z.png and /dev/null differ diff --git a/static/images/status/script-attribute.png b/static/images/status/script-attribute.png deleted file mode 100755 index 65d6b880..00000000 Binary files a/static/images/status/script-attribute.png and /dev/null differ diff --git a/static/images/status/script-binary.png b/static/images/status/script-binary.png deleted file mode 100755 index de79d7b4..00000000 Binary files a/static/images/status/script-binary.png and /dev/null differ diff --git a/static/images/status/script-block.png b/static/images/status/script-block.png deleted file mode 100755 index fe7c4de7..00000000 Binary files a/static/images/status/script-block.png and /dev/null differ diff --git a/static/images/status/script-code.png b/static/images/status/script-code.png deleted file mode 100755 index d398622d..00000000 Binary files a/static/images/status/script-code.png and /dev/null differ diff --git a/static/images/status/script-excel.png b/static/images/status/script-excel.png deleted file mode 100755 index a5342c84..00000000 Binary files a/static/images/status/script-excel.png and /dev/null differ diff --git a/static/images/status/script-export.png b/static/images/status/script-export.png deleted file mode 100755 index f78bfb28..00000000 Binary files a/static/images/status/script-export.png and /dev/null differ diff --git a/static/images/status/script-flash.png b/static/images/status/script-flash.png deleted file mode 100755 index 152da354..00000000 Binary files a/static/images/status/script-flash.png and /dev/null differ diff --git a/static/images/status/script-globe.png b/static/images/status/script-globe.png deleted file mode 100755 index 3c31fb92..00000000 Binary files a/static/images/status/script-globe.png and /dev/null differ diff --git a/static/images/status/script-import.png b/static/images/status/script-import.png deleted file mode 100755 index ac2af80e..00000000 Binary files a/static/images/status/script-import.png and /dev/null differ diff --git a/static/images/status/script-office.png b/static/images/status/script-office.png deleted file mode 100755 index 646c3a08..00000000 Binary files a/static/images/status/script-office.png and /dev/null differ diff --git a/static/images/status/script-php.png b/static/images/status/script-php.png deleted file mode 100755 index 75938d24..00000000 Binary files a/static/images/status/script-php.png and /dev/null differ diff --git a/static/images/status/script-stamp.png b/static/images/status/script-stamp.png deleted file mode 100755 index 1e55e3fa..00000000 Binary files a/static/images/status/script-stamp.png and /dev/null differ diff --git a/static/images/status/script-text.png b/static/images/status/script-text.png deleted file mode 100755 index d9d98b1c..00000000 Binary files a/static/images/status/script-text.png and /dev/null differ diff --git a/static/images/status/script-visual-studio.png b/static/images/status/script-visual-studio.png deleted file mode 100755 index 77455618..00000000 Binary files a/static/images/status/script-visual-studio.png and /dev/null differ diff --git a/static/images/status/script-word.png b/static/images/status/script-word.png deleted file mode 100755 index f8da5620..00000000 Binary files a/static/images/status/script-word.png and /dev/null differ diff --git a/static/images/status/script.png b/static/images/status/script.png deleted file mode 100755 index 28f7652e..00000000 Binary files a/static/images/status/script.png and /dev/null differ diff --git a/static/images/status/scripts-text.png b/static/images/status/scripts-text.png deleted file mode 100755 index d81aeae7..00000000 Binary files a/static/images/status/scripts-text.png and /dev/null differ diff --git a/static/images/status/scripts.png b/static/images/status/scripts.png deleted file mode 100755 index a56871ec..00000000 Binary files a/static/images/status/scripts.png and /dev/null differ diff --git a/static/images/status/selection-input.png b/static/images/status/selection-input.png deleted file mode 100755 index 18e2d70b..00000000 Binary files a/static/images/status/selection-input.png and /dev/null differ diff --git a/static/images/status/selection-select-input.png b/static/images/status/selection-select-input.png deleted file mode 100755 index bf14e341..00000000 Binary files a/static/images/status/selection-select-input.png and /dev/null differ diff --git a/static/images/status/selection-select.png b/static/images/status/selection-select.png deleted file mode 100755 index 775f1ec1..00000000 Binary files a/static/images/status/selection-select.png and /dev/null differ diff --git a/static/images/status/selection.png b/static/images/status/selection.png deleted file mode 100755 index 02118fa0..00000000 Binary files a/static/images/status/selection.png and /dev/null differ diff --git a/static/images/status/server--arrow.png b/static/images/status/server--arrow.png deleted file mode 100755 index f412788e..00000000 Binary files a/static/images/status/server--arrow.png and /dev/null differ diff --git a/static/images/status/server--exclamation.png b/static/images/status/server--exclamation.png deleted file mode 100755 index c2888d19..00000000 Binary files a/static/images/status/server--exclamation.png and /dev/null differ diff --git a/static/images/status/server--minus.png b/static/images/status/server--minus.png deleted file mode 100755 index bcff347f..00000000 Binary files a/static/images/status/server--minus.png and /dev/null differ diff --git a/static/images/status/server--pencil.png b/static/images/status/server--pencil.png deleted file mode 100755 index 60a7c50f..00000000 Binary files a/static/images/status/server--pencil.png and /dev/null differ diff --git a/static/images/status/server--plus.png b/static/images/status/server--plus.png deleted file mode 100755 index 97e13f5e..00000000 Binary files a/static/images/status/server--plus.png and /dev/null differ diff --git a/static/images/status/server-cast.png b/static/images/status/server-cast.png deleted file mode 100755 index 92138665..00000000 Binary files a/static/images/status/server-cast.png and /dev/null differ diff --git a/static/images/status/server-network.png b/static/images/status/server-network.png deleted file mode 100755 index 605729d3..00000000 Binary files a/static/images/status/server-network.png and /dev/null differ diff --git a/static/images/status/server-property.png b/static/images/status/server-property.png deleted file mode 100755 index a7561736..00000000 Binary files a/static/images/status/server-property.png and /dev/null differ diff --git a/static/images/status/server.png b/static/images/status/server.png deleted file mode 100755 index ee0c7717..00000000 Binary files a/static/images/status/server.png and /dev/null differ diff --git a/static/images/status/servers-network.png b/static/images/status/servers-network.png deleted file mode 100755 index 68a39f29..00000000 Binary files a/static/images/status/servers-network.png and /dev/null differ diff --git a/static/images/status/servers.png b/static/images/status/servers.png deleted file mode 100755 index 94de7b4d..00000000 Binary files a/static/images/status/servers.png and /dev/null differ diff --git a/static/images/status/service-bell--arrow.png b/static/images/status/service-bell--arrow.png deleted file mode 100755 index e03ea193..00000000 Binary files a/static/images/status/service-bell--arrow.png and /dev/null differ diff --git a/static/images/status/service-bell--exclamation.png b/static/images/status/service-bell--exclamation.png deleted file mode 100755 index d61a73e1..00000000 Binary files a/static/images/status/service-bell--exclamation.png and /dev/null differ diff --git a/static/images/status/service-bell--minus.png b/static/images/status/service-bell--minus.png deleted file mode 100755 index 5436adc0..00000000 Binary files a/static/images/status/service-bell--minus.png and /dev/null differ diff --git a/static/images/status/service-bell--pencil.png b/static/images/status/service-bell--pencil.png deleted file mode 100755 index 36844de5..00000000 Binary files a/static/images/status/service-bell--pencil.png and /dev/null differ diff --git a/static/images/status/service-bell--plus.png b/static/images/status/service-bell--plus.png deleted file mode 100755 index 22ebafd8..00000000 Binary files a/static/images/status/service-bell--plus.png and /dev/null differ diff --git a/static/images/status/service-bell.png b/static/images/status/service-bell.png deleted file mode 100755 index 06badfa5..00000000 Binary files a/static/images/status/service-bell.png and /dev/null differ diff --git a/static/images/status/share-balloon.png b/static/images/status/share-balloon.png deleted file mode 100755 index 5dc583d1..00000000 Binary files a/static/images/status/share-balloon.png and /dev/null differ diff --git a/static/images/status/share-document.png b/static/images/status/share-document.png deleted file mode 100755 index a220200a..00000000 Binary files a/static/images/status/share-document.png and /dev/null differ diff --git a/static/images/status/share-small.png b/static/images/status/share-small.png deleted file mode 100755 index 0a0cc8a8..00000000 Binary files a/static/images/status/share-small.png and /dev/null differ diff --git a/static/images/status/share.png b/static/images/status/share.png deleted file mode 100755 index 85d1bde4..00000000 Binary files a/static/images/status/share.png and /dev/null differ diff --git a/static/images/status/shield--arrow.png b/static/images/status/shield--arrow.png deleted file mode 100755 index 5ea8cbb6..00000000 Binary files a/static/images/status/shield--arrow.png and /dev/null differ diff --git a/static/images/status/shield--exclamation.png b/static/images/status/shield--exclamation.png deleted file mode 100755 index 37c57b9f..00000000 Binary files a/static/images/status/shield--exclamation.png and /dev/null differ diff --git a/static/images/status/shield--minus.png b/static/images/status/shield--minus.png deleted file mode 100755 index 1a76000f..00000000 Binary files a/static/images/status/shield--minus.png and /dev/null differ diff --git a/static/images/status/shield--pencil.png b/static/images/status/shield--pencil.png deleted file mode 100755 index 12e1a32e..00000000 Binary files a/static/images/status/shield--pencil.png and /dev/null differ diff --git a/static/images/status/shield--plus.png b/static/images/status/shield--plus.png deleted file mode 100755 index cbddd253..00000000 Binary files a/static/images/status/shield--plus.png and /dev/null differ diff --git a/static/images/status/shield.png b/static/images/status/shield.png deleted file mode 100755 index 35db3248..00000000 Binary files a/static/images/status/shield.png and /dev/null differ diff --git a/static/images/status/shopping-basket--arrow.png b/static/images/status/shopping-basket--arrow.png deleted file mode 100755 index 8f7a0a8a..00000000 Binary files a/static/images/status/shopping-basket--arrow.png and /dev/null differ diff --git a/static/images/status/shopping-basket--exclamation.png b/static/images/status/shopping-basket--exclamation.png deleted file mode 100755 index fe1a44a4..00000000 Binary files a/static/images/status/shopping-basket--exclamation.png and /dev/null differ diff --git a/static/images/status/shopping-basket--minus.png b/static/images/status/shopping-basket--minus.png deleted file mode 100755 index e45d1459..00000000 Binary files a/static/images/status/shopping-basket--minus.png and /dev/null differ diff --git a/static/images/status/shopping-basket--pencil.png b/static/images/status/shopping-basket--pencil.png deleted file mode 100755 index e1b96520..00000000 Binary files a/static/images/status/shopping-basket--pencil.png and /dev/null differ diff --git a/static/images/status/shopping-basket--plus.png b/static/images/status/shopping-basket--plus.png deleted file mode 100755 index bfefa68d..00000000 Binary files a/static/images/status/shopping-basket--plus.png and /dev/null differ diff --git a/static/images/status/shopping-basket.png b/static/images/status/shopping-basket.png deleted file mode 100755 index ac613e62..00000000 Binary files a/static/images/status/shopping-basket.png and /dev/null differ diff --git a/static/images/status/shortcut-small.png b/static/images/status/shortcut-small.png deleted file mode 100755 index ec989d51..00000000 Binary files a/static/images/status/shortcut-small.png and /dev/null differ diff --git a/static/images/status/shortcut.png b/static/images/status/shortcut.png deleted file mode 100755 index b31d106e..00000000 Binary files a/static/images/status/shortcut.png and /dev/null differ diff --git a/static/images/status/sitemap-application-blue.png b/static/images/status/sitemap-application-blue.png deleted file mode 100755 index 542c23c4..00000000 Binary files a/static/images/status/sitemap-application-blue.png and /dev/null differ diff --git a/static/images/status/sitemap-application.png b/static/images/status/sitemap-application.png deleted file mode 100755 index 9b87b394..00000000 Binary files a/static/images/status/sitemap-application.png and /dev/null differ diff --git a/static/images/status/sitemap-image.png b/static/images/status/sitemap-image.png deleted file mode 100755 index f3387941..00000000 Binary files a/static/images/status/sitemap-image.png and /dev/null differ diff --git a/static/images/status/sitemap.png b/static/images/status/sitemap.png deleted file mode 100755 index 298343ee..00000000 Binary files a/static/images/status/sitemap.png and /dev/null differ diff --git a/static/images/status/slash-button.png b/static/images/status/slash-button.png deleted file mode 100755 index fd300d70..00000000 Binary files a/static/images/status/slash-button.png and /dev/null differ diff --git a/static/images/status/slash-small.png b/static/images/status/slash-small.png deleted file mode 100755 index 4fc0a801..00000000 Binary files a/static/images/status/slash-small.png and /dev/null differ diff --git a/static/images/status/slash.png b/static/images/status/slash.png deleted file mode 100755 index 7af3a518..00000000 Binary files a/static/images/status/slash.png and /dev/null differ diff --git a/static/images/status/slide--arrow.png b/static/images/status/slide--arrow.png deleted file mode 100755 index e9a7e51b..00000000 Binary files a/static/images/status/slide--arrow.png and /dev/null differ diff --git a/static/images/status/slide--exclamation.png b/static/images/status/slide--exclamation.png deleted file mode 100755 index 2fa85fa2..00000000 Binary files a/static/images/status/slide--exclamation.png and /dev/null differ diff --git a/static/images/status/slide--minus.png b/static/images/status/slide--minus.png deleted file mode 100755 index f3affacd..00000000 Binary files a/static/images/status/slide--minus.png and /dev/null differ diff --git a/static/images/status/slide--pencil.png b/static/images/status/slide--pencil.png deleted file mode 100755 index 42979bb5..00000000 Binary files a/static/images/status/slide--pencil.png and /dev/null differ diff --git a/static/images/status/slide--plus.png b/static/images/status/slide--plus.png deleted file mode 100755 index 62583b9c..00000000 Binary files a/static/images/status/slide--plus.png and /dev/null differ diff --git a/static/images/status/slide-powerpoint.png b/static/images/status/slide-powerpoint.png deleted file mode 100755 index 89831095..00000000 Binary files a/static/images/status/slide-powerpoint.png and /dev/null differ diff --git a/static/images/status/slide.png b/static/images/status/slide.png deleted file mode 100755 index 707291d9..00000000 Binary files a/static/images/status/slide.png and /dev/null differ diff --git a/static/images/status/slides-stack.png b/static/images/status/slides-stack.png deleted file mode 100755 index 656d872c..00000000 Binary files a/static/images/status/slides-stack.png and /dev/null differ diff --git a/static/images/status/slides.png b/static/images/status/slides.png deleted file mode 100755 index 658aa28d..00000000 Binary files a/static/images/status/slides.png and /dev/null differ diff --git a/static/images/status/smiley-confuse.png b/static/images/status/smiley-confuse.png deleted file mode 100755 index 9f3205e3..00000000 Binary files a/static/images/status/smiley-confuse.png and /dev/null differ diff --git a/static/images/status/smiley-cool.png b/static/images/status/smiley-cool.png deleted file mode 100755 index 92aa42a0..00000000 Binary files a/static/images/status/smiley-cool.png and /dev/null differ diff --git a/static/images/status/smiley-cry.png b/static/images/status/smiley-cry.png deleted file mode 100755 index d5b81da0..00000000 Binary files a/static/images/status/smiley-cry.png and /dev/null differ diff --git a/static/images/status/smiley-draw.png b/static/images/status/smiley-draw.png deleted file mode 100755 index a8d05f49..00000000 Binary files a/static/images/status/smiley-draw.png and /dev/null differ diff --git a/static/images/status/smiley-eek.png b/static/images/status/smiley-eek.png deleted file mode 100755 index 81fb5f3d..00000000 Binary files a/static/images/status/smiley-eek.png and /dev/null differ diff --git a/static/images/status/smiley-evil.png b/static/images/status/smiley-evil.png deleted file mode 100755 index 0da78cd0..00000000 Binary files a/static/images/status/smiley-evil.png and /dev/null differ diff --git a/static/images/status/smiley-fat.png b/static/images/status/smiley-fat.png deleted file mode 100755 index ee739c16..00000000 Binary files a/static/images/status/smiley-fat.png and /dev/null differ diff --git a/static/images/status/smiley-grin.png b/static/images/status/smiley-grin.png deleted file mode 100755 index 545a4c53..00000000 Binary files a/static/images/status/smiley-grin.png and /dev/null differ diff --git a/static/images/status/smiley-kiss.png b/static/images/status/smiley-kiss.png deleted file mode 100755 index 3870237f..00000000 Binary files a/static/images/status/smiley-kiss.png and /dev/null differ diff --git a/static/images/status/smiley-kitty.png b/static/images/status/smiley-kitty.png deleted file mode 100755 index 38a462d5..00000000 Binary files a/static/images/status/smiley-kitty.png and /dev/null differ diff --git a/static/images/status/smiley-lol.png b/static/images/status/smiley-lol.png deleted file mode 100755 index 5932dcf4..00000000 Binary files a/static/images/status/smiley-lol.png and /dev/null differ diff --git a/static/images/status/smiley-mad.png b/static/images/status/smiley-mad.png deleted file mode 100755 index 1ff1492e..00000000 Binary files a/static/images/status/smiley-mad.png and /dev/null differ diff --git a/static/images/status/smiley-money.png b/static/images/status/smiley-money.png deleted file mode 100755 index 957b01d9..00000000 Binary files a/static/images/status/smiley-money.png and /dev/null differ diff --git a/static/images/status/smiley-mr-green.png b/static/images/status/smiley-mr-green.png deleted file mode 100755 index 2bd2d8f4..00000000 Binary files a/static/images/status/smiley-mr-green.png and /dev/null differ diff --git a/static/images/status/smiley-neutral.png b/static/images/status/smiley-neutral.png deleted file mode 100755 index 6c0b16e8..00000000 Binary files a/static/images/status/smiley-neutral.png and /dev/null differ diff --git a/static/images/status/smiley-razz.png b/static/images/status/smiley-razz.png deleted file mode 100755 index c4ad9338..00000000 Binary files a/static/images/status/smiley-razz.png and /dev/null differ diff --git a/static/images/status/smiley-red.png b/static/images/status/smiley-red.png deleted file mode 100755 index 7ac0cac2..00000000 Binary files a/static/images/status/smiley-red.png and /dev/null differ diff --git a/static/images/status/smiley-roll-sweat.png b/static/images/status/smiley-roll-sweat.png deleted file mode 100755 index 52f12aba..00000000 Binary files a/static/images/status/smiley-roll-sweat.png and /dev/null differ diff --git a/static/images/status/smiley-roll.png b/static/images/status/smiley-roll.png deleted file mode 100755 index e3cc6cb2..00000000 Binary files a/static/images/status/smiley-roll.png and /dev/null differ diff --git a/static/images/status/smiley-sad.png b/static/images/status/smiley-sad.png deleted file mode 100755 index f2f21439..00000000 Binary files a/static/images/status/smiley-sad.png and /dev/null differ diff --git a/static/images/status/smiley-sleep.png b/static/images/status/smiley-sleep.png deleted file mode 100755 index bab7f161..00000000 Binary files a/static/images/status/smiley-sleep.png and /dev/null differ diff --git a/static/images/status/smiley-slim.png b/static/images/status/smiley-slim.png deleted file mode 100755 index d975cab4..00000000 Binary files a/static/images/status/smiley-slim.png and /dev/null differ diff --git a/static/images/status/smiley-small.png b/static/images/status/smiley-small.png deleted file mode 100755 index 5012a64a..00000000 Binary files a/static/images/status/smiley-small.png and /dev/null differ diff --git a/static/images/status/smiley-surprise.png b/static/images/status/smiley-surprise.png deleted file mode 100755 index 6ff9664d..00000000 Binary files a/static/images/status/smiley-surprise.png and /dev/null differ diff --git a/static/images/status/smiley-sweat.png b/static/images/status/smiley-sweat.png deleted file mode 100755 index 45ce91ca..00000000 Binary files a/static/images/status/smiley-sweat.png and /dev/null differ diff --git a/static/images/status/smiley-twist.png b/static/images/status/smiley-twist.png deleted file mode 100755 index 5f5c3d9c..00000000 Binary files a/static/images/status/smiley-twist.png and /dev/null differ diff --git a/static/images/status/smiley-wink.png b/static/images/status/smiley-wink.png deleted file mode 100755 index 0285a229..00000000 Binary files a/static/images/status/smiley-wink.png and /dev/null differ diff --git a/static/images/status/smiley-yell.png b/static/images/status/smiley-yell.png deleted file mode 100755 index cafc18cf..00000000 Binary files a/static/images/status/smiley-yell.png and /dev/null differ diff --git a/static/images/status/smiley-zipper.png b/static/images/status/smiley-zipper.png deleted file mode 100755 index 8c79565c..00000000 Binary files a/static/images/status/smiley-zipper.png and /dev/null differ diff --git a/static/images/status/smiley.png b/static/images/status/smiley.png deleted file mode 100755 index ce8da022..00000000 Binary files a/static/images/status/smiley.png and /dev/null differ diff --git a/static/images/status/snowman-hat.png b/static/images/status/snowman-hat.png deleted file mode 100755 index 80aa8200..00000000 Binary files a/static/images/status/snowman-hat.png and /dev/null differ diff --git a/static/images/status/snowman.png b/static/images/status/snowman.png deleted file mode 100755 index 01da03fb..00000000 Binary files a/static/images/status/snowman.png and /dev/null differ diff --git a/static/images/status/soap-body.png b/static/images/status/soap-body.png deleted file mode 100755 index 6e7e5d0d..00000000 Binary files a/static/images/status/soap-body.png and /dev/null differ diff --git a/static/images/status/soap-header.png b/static/images/status/soap-header.png deleted file mode 100755 index 7be385c8..00000000 Binary files a/static/images/status/soap-header.png and /dev/null differ diff --git a/static/images/status/soap.png b/static/images/status/soap.png deleted file mode 100755 index ae10d4f0..00000000 Binary files a/static/images/status/soap.png and /dev/null differ diff --git a/static/images/status/socket--arrow.png b/static/images/status/socket--arrow.png deleted file mode 100755 index 3ba0533c..00000000 Binary files a/static/images/status/socket--arrow.png and /dev/null differ diff --git a/static/images/status/socket--exclamation.png b/static/images/status/socket--exclamation.png deleted file mode 100755 index 9b406987..00000000 Binary files a/static/images/status/socket--exclamation.png and /dev/null differ diff --git a/static/images/status/socket--minus.png b/static/images/status/socket--minus.png deleted file mode 100755 index 244a6696..00000000 Binary files a/static/images/status/socket--minus.png and /dev/null differ diff --git a/static/images/status/socket--pencil.png b/static/images/status/socket--pencil.png deleted file mode 100755 index 5d7a9276..00000000 Binary files a/static/images/status/socket--pencil.png and /dev/null differ diff --git a/static/images/status/socket--plus.png b/static/images/status/socket--plus.png deleted file mode 100755 index 8a369b52..00000000 Binary files a/static/images/status/socket--plus.png and /dev/null differ diff --git a/static/images/status/socket.png b/static/images/status/socket.png deleted file mode 100755 index 736f882b..00000000 Binary files a/static/images/status/socket.png and /dev/null differ diff --git a/static/images/status/sockets.png b/static/images/status/sockets.png deleted file mode 100755 index 546c127c..00000000 Binary files a/static/images/status/sockets.png and /dev/null differ diff --git a/static/images/status/sofa--arrow.png b/static/images/status/sofa--arrow.png deleted file mode 100755 index 8e2fbd61..00000000 Binary files a/static/images/status/sofa--arrow.png and /dev/null differ diff --git a/static/images/status/sofa--exclamation.png b/static/images/status/sofa--exclamation.png deleted file mode 100755 index 65c16b73..00000000 Binary files a/static/images/status/sofa--exclamation.png and /dev/null differ diff --git a/static/images/status/sofa--minus.png b/static/images/status/sofa--minus.png deleted file mode 100755 index 3c8f77d0..00000000 Binary files a/static/images/status/sofa--minus.png and /dev/null differ diff --git a/static/images/status/sofa--pencil.png b/static/images/status/sofa--pencil.png deleted file mode 100755 index ae88d66a..00000000 Binary files a/static/images/status/sofa--pencil.png and /dev/null differ diff --git a/static/images/status/sofa--plus.png b/static/images/status/sofa--plus.png deleted file mode 100755 index 7f646bee..00000000 Binary files a/static/images/status/sofa--plus.png and /dev/null differ diff --git a/static/images/status/sofa.png b/static/images/status/sofa.png deleted file mode 100755 index 92ef634e..00000000 Binary files a/static/images/status/sofa.png and /dev/null differ diff --git a/static/images/status/sort--arrow.png b/static/images/status/sort--arrow.png deleted file mode 100755 index f3fd7698..00000000 Binary files a/static/images/status/sort--arrow.png and /dev/null differ diff --git a/static/images/status/sort--exclamation.png b/static/images/status/sort--exclamation.png deleted file mode 100755 index e1d1a690..00000000 Binary files a/static/images/status/sort--exclamation.png and /dev/null differ diff --git a/static/images/status/sort--minus.png b/static/images/status/sort--minus.png deleted file mode 100755 index d765ffc6..00000000 Binary files a/static/images/status/sort--minus.png and /dev/null differ diff --git a/static/images/status/sort--pencil.png b/static/images/status/sort--pencil.png deleted file mode 100755 index 58009c16..00000000 Binary files a/static/images/status/sort--pencil.png and /dev/null differ diff --git a/static/images/status/sort--plus.png b/static/images/status/sort--plus.png deleted file mode 100755 index fbbe3526..00000000 Binary files a/static/images/status/sort--plus.png and /dev/null differ diff --git a/static/images/status/sort-alphabet-descending.png b/static/images/status/sort-alphabet-descending.png deleted file mode 100755 index e1d88162..00000000 Binary files a/static/images/status/sort-alphabet-descending.png and /dev/null differ diff --git a/static/images/status/sort-alphabet.png b/static/images/status/sort-alphabet.png deleted file mode 100755 index 94fa5776..00000000 Binary files a/static/images/status/sort-alphabet.png and /dev/null differ diff --git a/static/images/status/sort-date-descending.png b/static/images/status/sort-date-descending.png deleted file mode 100755 index 7725f086..00000000 Binary files a/static/images/status/sort-date-descending.png and /dev/null differ diff --git a/static/images/status/sort-date.png b/static/images/status/sort-date.png deleted file mode 100755 index bf280b57..00000000 Binary files a/static/images/status/sort-date.png and /dev/null differ diff --git a/static/images/status/sort-number-descending.png b/static/images/status/sort-number-descending.png deleted file mode 100755 index f4e3c7d6..00000000 Binary files a/static/images/status/sort-number-descending.png and /dev/null differ diff --git a/static/images/status/sort-number.png b/static/images/status/sort-number.png deleted file mode 100755 index 2e1371e4..00000000 Binary files a/static/images/status/sort-number.png and /dev/null differ diff --git a/static/images/status/sort-price-descending.png b/static/images/status/sort-price-descending.png deleted file mode 100755 index 5df8cc3a..00000000 Binary files a/static/images/status/sort-price-descending.png and /dev/null differ diff --git a/static/images/status/sort-price.png b/static/images/status/sort-price.png deleted file mode 100755 index ce23d5f0..00000000 Binary files a/static/images/status/sort-price.png and /dev/null differ diff --git a/static/images/status/sort-quantity-descending.png b/static/images/status/sort-quantity-descending.png deleted file mode 100755 index 110a1698..00000000 Binary files a/static/images/status/sort-quantity-descending.png and /dev/null differ diff --git a/static/images/status/sort-quantity.png b/static/images/status/sort-quantity.png deleted file mode 100755 index 26d24461..00000000 Binary files a/static/images/status/sort-quantity.png and /dev/null differ diff --git a/static/images/status/sort-rating-descending.png b/static/images/status/sort-rating-descending.png deleted file mode 100755 index 4a6c427d..00000000 Binary files a/static/images/status/sort-rating-descending.png and /dev/null differ diff --git a/static/images/status/sort-rating.png b/static/images/status/sort-rating.png deleted file mode 100755 index 78bc993c..00000000 Binary files a/static/images/status/sort-rating.png and /dev/null differ diff --git a/static/images/status/sort-small.png b/static/images/status/sort-small.png deleted file mode 100755 index 7b7c16c3..00000000 Binary files a/static/images/status/sort-small.png and /dev/null differ diff --git a/static/images/status/sort.png b/static/images/status/sort.png deleted file mode 100755 index f86aafd4..00000000 Binary files a/static/images/status/sort.png and /dev/null differ diff --git a/static/images/status/speaker--arrow.png b/static/images/status/speaker--arrow.png deleted file mode 100755 index 71b83b75..00000000 Binary files a/static/images/status/speaker--arrow.png and /dev/null differ diff --git a/static/images/status/speaker--exclamation.png b/static/images/status/speaker--exclamation.png deleted file mode 100755 index 478b7bcf..00000000 Binary files a/static/images/status/speaker--exclamation.png and /dev/null differ diff --git a/static/images/status/speaker--minus.png b/static/images/status/speaker--minus.png deleted file mode 100755 index cb16affe..00000000 Binary files a/static/images/status/speaker--minus.png and /dev/null differ diff --git a/static/images/status/speaker--pencil.png b/static/images/status/speaker--pencil.png deleted file mode 100755 index d9ac75b5..00000000 Binary files a/static/images/status/speaker--pencil.png and /dev/null differ diff --git a/static/images/status/speaker--plus.png b/static/images/status/speaker--plus.png deleted file mode 100755 index cdd52ab3..00000000 Binary files a/static/images/status/speaker--plus.png and /dev/null differ diff --git a/static/images/status/speaker-volume-control-mute.png b/static/images/status/speaker-volume-control-mute.png deleted file mode 100755 index 883fdc86..00000000 Binary files a/static/images/status/speaker-volume-control-mute.png and /dev/null differ diff --git a/static/images/status/speaker-volume-control-up.png b/static/images/status/speaker-volume-control-up.png deleted file mode 100755 index 1e74468c..00000000 Binary files a/static/images/status/speaker-volume-control-up.png and /dev/null differ diff --git a/static/images/status/speaker-volume-control.png b/static/images/status/speaker-volume-control.png deleted file mode 100755 index b0bf2769..00000000 Binary files a/static/images/status/speaker-volume-control.png and /dev/null differ diff --git a/static/images/status/speaker-volume-low.png b/static/images/status/speaker-volume-low.png deleted file mode 100755 index 686d1931..00000000 Binary files a/static/images/status/speaker-volume-low.png and /dev/null differ diff --git a/static/images/status/speaker-volume-none.png b/static/images/status/speaker-volume-none.png deleted file mode 100755 index ffa0f47a..00000000 Binary files a/static/images/status/speaker-volume-none.png and /dev/null differ diff --git a/static/images/status/speaker-volume.png b/static/images/status/speaker-volume.png deleted file mode 100755 index 62fcfc66..00000000 Binary files a/static/images/status/speaker-volume.png and /dev/null differ diff --git a/static/images/status/speaker.png b/static/images/status/speaker.png deleted file mode 100755 index fce84421..00000000 Binary files a/static/images/status/speaker.png and /dev/null differ diff --git a/static/images/status/spectacle-small.png b/static/images/status/spectacle-small.png deleted file mode 100755 index 5d606f56..00000000 Binary files a/static/images/status/spectacle-small.png and /dev/null differ diff --git a/static/images/status/spectacle-sunglass.png b/static/images/status/spectacle-sunglass.png deleted file mode 100755 index 0a097207..00000000 Binary files a/static/images/status/spectacle-sunglass.png and /dev/null differ diff --git a/static/images/status/spectacle.png b/static/images/status/spectacle.png deleted file mode 100755 index e62feb04..00000000 Binary files a/static/images/status/spectacle.png and /dev/null differ diff --git a/static/images/status/spell-check-error.png b/static/images/status/spell-check-error.png deleted file mode 100755 index 4ce01aff..00000000 Binary files a/static/images/status/spell-check-error.png and /dev/null differ diff --git a/static/images/status/spell-check.png b/static/images/status/spell-check.png deleted file mode 100755 index 0d54d982..00000000 Binary files a/static/images/status/spell-check.png and /dev/null differ diff --git a/static/images/status/spray--arrow.png b/static/images/status/spray--arrow.png deleted file mode 100755 index a25b7f31..00000000 Binary files a/static/images/status/spray--arrow.png and /dev/null differ diff --git a/static/images/status/spray--exclamation.png b/static/images/status/spray--exclamation.png deleted file mode 100755 index c28dc619..00000000 Binary files a/static/images/status/spray--exclamation.png and /dev/null differ diff --git a/static/images/status/spray--minus.png b/static/images/status/spray--minus.png deleted file mode 100755 index 84b14ade..00000000 Binary files a/static/images/status/spray--minus.png and /dev/null differ diff --git a/static/images/status/spray--pencil.png b/static/images/status/spray--pencil.png deleted file mode 100755 index 63ba5067..00000000 Binary files a/static/images/status/spray--pencil.png and /dev/null differ diff --git a/static/images/status/spray--plus.png b/static/images/status/spray--plus.png deleted file mode 100755 index 7b684975..00000000 Binary files a/static/images/status/spray--plus.png and /dev/null differ diff --git a/static/images/status/spray-color.png b/static/images/status/spray-color.png deleted file mode 100755 index 2a56ee5f..00000000 Binary files a/static/images/status/spray-color.png and /dev/null differ diff --git a/static/images/status/spray.png b/static/images/status/spray.png deleted file mode 100755 index feb8ed79..00000000 Binary files a/static/images/status/spray.png and /dev/null differ diff --git a/static/images/status/sql-join-inner.png b/static/images/status/sql-join-inner.png deleted file mode 100755 index b1f25cc9..00000000 Binary files a/static/images/status/sql-join-inner.png and /dev/null differ diff --git a/static/images/status/sql-join-left-exclude.png b/static/images/status/sql-join-left-exclude.png deleted file mode 100755 index c463eb4b..00000000 Binary files a/static/images/status/sql-join-left-exclude.png and /dev/null differ diff --git a/static/images/status/sql-join-left.png b/static/images/status/sql-join-left.png deleted file mode 100755 index 99a761ea..00000000 Binary files a/static/images/status/sql-join-left.png and /dev/null differ diff --git a/static/images/status/sql-join-outer-exclude.png b/static/images/status/sql-join-outer-exclude.png deleted file mode 100755 index 47bbf12d..00000000 Binary files a/static/images/status/sql-join-outer-exclude.png and /dev/null differ diff --git a/static/images/status/sql-join-outer.png b/static/images/status/sql-join-outer.png deleted file mode 100755 index 698001b9..00000000 Binary files a/static/images/status/sql-join-outer.png and /dev/null differ diff --git a/static/images/status/sql-join-right-exclude.png b/static/images/status/sql-join-right-exclude.png deleted file mode 100755 index 26fd22e6..00000000 Binary files a/static/images/status/sql-join-right-exclude.png and /dev/null differ diff --git a/static/images/status/sql-join-right.png b/static/images/status/sql-join-right.png deleted file mode 100755 index afcaaf8a..00000000 Binary files a/static/images/status/sql-join-right.png and /dev/null differ diff --git a/static/images/status/sql-join.png b/static/images/status/sql-join.png deleted file mode 100755 index 32c28cc4..00000000 Binary files a/static/images/status/sql-join.png and /dev/null differ diff --git a/static/images/status/sql.png b/static/images/status/sql.png deleted file mode 100755 index ea232a7d..00000000 Binary files a/static/images/status/sql.png and /dev/null differ diff --git a/static/images/status/stamp--arrow.png b/static/images/status/stamp--arrow.png deleted file mode 100755 index 00815537..00000000 Binary files a/static/images/status/stamp--arrow.png and /dev/null differ diff --git a/static/images/status/stamp--exclamation.png b/static/images/status/stamp--exclamation.png deleted file mode 100755 index f95b2fec..00000000 Binary files a/static/images/status/stamp--exclamation.png and /dev/null differ diff --git a/static/images/status/stamp--minus.png b/static/images/status/stamp--minus.png deleted file mode 100755 index 7370e682..00000000 Binary files a/static/images/status/stamp--minus.png and /dev/null differ diff --git a/static/images/status/stamp--pencil.png b/static/images/status/stamp--pencil.png deleted file mode 100755 index 044418ea..00000000 Binary files a/static/images/status/stamp--pencil.png and /dev/null differ diff --git a/static/images/status/stamp--plus.png b/static/images/status/stamp--plus.png deleted file mode 100755 index ea6efd68..00000000 Binary files a/static/images/status/stamp--plus.png and /dev/null differ diff --git a/static/images/status/stamp-pattern.png b/static/images/status/stamp-pattern.png deleted file mode 100755 index 8dcd33f5..00000000 Binary files a/static/images/status/stamp-pattern.png and /dev/null differ diff --git a/static/images/status/stamp.png b/static/images/status/stamp.png deleted file mode 100755 index 9d556de6..00000000 Binary files a/static/images/status/stamp.png and /dev/null differ diff --git a/static/images/status/star--arrow.png b/static/images/status/star--arrow.png deleted file mode 100755 index 3264a453..00000000 Binary files a/static/images/status/star--arrow.png and /dev/null differ diff --git a/static/images/status/star--exclamation.png b/static/images/status/star--exclamation.png deleted file mode 100755 index 621d24e3..00000000 Binary files a/static/images/status/star--exclamation.png and /dev/null differ diff --git a/static/images/status/star--minus.png b/static/images/status/star--minus.png deleted file mode 100755 index 0395f71c..00000000 Binary files a/static/images/status/star--minus.png and /dev/null differ diff --git a/static/images/status/star--pencil.png b/static/images/status/star--pencil.png deleted file mode 100755 index 5cef7dfb..00000000 Binary files a/static/images/status/star--pencil.png and /dev/null differ diff --git a/static/images/status/star--plus.png b/static/images/status/star--plus.png deleted file mode 100755 index 505fa7c3..00000000 Binary files a/static/images/status/star--plus.png and /dev/null differ diff --git a/static/images/status/star-empty.png b/static/images/status/star-empty.png deleted file mode 100755 index 461f6da4..00000000 Binary files a/static/images/status/star-empty.png and /dev/null differ diff --git a/static/images/status/star-half.png b/static/images/status/star-half.png deleted file mode 100755 index d940dd18..00000000 Binary files a/static/images/status/star-half.png and /dev/null differ diff --git a/static/images/status/star-small-empty.png b/static/images/status/star-small-empty.png deleted file mode 100755 index 85392307..00000000 Binary files a/static/images/status/star-small-empty.png and /dev/null differ diff --git a/static/images/status/star-small-half.png b/static/images/status/star-small-half.png deleted file mode 100755 index bb83a708..00000000 Binary files a/static/images/status/star-small-half.png and /dev/null differ diff --git a/static/images/status/star-small.png b/static/images/status/star-small.png deleted file mode 100755 index fef14263..00000000 Binary files a/static/images/status/star-small.png and /dev/null differ diff --git a/static/images/status/star.png b/static/images/status/star.png deleted file mode 100755 index 52d161ea..00000000 Binary files a/static/images/status/star.png and /dev/null differ diff --git a/static/images/status/status-away.png b/static/images/status/status-away.png deleted file mode 100755 index c7be0abb..00000000 Binary files a/static/images/status/status-away.png and /dev/null differ diff --git a/static/images/status/status-busy.png b/static/images/status/status-busy.png deleted file mode 100755 index a9d5f4db..00000000 Binary files a/static/images/status/status-busy.png and /dev/null differ diff --git a/static/images/status/status-offline.png b/static/images/status/status-offline.png deleted file mode 100755 index f148af49..00000000 Binary files a/static/images/status/status-offline.png and /dev/null differ diff --git a/static/images/status/status.png b/static/images/status/status.png deleted file mode 100755 index 680bb8a6..00000000 Binary files a/static/images/status/status.png and /dev/null differ diff --git a/static/images/status/sticky-note--arrow.png b/static/images/status/sticky-note--arrow.png deleted file mode 100755 index 2406d118..00000000 Binary files a/static/images/status/sticky-note--arrow.png and /dev/null differ diff --git a/static/images/status/sticky-note--exclamation.png b/static/images/status/sticky-note--exclamation.png deleted file mode 100755 index e49a94f4..00000000 Binary files a/static/images/status/sticky-note--exclamation.png and /dev/null differ diff --git a/static/images/status/sticky-note--minus.png b/static/images/status/sticky-note--minus.png deleted file mode 100755 index 17800719..00000000 Binary files a/static/images/status/sticky-note--minus.png and /dev/null differ diff --git a/static/images/status/sticky-note--pencil.png b/static/images/status/sticky-note--pencil.png deleted file mode 100755 index 38b49988..00000000 Binary files a/static/images/status/sticky-note--pencil.png and /dev/null differ diff --git a/static/images/status/sticky-note--plus.png b/static/images/status/sticky-note--plus.png deleted file mode 100755 index fb0c04e0..00000000 Binary files a/static/images/status/sticky-note--plus.png and /dev/null differ diff --git a/static/images/status/sticky-note-pin.png b/static/images/status/sticky-note-pin.png deleted file mode 100755 index adaf4f0b..00000000 Binary files a/static/images/status/sticky-note-pin.png and /dev/null differ diff --git a/static/images/status/sticky-note-shred.png b/static/images/status/sticky-note-shred.png deleted file mode 100755 index 054e8b27..00000000 Binary files a/static/images/status/sticky-note-shred.png and /dev/null differ diff --git a/static/images/status/sticky-note-small-pin.png b/static/images/status/sticky-note-small-pin.png deleted file mode 100755 index 8120c115..00000000 Binary files a/static/images/status/sticky-note-small-pin.png and /dev/null differ diff --git a/static/images/status/sticky-note-small.png b/static/images/status/sticky-note-small.png deleted file mode 100755 index 9bd83360..00000000 Binary files a/static/images/status/sticky-note-small.png and /dev/null differ diff --git a/static/images/status/sticky-note-text.png b/static/images/status/sticky-note-text.png deleted file mode 100755 index 99da139a..00000000 Binary files a/static/images/status/sticky-note-text.png and /dev/null differ diff --git a/static/images/status/sticky-note.png b/static/images/status/sticky-note.png deleted file mode 100755 index 389b37a0..00000000 Binary files a/static/images/status/sticky-note.png and /dev/null differ diff --git a/static/images/status/sticky-notes-pin.png b/static/images/status/sticky-notes-pin.png deleted file mode 100755 index dc149807..00000000 Binary files a/static/images/status/sticky-notes-pin.png and /dev/null differ diff --git a/static/images/status/sticky-notes-stack.png b/static/images/status/sticky-notes-stack.png deleted file mode 100755 index 5158b725..00000000 Binary files a/static/images/status/sticky-notes-stack.png and /dev/null differ diff --git a/static/images/status/sticky-notes-text.png b/static/images/status/sticky-notes-text.png deleted file mode 100755 index df867d44..00000000 Binary files a/static/images/status/sticky-notes-text.png and /dev/null differ diff --git a/static/images/status/sticky-notes.png b/static/images/status/sticky-notes.png deleted file mode 100755 index acce4eb0..00000000 Binary files a/static/images/status/sticky-notes.png and /dev/null differ diff --git a/static/images/status/store--arrow.png b/static/images/status/store--arrow.png deleted file mode 100755 index bb4f4548..00000000 Binary files a/static/images/status/store--arrow.png and /dev/null differ diff --git a/static/images/status/store--exclamation.png b/static/images/status/store--exclamation.png deleted file mode 100755 index 286f243e..00000000 Binary files a/static/images/status/store--exclamation.png and /dev/null differ diff --git a/static/images/status/store--minus.png b/static/images/status/store--minus.png deleted file mode 100755 index 83974d35..00000000 Binary files a/static/images/status/store--minus.png and /dev/null differ diff --git a/static/images/status/store--pencil.png b/static/images/status/store--pencil.png deleted file mode 100755 index 2636c250..00000000 Binary files a/static/images/status/store--pencil.png and /dev/null differ diff --git a/static/images/status/store--plus.png b/static/images/status/store--plus.png deleted file mode 100755 index c85e6591..00000000 Binary files a/static/images/status/store--plus.png and /dev/null differ diff --git a/static/images/status/store-label.png b/static/images/status/store-label.png deleted file mode 100755 index 629d3f0a..00000000 Binary files a/static/images/status/store-label.png and /dev/null differ diff --git a/static/images/status/store-network.png b/static/images/status/store-network.png deleted file mode 100755 index a00413a0..00000000 Binary files a/static/images/status/store-network.png and /dev/null differ diff --git a/static/images/status/store-open.png b/static/images/status/store-open.png deleted file mode 100755 index 3b428acf..00000000 Binary files a/static/images/status/store-open.png and /dev/null differ diff --git a/static/images/status/store-small.png b/static/images/status/store-small.png deleted file mode 100755 index 6d8a3351..00000000 Binary files a/static/images/status/store-small.png and /dev/null differ diff --git a/static/images/status/store.png b/static/images/status/store.png deleted file mode 100755 index 901ce0b4..00000000 Binary files a/static/images/status/store.png and /dev/null differ diff --git a/static/images/status/subversion-small.png b/static/images/status/subversion-small.png deleted file mode 100755 index c2194cba..00000000 Binary files a/static/images/status/subversion-small.png and /dev/null differ diff --git a/static/images/status/subversion.png b/static/images/status/subversion.png deleted file mode 100755 index 0c174b91..00000000 Binary files a/static/images/status/subversion.png and /dev/null differ diff --git a/static/images/status/sum.png b/static/images/status/sum.png deleted file mode 100755 index 96bb23aa..00000000 Binary files a/static/images/status/sum.png and /dev/null differ diff --git a/static/images/status/switch--arrow.png b/static/images/status/switch--arrow.png deleted file mode 100755 index 9e2cbdde..00000000 Binary files a/static/images/status/switch--arrow.png and /dev/null differ diff --git a/static/images/status/switch--exclamation.png b/static/images/status/switch--exclamation.png deleted file mode 100755 index a3a4ac91..00000000 Binary files a/static/images/status/switch--exclamation.png and /dev/null differ diff --git a/static/images/status/switch--minus.png b/static/images/status/switch--minus.png deleted file mode 100755 index 523fec17..00000000 Binary files a/static/images/status/switch--minus.png and /dev/null differ diff --git a/static/images/status/switch--pencil.png b/static/images/status/switch--pencil.png deleted file mode 100755 index f70ccbab..00000000 Binary files a/static/images/status/switch--pencil.png and /dev/null differ diff --git a/static/images/status/switch--plus.png b/static/images/status/switch--plus.png deleted file mode 100755 index 562c0d1a..00000000 Binary files a/static/images/status/switch--plus.png and /dev/null differ diff --git a/static/images/status/switch-network.png b/static/images/status/switch-network.png deleted file mode 100755 index 39936369..00000000 Binary files a/static/images/status/switch-network.png and /dev/null differ diff --git a/static/images/status/switch-small.png b/static/images/status/switch-small.png deleted file mode 100755 index 0946c5f7..00000000 Binary files a/static/images/status/switch-small.png and /dev/null differ diff --git a/static/images/status/switch.png b/static/images/status/switch.png deleted file mode 100755 index 04bb1e0b..00000000 Binary files a/static/images/status/switch.png and /dev/null differ diff --git a/static/images/status/system-monitor--arrow.png b/static/images/status/system-monitor--arrow.png deleted file mode 100755 index 44035ea4..00000000 Binary files a/static/images/status/system-monitor--arrow.png and /dev/null differ diff --git a/static/images/status/system-monitor--exclamation.png b/static/images/status/system-monitor--exclamation.png deleted file mode 100755 index c6f6a5f6..00000000 Binary files a/static/images/status/system-monitor--exclamation.png and /dev/null differ diff --git a/static/images/status/system-monitor--minus.png b/static/images/status/system-monitor--minus.png deleted file mode 100755 index 4ea036c3..00000000 Binary files a/static/images/status/system-monitor--minus.png and /dev/null differ diff --git a/static/images/status/system-monitor--pencil.png b/static/images/status/system-monitor--pencil.png deleted file mode 100755 index c43bdaeb..00000000 Binary files a/static/images/status/system-monitor--pencil.png and /dev/null differ diff --git a/static/images/status/system-monitor--plus.png b/static/images/status/system-monitor--plus.png deleted file mode 100755 index 27a84185..00000000 Binary files a/static/images/status/system-monitor--plus.png and /dev/null differ diff --git a/static/images/status/system-monitor.png b/static/images/status/system-monitor.png deleted file mode 100755 index a139103e..00000000 Binary files a/static/images/status/system-monitor.png and /dev/null differ diff --git a/static/images/status/t-shirt-gray.png b/static/images/status/t-shirt-gray.png deleted file mode 100755 index a02f2fee..00000000 Binary files a/static/images/status/t-shirt-gray.png and /dev/null differ diff --git a/static/images/status/t-shirt-print-gray.png b/static/images/status/t-shirt-print-gray.png deleted file mode 100755 index abbad888..00000000 Binary files a/static/images/status/t-shirt-print-gray.png and /dev/null differ diff --git a/static/images/status/t-shirt-print.png b/static/images/status/t-shirt-print.png deleted file mode 100755 index 2d80d63b..00000000 Binary files a/static/images/status/t-shirt-print.png and /dev/null differ diff --git a/static/images/status/t-shirt.png b/static/images/status/t-shirt.png deleted file mode 100755 index e18a1a8a..00000000 Binary files a/static/images/status/t-shirt.png and /dev/null differ diff --git a/static/images/status/table--arrow.png b/static/images/status/table--arrow.png deleted file mode 100755 index 93ce05f8..00000000 Binary files a/static/images/status/table--arrow.png and /dev/null differ diff --git a/static/images/status/table--exclamation.png b/static/images/status/table--exclamation.png deleted file mode 100755 index 9474f5eb..00000000 Binary files a/static/images/status/table--exclamation.png and /dev/null differ diff --git a/static/images/status/table--minus.png b/static/images/status/table--minus.png deleted file mode 100755 index 02990ebd..00000000 Binary files a/static/images/status/table--minus.png and /dev/null differ diff --git a/static/images/status/table--pencil.png b/static/images/status/table--pencil.png deleted file mode 100755 index 9b2a1126..00000000 Binary files a/static/images/status/table--pencil.png and /dev/null differ diff --git a/static/images/status/table--plus.png b/static/images/status/table--plus.png deleted file mode 100755 index 721aa8e7..00000000 Binary files a/static/images/status/table--plus.png and /dev/null differ diff --git a/static/images/status/table-delete-column.png b/static/images/status/table-delete-column.png deleted file mode 100755 index a3fa27ce..00000000 Binary files a/static/images/status/table-delete-column.png and /dev/null differ diff --git a/static/images/status/table-delete-row.png b/static/images/status/table-delete-row.png deleted file mode 100755 index bf499bc1..00000000 Binary files a/static/images/status/table-delete-row.png and /dev/null differ diff --git a/static/images/status/table-delete.png b/static/images/status/table-delete.png deleted file mode 100755 index 531e94ae..00000000 Binary files a/static/images/status/table-delete.png and /dev/null differ diff --git a/static/images/status/table-excel.png b/static/images/status/table-excel.png deleted file mode 100755 index 2111370e..00000000 Binary files a/static/images/status/table-excel.png and /dev/null differ diff --git a/static/images/status/table-export.png b/static/images/status/table-export.png deleted file mode 100755 index f582fb8a..00000000 Binary files a/static/images/status/table-export.png and /dev/null differ diff --git a/static/images/status/table-import.png b/static/images/status/table-import.png deleted file mode 100755 index 67f371ae..00000000 Binary files a/static/images/status/table-import.png and /dev/null differ diff --git a/static/images/status/table-insert-column.png b/static/images/status/table-insert-column.png deleted file mode 100755 index 86649bf1..00000000 Binary files a/static/images/status/table-insert-column.png and /dev/null differ diff --git a/static/images/status/table-insert-row.png b/static/images/status/table-insert-row.png deleted file mode 100755 index 40a94c9b..00000000 Binary files a/static/images/status/table-insert-row.png and /dev/null differ diff --git a/static/images/status/table-insert.png b/static/images/status/table-insert.png deleted file mode 100755 index 2820af41..00000000 Binary files a/static/images/status/table-insert.png and /dev/null differ diff --git a/static/images/status/table-join.png b/static/images/status/table-join.png deleted file mode 100755 index c5a2533f..00000000 Binary files a/static/images/status/table-join.png and /dev/null differ diff --git a/static/images/status/table-money.png b/static/images/status/table-money.png deleted file mode 100755 index 673ba426..00000000 Binary files a/static/images/status/table-money.png and /dev/null differ diff --git a/static/images/status/table-paint-can.png b/static/images/status/table-paint-can.png deleted file mode 100755 index 0626d0a0..00000000 Binary files a/static/images/status/table-paint-can.png and /dev/null differ diff --git a/static/images/status/table-select-all.png b/static/images/status/table-select-all.png deleted file mode 100755 index b8606684..00000000 Binary files a/static/images/status/table-select-all.png and /dev/null differ diff --git a/static/images/status/table-select-cells.png b/static/images/status/table-select-cells.png deleted file mode 100755 index 479ab523..00000000 Binary files a/static/images/status/table-select-cells.png and /dev/null differ diff --git a/static/images/status/table-select-column.png b/static/images/status/table-select-column.png deleted file mode 100755 index 2a2a412f..00000000 Binary files a/static/images/status/table-select-column.png and /dev/null differ diff --git a/static/images/status/table-select-row.png b/static/images/status/table-select-row.png deleted file mode 100755 index e96313c2..00000000 Binary files a/static/images/status/table-select-row.png and /dev/null differ diff --git a/static/images/status/table-select.png b/static/images/status/table-select.png deleted file mode 100755 index ab082a76..00000000 Binary files a/static/images/status/table-select.png and /dev/null differ diff --git a/static/images/status/table-sheet.png b/static/images/status/table-sheet.png deleted file mode 100755 index ac03e32d..00000000 Binary files a/static/images/status/table-sheet.png and /dev/null differ diff --git a/static/images/status/table-small.png b/static/images/status/table-small.png deleted file mode 100755 index 47e3a60d..00000000 Binary files a/static/images/status/table-small.png and /dev/null differ diff --git a/static/images/status/table-split.png b/static/images/status/table-split.png deleted file mode 100755 index 7565ac54..00000000 Binary files a/static/images/status/table-split.png and /dev/null differ diff --git a/static/images/status/table-sum.png b/static/images/status/table-sum.png deleted file mode 100755 index 10570bfd..00000000 Binary files a/static/images/status/table-sum.png and /dev/null differ diff --git a/static/images/status/table.png b/static/images/status/table.png deleted file mode 100755 index b0cd69fc..00000000 Binary files a/static/images/status/table.png and /dev/null differ diff --git a/static/images/status/tables-relation.png b/static/images/status/tables-relation.png deleted file mode 100755 index 968bcb97..00000000 Binary files a/static/images/status/tables-relation.png and /dev/null differ diff --git a/static/images/status/tables-stacks.png b/static/images/status/tables-stacks.png deleted file mode 100755 index 79c8e80f..00000000 Binary files a/static/images/status/tables-stacks.png and /dev/null differ diff --git a/static/images/status/tables.png b/static/images/status/tables.png deleted file mode 100755 index 4ac04561..00000000 Binary files a/static/images/status/tables.png and /dev/null differ diff --git a/static/images/status/tag--arrow.png b/static/images/status/tag--arrow.png deleted file mode 100755 index 4900640c..00000000 Binary files a/static/images/status/tag--arrow.png and /dev/null differ diff --git a/static/images/status/tag--exclamation.png b/static/images/status/tag--exclamation.png deleted file mode 100755 index 0df13450..00000000 Binary files a/static/images/status/tag--exclamation.png and /dev/null differ diff --git a/static/images/status/tag--minus.png b/static/images/status/tag--minus.png deleted file mode 100755 index 685e879a..00000000 Binary files a/static/images/status/tag--minus.png and /dev/null differ diff --git a/static/images/status/tag--pencil.png b/static/images/status/tag--pencil.png deleted file mode 100755 index 6cc85264..00000000 Binary files a/static/images/status/tag--pencil.png and /dev/null differ diff --git a/static/images/status/tag--plus.png b/static/images/status/tag--plus.png deleted file mode 100755 index be85f2ae..00000000 Binary files a/static/images/status/tag--plus.png and /dev/null differ diff --git a/static/images/status/tag-export.png b/static/images/status/tag-export.png deleted file mode 100755 index 76a87ccc..00000000 Binary files a/static/images/status/tag-export.png and /dev/null differ diff --git a/static/images/status/tag-import.png b/static/images/status/tag-import.png deleted file mode 100755 index 23c9f96f..00000000 Binary files a/static/images/status/tag-import.png and /dev/null differ diff --git a/static/images/status/tag-label.png b/static/images/status/tag-label.png deleted file mode 100755 index 7ac2093d..00000000 Binary files a/static/images/status/tag-label.png and /dev/null differ diff --git a/static/images/status/tag-small.png b/static/images/status/tag-small.png deleted file mode 100755 index 7e42b30a..00000000 Binary files a/static/images/status/tag-small.png and /dev/null differ diff --git a/static/images/status/tag.png b/static/images/status/tag.png deleted file mode 100755 index ace6c629..00000000 Binary files a/static/images/status/tag.png and /dev/null differ diff --git a/static/images/status/tags-label.png b/static/images/status/tags-label.png deleted file mode 100755 index 90ddfabb..00000000 Binary files a/static/images/status/tags-label.png and /dev/null differ diff --git a/static/images/status/tags.png b/static/images/status/tags.png deleted file mode 100755 index 702c6dbb..00000000 Binary files a/static/images/status/tags.png and /dev/null differ diff --git a/static/images/status/target--arrow.png b/static/images/status/target--arrow.png deleted file mode 100755 index d2436aaa..00000000 Binary files a/static/images/status/target--arrow.png and /dev/null differ diff --git a/static/images/status/target--exclamation.png b/static/images/status/target--exclamation.png deleted file mode 100755 index 50d5903c..00000000 Binary files a/static/images/status/target--exclamation.png and /dev/null differ diff --git a/static/images/status/target--minus.png b/static/images/status/target--minus.png deleted file mode 100755 index 3ee47a8e..00000000 Binary files a/static/images/status/target--minus.png and /dev/null differ diff --git a/static/images/status/target--pencil.png b/static/images/status/target--pencil.png deleted file mode 100755 index 3d406321..00000000 Binary files a/static/images/status/target--pencil.png and /dev/null differ diff --git a/static/images/status/target--plus.png b/static/images/status/target--plus.png deleted file mode 100755 index 56643cde..00000000 Binary files a/static/images/status/target--plus.png and /dev/null differ diff --git a/static/images/status/target.png b/static/images/status/target.png deleted file mode 100755 index fa96cdd5..00000000 Binary files a/static/images/status/target.png and /dev/null differ diff --git a/static/images/status/task--arrow.png b/static/images/status/task--arrow.png deleted file mode 100755 index 387186f3..00000000 Binary files a/static/images/status/task--arrow.png and /dev/null differ diff --git a/static/images/status/task--exclamation.png b/static/images/status/task--exclamation.png deleted file mode 100755 index 42ab4d64..00000000 Binary files a/static/images/status/task--exclamation.png and /dev/null differ diff --git a/static/images/status/task--minus.png b/static/images/status/task--minus.png deleted file mode 100755 index 0818f84e..00000000 Binary files a/static/images/status/task--minus.png and /dev/null differ diff --git a/static/images/status/task--pencil.png b/static/images/status/task--pencil.png deleted file mode 100755 index 5e3f521d..00000000 Binary files a/static/images/status/task--pencil.png and /dev/null differ diff --git a/static/images/status/task--plus.png b/static/images/status/task--plus.png deleted file mode 100755 index e9a5d5a4..00000000 Binary files a/static/images/status/task--plus.png and /dev/null differ diff --git a/static/images/status/task-select-first.png b/static/images/status/task-select-first.png deleted file mode 100755 index 5b2ad887..00000000 Binary files a/static/images/status/task-select-first.png and /dev/null differ diff --git a/static/images/status/task-select-last.png b/static/images/status/task-select-last.png deleted file mode 100755 index 80cfec05..00000000 Binary files a/static/images/status/task-select-last.png and /dev/null differ diff --git a/static/images/status/task-select.png b/static/images/status/task-select.png deleted file mode 100755 index 41050c4a..00000000 Binary files a/static/images/status/task-select.png and /dev/null differ diff --git a/static/images/status/task.png b/static/images/status/task.png deleted file mode 100755 index 9895ccbb..00000000 Binary files a/static/images/status/task.png and /dev/null differ diff --git a/static/images/status/telephone--arrow.png b/static/images/status/telephone--arrow.png deleted file mode 100755 index ed21eefa..00000000 Binary files a/static/images/status/telephone--arrow.png and /dev/null differ diff --git a/static/images/status/telephone--exclamation.png b/static/images/status/telephone--exclamation.png deleted file mode 100755 index ce20ed8d..00000000 Binary files a/static/images/status/telephone--exclamation.png and /dev/null differ diff --git a/static/images/status/telephone--minus.png b/static/images/status/telephone--minus.png deleted file mode 100755 index 94c7e477..00000000 Binary files a/static/images/status/telephone--minus.png and /dev/null differ diff --git a/static/images/status/telephone--pencil.png b/static/images/status/telephone--pencil.png deleted file mode 100755 index 4b4adbaf..00000000 Binary files a/static/images/status/telephone--pencil.png and /dev/null differ diff --git a/static/images/status/telephone--plus.png b/static/images/status/telephone--plus.png deleted file mode 100755 index b0a40079..00000000 Binary files a/static/images/status/telephone--plus.png and /dev/null differ diff --git a/static/images/status/telephone-fax.png b/static/images/status/telephone-fax.png deleted file mode 100755 index 846ab83e..00000000 Binary files a/static/images/status/telephone-fax.png and /dev/null differ diff --git a/static/images/status/telephone-off.png b/static/images/status/telephone-off.png deleted file mode 100755 index edb7ed21..00000000 Binary files a/static/images/status/telephone-off.png and /dev/null differ diff --git a/static/images/status/telephone.png b/static/images/status/telephone.png deleted file mode 100755 index 55668400..00000000 Binary files a/static/images/status/telephone.png and /dev/null differ diff --git a/static/images/status/television--arrow.png b/static/images/status/television--arrow.png deleted file mode 100755 index 249c319b..00000000 Binary files a/static/images/status/television--arrow.png and /dev/null differ diff --git a/static/images/status/television--exclamation.png b/static/images/status/television--exclamation.png deleted file mode 100755 index 0181d885..00000000 Binary files a/static/images/status/television--exclamation.png and /dev/null differ diff --git a/static/images/status/television--minus.png b/static/images/status/television--minus.png deleted file mode 100755 index b9db92dc..00000000 Binary files a/static/images/status/television--minus.png and /dev/null differ diff --git a/static/images/status/television--pencil.png b/static/images/status/television--pencil.png deleted file mode 100755 index abf50d2b..00000000 Binary files a/static/images/status/television--pencil.png and /dev/null differ diff --git a/static/images/status/television--plus.png b/static/images/status/television--plus.png deleted file mode 100755 index ea91faf4..00000000 Binary files a/static/images/status/television--plus.png and /dev/null differ diff --git a/static/images/status/television-image.png b/static/images/status/television-image.png deleted file mode 100755 index e75cbea7..00000000 Binary files a/static/images/status/television-image.png and /dev/null differ diff --git a/static/images/status/television-off.png b/static/images/status/television-off.png deleted file mode 100755 index 6f28049b..00000000 Binary files a/static/images/status/television-off.png and /dev/null differ diff --git a/static/images/status/television.png b/static/images/status/television.png deleted file mode 100755 index 2dbc869a..00000000 Binary files a/static/images/status/television.png and /dev/null differ diff --git a/static/images/status/terminal--arrow.png b/static/images/status/terminal--arrow.png deleted file mode 100755 index 696b1d5d..00000000 Binary files a/static/images/status/terminal--arrow.png and /dev/null differ diff --git a/static/images/status/terminal--exclamation.png b/static/images/status/terminal--exclamation.png deleted file mode 100755 index d200a712..00000000 Binary files a/static/images/status/terminal--exclamation.png and /dev/null differ diff --git a/static/images/status/terminal--minus.png b/static/images/status/terminal--minus.png deleted file mode 100755 index 3226d4b0..00000000 Binary files a/static/images/status/terminal--minus.png and /dev/null differ diff --git a/static/images/status/terminal--pencil.png b/static/images/status/terminal--pencil.png deleted file mode 100755 index e351cc04..00000000 Binary files a/static/images/status/terminal--pencil.png and /dev/null differ diff --git a/static/images/status/terminal--plus.png b/static/images/status/terminal--plus.png deleted file mode 100755 index c296d9af..00000000 Binary files a/static/images/status/terminal--plus.png and /dev/null differ diff --git a/static/images/status/terminal.png b/static/images/status/terminal.png deleted file mode 100755 index c18df24f..00000000 Binary files a/static/images/status/terminal.png and /dev/null differ diff --git a/static/images/status/thumb-up.png b/static/images/status/thumb-up.png deleted file mode 100755 index a12a1d05..00000000 Binary files a/static/images/status/thumb-up.png and /dev/null differ diff --git a/static/images/status/thumb.png b/static/images/status/thumb.png deleted file mode 100755 index 183e8b66..00000000 Binary files a/static/images/status/thumb.png and /dev/null differ diff --git a/static/images/status/tick-button.png b/static/images/status/tick-button.png deleted file mode 100755 index 3b0e3fc0..00000000 Binary files a/static/images/status/tick-button.png and /dev/null differ diff --git a/static/images/status/tick-circle-frame.png b/static/images/status/tick-circle-frame.png deleted file mode 100755 index b3f78586..00000000 Binary files a/static/images/status/tick-circle-frame.png and /dev/null differ diff --git a/static/images/status/tick-octagon-frame.png b/static/images/status/tick-octagon-frame.png deleted file mode 100755 index 01b3d5c0..00000000 Binary files a/static/images/status/tick-octagon-frame.png and /dev/null differ diff --git a/static/images/status/tick-octagon.png b/static/images/status/tick-octagon.png deleted file mode 100755 index 262e5b3c..00000000 Binary files a/static/images/status/tick-octagon.png and /dev/null differ diff --git a/static/images/status/tick-shield.png b/static/images/status/tick-shield.png deleted file mode 100755 index eb476950..00000000 Binary files a/static/images/status/tick-shield.png and /dev/null differ diff --git a/static/images/status/tick-small-circle.png b/static/images/status/tick-small-circle.png deleted file mode 100755 index 8060492c..00000000 Binary files a/static/images/status/tick-small-circle.png and /dev/null differ diff --git a/static/images/status/tick-small-white.png b/static/images/status/tick-small-white.png deleted file mode 100755 index e031819c..00000000 Binary files a/static/images/status/tick-small-white.png and /dev/null differ diff --git a/static/images/status/tick-small.png b/static/images/status/tick-small.png deleted file mode 100755 index 1c0ffff6..00000000 Binary files a/static/images/status/tick-small.png and /dev/null differ diff --git a/static/images/status/tick-white.png b/static/images/status/tick-white.png deleted file mode 100755 index 9926e5dc..00000000 Binary files a/static/images/status/tick-white.png and /dev/null differ diff --git a/static/images/status/tick.png b/static/images/status/tick.png deleted file mode 100755 index 2414885b..00000000 Binary files a/static/images/status/tick.png and /dev/null differ diff --git a/static/images/status/ticket--arrow.png b/static/images/status/ticket--arrow.png deleted file mode 100755 index 0b4ef826..00000000 Binary files a/static/images/status/ticket--arrow.png and /dev/null differ diff --git a/static/images/status/ticket--exclamation.png b/static/images/status/ticket--exclamation.png deleted file mode 100755 index db933ef7..00000000 Binary files a/static/images/status/ticket--exclamation.png and /dev/null differ diff --git a/static/images/status/ticket--minus.png b/static/images/status/ticket--minus.png deleted file mode 100755 index ea5fb05e..00000000 Binary files a/static/images/status/ticket--minus.png and /dev/null differ diff --git a/static/images/status/ticket--pencil.png b/static/images/status/ticket--pencil.png deleted file mode 100755 index 7722b87b..00000000 Binary files a/static/images/status/ticket--pencil.png and /dev/null differ diff --git a/static/images/status/ticket--plus.png b/static/images/status/ticket--plus.png deleted file mode 100755 index 74b2c724..00000000 Binary files a/static/images/status/ticket--plus.png and /dev/null differ diff --git a/static/images/status/ticket-small.png b/static/images/status/ticket-small.png deleted file mode 100755 index f135f067..00000000 Binary files a/static/images/status/ticket-small.png and /dev/null differ diff --git a/static/images/status/ticket-stub.png b/static/images/status/ticket-stub.png deleted file mode 100755 index a28e1569..00000000 Binary files a/static/images/status/ticket-stub.png and /dev/null differ diff --git a/static/images/status/ticket.png b/static/images/status/ticket.png deleted file mode 100755 index 73c19f79..00000000 Binary files a/static/images/status/ticket.png and /dev/null differ diff --git a/static/images/status/toggle-expand.png b/static/images/status/toggle-expand.png deleted file mode 100755 index 706f13a2..00000000 Binary files a/static/images/status/toggle-expand.png and /dev/null differ diff --git a/static/images/status/toggle-small-expand.png b/static/images/status/toggle-small-expand.png deleted file mode 100755 index 79c5ff7e..00000000 Binary files a/static/images/status/toggle-small-expand.png and /dev/null differ diff --git a/static/images/status/toggle-small.png b/static/images/status/toggle-small.png deleted file mode 100755 index f783a6f2..00000000 Binary files a/static/images/status/toggle-small.png and /dev/null differ diff --git a/static/images/status/toggle.png b/static/images/status/toggle.png deleted file mode 100755 index 491800cf..00000000 Binary files a/static/images/status/toggle.png and /dev/null differ diff --git a/static/images/status/toolbox.png b/static/images/status/toolbox.png deleted file mode 100755 index b581d779..00000000 Binary files a/static/images/status/toolbox.png and /dev/null differ diff --git a/static/images/status/traffic-cone--arrow.png b/static/images/status/traffic-cone--arrow.png deleted file mode 100755 index 61dffbc4..00000000 Binary files a/static/images/status/traffic-cone--arrow.png and /dev/null differ diff --git a/static/images/status/traffic-cone--exclamation.png b/static/images/status/traffic-cone--exclamation.png deleted file mode 100755 index 4f092a06..00000000 Binary files a/static/images/status/traffic-cone--exclamation.png and /dev/null differ diff --git a/static/images/status/traffic-cone--minus.png b/static/images/status/traffic-cone--minus.png deleted file mode 100755 index 33e0d913..00000000 Binary files a/static/images/status/traffic-cone--minus.png and /dev/null differ diff --git a/static/images/status/traffic-cone--pencil.png b/static/images/status/traffic-cone--pencil.png deleted file mode 100755 index b8c8a02d..00000000 Binary files a/static/images/status/traffic-cone--pencil.png and /dev/null differ diff --git a/static/images/status/traffic-cone--plus.png b/static/images/status/traffic-cone--plus.png deleted file mode 100755 index 1970f89f..00000000 Binary files a/static/images/status/traffic-cone--plus.png and /dev/null differ diff --git a/static/images/status/traffic-light--arrow.png b/static/images/status/traffic-light--arrow.png deleted file mode 100755 index 0865a661..00000000 Binary files a/static/images/status/traffic-light--arrow.png and /dev/null differ diff --git a/static/images/status/traffic-light--exclamation.png b/static/images/status/traffic-light--exclamation.png deleted file mode 100755 index 5b6afff1..00000000 Binary files a/static/images/status/traffic-light--exclamation.png and /dev/null differ diff --git a/static/images/status/traffic-light--minus.png b/static/images/status/traffic-light--minus.png deleted file mode 100755 index e66a1110..00000000 Binary files a/static/images/status/traffic-light--minus.png and /dev/null differ diff --git a/static/images/status/traffic-light--pencil.png b/static/images/status/traffic-light--pencil.png deleted file mode 100755 index c046d877..00000000 Binary files a/static/images/status/traffic-light--pencil.png and /dev/null differ diff --git a/static/images/status/traffic-light--plus.png b/static/images/status/traffic-light--plus.png deleted file mode 100755 index 9f4a156b..00000000 Binary files a/static/images/status/traffic-light--plus.png and /dev/null differ diff --git a/static/images/status/traffic-light-off.png b/static/images/status/traffic-light-off.png deleted file mode 100755 index 37013739..00000000 Binary files a/static/images/status/traffic-light-off.png and /dev/null differ diff --git a/static/images/status/traffic-light.png b/static/images/status/traffic-light.png deleted file mode 100755 index f2500294..00000000 Binary files a/static/images/status/traffic-light.png and /dev/null differ diff --git a/static/images/status/trophy--arrow.png b/static/images/status/trophy--arrow.png deleted file mode 100755 index 3a85c1ba..00000000 Binary files a/static/images/status/trophy--arrow.png and /dev/null differ diff --git a/static/images/status/trophy--exclamation.png b/static/images/status/trophy--exclamation.png deleted file mode 100755 index c588fb22..00000000 Binary files a/static/images/status/trophy--exclamation.png and /dev/null differ diff --git a/static/images/status/trophy--minus.png b/static/images/status/trophy--minus.png deleted file mode 100755 index 421506a6..00000000 Binary files a/static/images/status/trophy--minus.png and /dev/null differ diff --git a/static/images/status/trophy--pencil.png b/static/images/status/trophy--pencil.png deleted file mode 100755 index f7a64011..00000000 Binary files a/static/images/status/trophy--pencil.png and /dev/null differ diff --git a/static/images/status/trophy--plus.png b/static/images/status/trophy--plus.png deleted file mode 100755 index 108e6d36..00000000 Binary files a/static/images/status/trophy--plus.png and /dev/null differ diff --git a/static/images/status/trophy-bronze.png b/static/images/status/trophy-bronze.png deleted file mode 100755 index fae6fe51..00000000 Binary files a/static/images/status/trophy-bronze.png and /dev/null differ diff --git a/static/images/status/trophy-silver.png b/static/images/status/trophy-silver.png deleted file mode 100755 index 6a65909d..00000000 Binary files a/static/images/status/trophy-silver.png and /dev/null differ diff --git a/static/images/status/trophy.png b/static/images/status/trophy.png deleted file mode 100755 index 9a7f4010..00000000 Binary files a/static/images/status/trophy.png and /dev/null differ diff --git a/static/images/status/ui-accordion.png b/static/images/status/ui-accordion.png deleted file mode 100755 index a9f1448e..00000000 Binary files a/static/images/status/ui-accordion.png and /dev/null differ diff --git a/static/images/status/ui-address-bar-green.png b/static/images/status/ui-address-bar-green.png deleted file mode 100755 index 4efa26e5..00000000 Binary files a/static/images/status/ui-address-bar-green.png and /dev/null differ diff --git a/static/images/status/ui-address-bar-red.png b/static/images/status/ui-address-bar-red.png deleted file mode 100755 index a2f463ff..00000000 Binary files a/static/images/status/ui-address-bar-red.png and /dev/null differ diff --git a/static/images/status/ui-address-bar-yellow.png b/static/images/status/ui-address-bar-yellow.png deleted file mode 100755 index 9525d42e..00000000 Binary files a/static/images/status/ui-address-bar-yellow.png and /dev/null differ diff --git a/static/images/status/ui-address-bar.png b/static/images/status/ui-address-bar.png deleted file mode 100755 index 1a96ac43..00000000 Binary files a/static/images/status/ui-address-bar.png and /dev/null differ diff --git a/static/images/status/ui-breadcrumb.png b/static/images/status/ui-breadcrumb.png deleted file mode 100755 index e18bcb33..00000000 Binary files a/static/images/status/ui-breadcrumb.png and /dev/null differ diff --git a/static/images/status/ui-button-default.png b/static/images/status/ui-button-default.png deleted file mode 100755 index c59f595e..00000000 Binary files a/static/images/status/ui-button-default.png and /dev/null differ diff --git a/static/images/status/ui-button-navigation-back.png b/static/images/status/ui-button-navigation-back.png deleted file mode 100755 index 204c11a0..00000000 Binary files a/static/images/status/ui-button-navigation-back.png and /dev/null differ diff --git a/static/images/status/ui-button-navigation.png b/static/images/status/ui-button-navigation.png deleted file mode 100755 index d4ea8998..00000000 Binary files a/static/images/status/ui-button-navigation.png and /dev/null differ diff --git a/static/images/status/ui-button-toggle.png b/static/images/status/ui-button-toggle.png deleted file mode 100755 index e84e26ae..00000000 Binary files a/static/images/status/ui-button-toggle.png and /dev/null differ diff --git a/static/images/status/ui-button.png b/static/images/status/ui-button.png deleted file mode 100755 index 32a4eeb7..00000000 Binary files a/static/images/status/ui-button.png and /dev/null differ diff --git a/static/images/status/ui-buttons.png b/static/images/status/ui-buttons.png deleted file mode 100755 index 912dfc7a..00000000 Binary files a/static/images/status/ui-buttons.png and /dev/null differ diff --git a/static/images/status/ui-check-box-mix.png b/static/images/status/ui-check-box-mix.png deleted file mode 100755 index 3c961711..00000000 Binary files a/static/images/status/ui-check-box-mix.png and /dev/null differ diff --git a/static/images/status/ui-check-box-uncheck.png b/static/images/status/ui-check-box-uncheck.png deleted file mode 100755 index ba447358..00000000 Binary files a/static/images/status/ui-check-box-uncheck.png and /dev/null differ diff --git a/static/images/status/ui-check-box.png b/static/images/status/ui-check-box.png deleted file mode 100755 index 07f3522a..00000000 Binary files a/static/images/status/ui-check-box.png and /dev/null differ diff --git a/static/images/status/ui-check-boxes-series.png b/static/images/status/ui-check-boxes-series.png deleted file mode 100755 index b1f55a2b..00000000 Binary files a/static/images/status/ui-check-boxes-series.png and /dev/null differ diff --git a/static/images/status/ui-check-boxes.png b/static/images/status/ui-check-boxes.png deleted file mode 100755 index 05eed23d..00000000 Binary files a/static/images/status/ui-check-boxes.png and /dev/null differ diff --git a/static/images/status/ui-color-picker-default.png b/static/images/status/ui-color-picker-default.png deleted file mode 100755 index 8c71b666..00000000 Binary files a/static/images/status/ui-color-picker-default.png and /dev/null differ diff --git a/static/images/status/ui-color-picker-switch.png b/static/images/status/ui-color-picker-switch.png deleted file mode 100755 index a3a836c9..00000000 Binary files a/static/images/status/ui-color-picker-switch.png and /dev/null differ diff --git a/static/images/status/ui-color-picker-transparent.png b/static/images/status/ui-color-picker-transparent.png deleted file mode 100755 index 3ec0719d..00000000 Binary files a/static/images/status/ui-color-picker-transparent.png and /dev/null differ diff --git a/static/images/status/ui-color-picker.png b/static/images/status/ui-color-picker.png deleted file mode 100755 index e244c689..00000000 Binary files a/static/images/status/ui-color-picker.png and /dev/null differ diff --git a/static/images/status/ui-combo-box-blue.png b/static/images/status/ui-combo-box-blue.png deleted file mode 100755 index 296e0387..00000000 Binary files a/static/images/status/ui-combo-box-blue.png and /dev/null differ diff --git a/static/images/status/ui-combo-box-calendar.png b/static/images/status/ui-combo-box-calendar.png deleted file mode 100755 index 12b4a1a2..00000000 Binary files a/static/images/status/ui-combo-box-calendar.png and /dev/null differ diff --git a/static/images/status/ui-combo-box-edit.png b/static/images/status/ui-combo-box-edit.png deleted file mode 100755 index 78e3f3d3..00000000 Binary files a/static/images/status/ui-combo-box-edit.png and /dev/null differ diff --git a/static/images/status/ui-combo-box.png b/static/images/status/ui-combo-box.png deleted file mode 100755 index 53d306e7..00000000 Binary files a/static/images/status/ui-combo-box.png and /dev/null differ diff --git a/static/images/status/ui-combo-boxes.png b/static/images/status/ui-combo-boxes.png deleted file mode 100755 index 9d51b6b1..00000000 Binary files a/static/images/status/ui-combo-boxes.png and /dev/null differ diff --git a/static/images/status/ui-flow.png b/static/images/status/ui-flow.png deleted file mode 100755 index 9cec27e0..00000000 Binary files a/static/images/status/ui-flow.png and /dev/null differ diff --git a/static/images/status/ui-group-box.png b/static/images/status/ui-group-box.png deleted file mode 100755 index e270f6bb..00000000 Binary files a/static/images/status/ui-group-box.png and /dev/null differ diff --git a/static/images/status/ui-label-link.png b/static/images/status/ui-label-link.png deleted file mode 100755 index 98bca057..00000000 Binary files a/static/images/status/ui-label-link.png and /dev/null differ diff --git a/static/images/status/ui-label.png b/static/images/status/ui-label.png deleted file mode 100755 index 2fc5ccc4..00000000 Binary files a/static/images/status/ui-label.png and /dev/null differ diff --git a/static/images/status/ui-labels.png b/static/images/status/ui-labels.png deleted file mode 100755 index 4e40d243..00000000 Binary files a/static/images/status/ui-labels.png and /dev/null differ diff --git a/static/images/status/ui-layout-panel.png b/static/images/status/ui-layout-panel.png deleted file mode 100755 index 8ddc2712..00000000 Binary files a/static/images/status/ui-layout-panel.png and /dev/null differ diff --git a/static/images/status/ui-list-box-blue.png b/static/images/status/ui-list-box-blue.png deleted file mode 100755 index 5b47c67c..00000000 Binary files a/static/images/status/ui-list-box-blue.png and /dev/null differ diff --git a/static/images/status/ui-list-box.png b/static/images/status/ui-list-box.png deleted file mode 100755 index 60a8db53..00000000 Binary files a/static/images/status/ui-list-box.png and /dev/null differ diff --git a/static/images/status/ui-menu-blue.png b/static/images/status/ui-menu-blue.png deleted file mode 100755 index 44094a26..00000000 Binary files a/static/images/status/ui-menu-blue.png and /dev/null differ diff --git a/static/images/status/ui-menu.png b/static/images/status/ui-menu.png deleted file mode 100755 index 1c82eb8c..00000000 Binary files a/static/images/status/ui-menu.png and /dev/null differ diff --git a/static/images/status/ui-paginator.png b/static/images/status/ui-paginator.png deleted file mode 100755 index b8819032..00000000 Binary files a/static/images/status/ui-paginator.png and /dev/null differ diff --git a/static/images/status/ui-progress-bar-indeterminate.png b/static/images/status/ui-progress-bar-indeterminate.png deleted file mode 100755 index f9dc842f..00000000 Binary files a/static/images/status/ui-progress-bar-indeterminate.png and /dev/null differ diff --git a/static/images/status/ui-progress-bar.png b/static/images/status/ui-progress-bar.png deleted file mode 100755 index c7db00ae..00000000 Binary files a/static/images/status/ui-progress-bar.png and /dev/null differ diff --git a/static/images/status/ui-radio-button-uncheck.png b/static/images/status/ui-radio-button-uncheck.png deleted file mode 100755 index ec7102b6..00000000 Binary files a/static/images/status/ui-radio-button-uncheck.png and /dev/null differ diff --git a/static/images/status/ui-radio-button.png b/static/images/status/ui-radio-button.png deleted file mode 100755 index f83a2549..00000000 Binary files a/static/images/status/ui-radio-button.png and /dev/null differ diff --git a/static/images/status/ui-radio-buttons.png b/static/images/status/ui-radio-buttons.png deleted file mode 100755 index 1d27c7cc..00000000 Binary files a/static/images/status/ui-radio-buttons.png and /dev/null differ diff --git a/static/images/status/ui-ruler.png b/static/images/status/ui-ruler.png deleted file mode 100755 index 72d1b810..00000000 Binary files a/static/images/status/ui-ruler.png and /dev/null differ diff --git a/static/images/status/ui-scroll-bar-horizontal.png b/static/images/status/ui-scroll-bar-horizontal.png deleted file mode 100755 index f93ed8f8..00000000 Binary files a/static/images/status/ui-scroll-bar-horizontal.png and /dev/null differ diff --git a/static/images/status/ui-scroll-bar.png b/static/images/status/ui-scroll-bar.png deleted file mode 100755 index 709605a0..00000000 Binary files a/static/images/status/ui-scroll-bar.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-blog.png b/static/images/status/ui-scroll-pane-blog.png deleted file mode 100755 index c0ea9727..00000000 Binary files a/static/images/status/ui-scroll-pane-blog.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-both.png b/static/images/status/ui-scroll-pane-both.png deleted file mode 100755 index 76aae63d..00000000 Binary files a/static/images/status/ui-scroll-pane-both.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-detail.png b/static/images/status/ui-scroll-pane-detail.png deleted file mode 100755 index 7f05f64f..00000000 Binary files a/static/images/status/ui-scroll-pane-detail.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-form.png b/static/images/status/ui-scroll-pane-form.png deleted file mode 100755 index ea08d8ac..00000000 Binary files a/static/images/status/ui-scroll-pane-form.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-horizontal.png b/static/images/status/ui-scroll-pane-horizontal.png deleted file mode 100755 index 3ce5847e..00000000 Binary files a/static/images/status/ui-scroll-pane-horizontal.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-icon.png b/static/images/status/ui-scroll-pane-icon.png deleted file mode 100755 index 4ca5fd0a..00000000 Binary files a/static/images/status/ui-scroll-pane-icon.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-image.png b/static/images/status/ui-scroll-pane-image.png deleted file mode 100755 index 1cde3487..00000000 Binary files a/static/images/status/ui-scroll-pane-image.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-list.png b/static/images/status/ui-scroll-pane-list.png deleted file mode 100755 index 29560b30..00000000 Binary files a/static/images/status/ui-scroll-pane-list.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-table.png b/static/images/status/ui-scroll-pane-table.png deleted file mode 100755 index 17b52ff7..00000000 Binary files a/static/images/status/ui-scroll-pane-table.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-text-image.png b/static/images/status/ui-scroll-pane-text-image.png deleted file mode 100755 index ba5698ee..00000000 Binary files a/static/images/status/ui-scroll-pane-text-image.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-text.png b/static/images/status/ui-scroll-pane-text.png deleted file mode 100755 index c5d42a04..00000000 Binary files a/static/images/status/ui-scroll-pane-text.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane-tree.png b/static/images/status/ui-scroll-pane-tree.png deleted file mode 100755 index 85edf8ff..00000000 Binary files a/static/images/status/ui-scroll-pane-tree.png and /dev/null differ diff --git a/static/images/status/ui-scroll-pane.png b/static/images/status/ui-scroll-pane.png deleted file mode 100755 index e1e6951b..00000000 Binary files a/static/images/status/ui-scroll-pane.png and /dev/null differ diff --git a/static/images/status/ui-search-field.png b/static/images/status/ui-search-field.png deleted file mode 100755 index bdd0dc7c..00000000 Binary files a/static/images/status/ui-search-field.png and /dev/null differ diff --git a/static/images/status/ui-slider-050.png b/static/images/status/ui-slider-050.png deleted file mode 100755 index b012f5ce..00000000 Binary files a/static/images/status/ui-slider-050.png and /dev/null differ diff --git a/static/images/status/ui-slider-100.png b/static/images/status/ui-slider-100.png deleted file mode 100755 index 3180ccc4..00000000 Binary files a/static/images/status/ui-slider-100.png and /dev/null differ diff --git a/static/images/status/ui-slider-vertical-050.png b/static/images/status/ui-slider-vertical-050.png deleted file mode 100755 index 1b0dbc58..00000000 Binary files a/static/images/status/ui-slider-vertical-050.png and /dev/null differ diff --git a/static/images/status/ui-slider-vertical-100.png b/static/images/status/ui-slider-vertical-100.png deleted file mode 100755 index 9852320a..00000000 Binary files a/static/images/status/ui-slider-vertical-100.png and /dev/null differ diff --git a/static/images/status/ui-slider-vertical.png b/static/images/status/ui-slider-vertical.png deleted file mode 100755 index 65cc4230..00000000 Binary files a/static/images/status/ui-slider-vertical.png and /dev/null differ diff --git a/static/images/status/ui-slider.png b/static/images/status/ui-slider.png deleted file mode 100755 index 7c0d7f75..00000000 Binary files a/static/images/status/ui-slider.png and /dev/null differ diff --git a/static/images/status/ui-spin.png b/static/images/status/ui-spin.png deleted file mode 100755 index c0834d85..00000000 Binary files a/static/images/status/ui-spin.png and /dev/null differ diff --git a/static/images/status/ui-splitter-horizontal.png b/static/images/status/ui-splitter-horizontal.png deleted file mode 100755 index 4ee8a5c0..00000000 Binary files a/static/images/status/ui-splitter-horizontal.png and /dev/null differ diff --git a/static/images/status/ui-splitter.png b/static/images/status/ui-splitter.png deleted file mode 100755 index f2c3dca1..00000000 Binary files a/static/images/status/ui-splitter.png and /dev/null differ diff --git a/static/images/status/ui-status-bar-blue.png b/static/images/status/ui-status-bar-blue.png deleted file mode 100755 index 033f9da7..00000000 Binary files a/static/images/status/ui-status-bar-blue.png and /dev/null differ diff --git a/static/images/status/ui-status-bar.png b/static/images/status/ui-status-bar.png deleted file mode 100755 index 5b684953..00000000 Binary files a/static/images/status/ui-status-bar.png and /dev/null differ diff --git a/static/images/status/ui-tab--arrow.png b/static/images/status/ui-tab--arrow.png deleted file mode 100755 index 62a8f1e2..00000000 Binary files a/static/images/status/ui-tab--arrow.png and /dev/null differ diff --git a/static/images/status/ui-tab--exclamation.png b/static/images/status/ui-tab--exclamation.png deleted file mode 100755 index 7328dac4..00000000 Binary files a/static/images/status/ui-tab--exclamation.png and /dev/null differ diff --git a/static/images/status/ui-tab--minus.png b/static/images/status/ui-tab--minus.png deleted file mode 100755 index 0220c869..00000000 Binary files a/static/images/status/ui-tab--minus.png and /dev/null differ diff --git a/static/images/status/ui-tab--pencil.png b/static/images/status/ui-tab--pencil.png deleted file mode 100755 index 263be9ed..00000000 Binary files a/static/images/status/ui-tab--pencil.png and /dev/null differ diff --git a/static/images/status/ui-tab--plus.png b/static/images/status/ui-tab--plus.png deleted file mode 100755 index de2fe4af..00000000 Binary files a/static/images/status/ui-tab--plus.png and /dev/null differ diff --git a/static/images/status/ui-tab-bottom.png b/static/images/status/ui-tab-bottom.png deleted file mode 100755 index 864bd018..00000000 Binary files a/static/images/status/ui-tab-bottom.png and /dev/null differ diff --git a/static/images/status/ui-tab-content.png b/static/images/status/ui-tab-content.png deleted file mode 100755 index 00eb6fcb..00000000 Binary files a/static/images/status/ui-tab-content.png and /dev/null differ diff --git a/static/images/status/ui-tab-side.png b/static/images/status/ui-tab-side.png deleted file mode 100755 index 29c76edb..00000000 Binary files a/static/images/status/ui-tab-side.png and /dev/null differ diff --git a/static/images/status/ui-tab.png b/static/images/status/ui-tab.png deleted file mode 100755 index d956ac28..00000000 Binary files a/static/images/status/ui-tab.png and /dev/null differ diff --git a/static/images/status/ui-text-field-hidden.png b/static/images/status/ui-text-field-hidden.png deleted file mode 100755 index dc8b275b..00000000 Binary files a/static/images/status/ui-text-field-hidden.png and /dev/null differ diff --git a/static/images/status/ui-text-field-password.png b/static/images/status/ui-text-field-password.png deleted file mode 100755 index f072760c..00000000 Binary files a/static/images/status/ui-text-field-password.png and /dev/null differ diff --git a/static/images/status/ui-text-field-select.png b/static/images/status/ui-text-field-select.png deleted file mode 100755 index 3cfe301a..00000000 Binary files a/static/images/status/ui-text-field-select.png and /dev/null differ diff --git a/static/images/status/ui-text-field-suggestion.png b/static/images/status/ui-text-field-suggestion.png deleted file mode 100755 index 62910d12..00000000 Binary files a/static/images/status/ui-text-field-suggestion.png and /dev/null differ diff --git a/static/images/status/ui-text-field.png b/static/images/status/ui-text-field.png deleted file mode 100755 index 7fc1c7f7..00000000 Binary files a/static/images/status/ui-text-field.png and /dev/null differ diff --git a/static/images/status/ui-toolbar--arrow.png b/static/images/status/ui-toolbar--arrow.png deleted file mode 100755 index 942a2f24..00000000 Binary files a/static/images/status/ui-toolbar--arrow.png and /dev/null differ diff --git a/static/images/status/ui-toolbar--exclamation.png b/static/images/status/ui-toolbar--exclamation.png deleted file mode 100755 index ddfa2cba..00000000 Binary files a/static/images/status/ui-toolbar--exclamation.png and /dev/null differ diff --git a/static/images/status/ui-toolbar--minus.png b/static/images/status/ui-toolbar--minus.png deleted file mode 100755 index ff9f116e..00000000 Binary files a/static/images/status/ui-toolbar--minus.png and /dev/null differ diff --git a/static/images/status/ui-toolbar--pencil.png b/static/images/status/ui-toolbar--pencil.png deleted file mode 100755 index 1abd066e..00000000 Binary files a/static/images/status/ui-toolbar--pencil.png and /dev/null differ diff --git a/static/images/status/ui-toolbar--plus.png b/static/images/status/ui-toolbar--plus.png deleted file mode 100755 index b783a04d..00000000 Binary files a/static/images/status/ui-toolbar--plus.png and /dev/null differ diff --git a/static/images/status/ui-toolbar-bookmark.png b/static/images/status/ui-toolbar-bookmark.png deleted file mode 100755 index 5525d339..00000000 Binary files a/static/images/status/ui-toolbar-bookmark.png and /dev/null differ diff --git a/static/images/status/ui-toolbar.png b/static/images/status/ui-toolbar.png deleted file mode 100755 index e061b225..00000000 Binary files a/static/images/status/ui-toolbar.png and /dev/null differ diff --git a/static/images/status/ui-tooltip-balloon.png b/static/images/status/ui-tooltip-balloon.png deleted file mode 100755 index c5760799..00000000 Binary files a/static/images/status/ui-tooltip-balloon.png and /dev/null differ diff --git a/static/images/status/ui-tooltip.png b/static/images/status/ui-tooltip.png deleted file mode 100755 index 40a16f12..00000000 Binary files a/static/images/status/ui-tooltip.png and /dev/null differ diff --git a/static/images/status/umbrella--arrow.png b/static/images/status/umbrella--arrow.png deleted file mode 100755 index a0d26c91..00000000 Binary files a/static/images/status/umbrella--arrow.png and /dev/null differ diff --git a/static/images/status/umbrella--exclamation.png b/static/images/status/umbrella--exclamation.png deleted file mode 100755 index 202cd169..00000000 Binary files a/static/images/status/umbrella--exclamation.png and /dev/null differ diff --git a/static/images/status/umbrella--minus.png b/static/images/status/umbrella--minus.png deleted file mode 100755 index 80755ec0..00000000 Binary files a/static/images/status/umbrella--minus.png and /dev/null differ diff --git a/static/images/status/umbrella--pencil.png b/static/images/status/umbrella--pencil.png deleted file mode 100755 index de2ee44a..00000000 Binary files a/static/images/status/umbrella--pencil.png and /dev/null differ diff --git a/static/images/status/umbrella--plus.png b/static/images/status/umbrella--plus.png deleted file mode 100755 index a45990c3..00000000 Binary files a/static/images/status/umbrella--plus.png and /dev/null differ diff --git a/static/images/status/umbrella.png b/static/images/status/umbrella.png deleted file mode 100755 index b1f9264f..00000000 Binary files a/static/images/status/umbrella.png and /dev/null differ diff --git a/static/images/status/universal.png b/static/images/status/universal.png deleted file mode 100755 index 1b1ea7dd..00000000 Binary files a/static/images/status/universal.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive--arrow.png b/static/images/status/usb-flash-drive--arrow.png deleted file mode 100755 index 85f3e9e7..00000000 Binary files a/static/images/status/usb-flash-drive--arrow.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive--exclamation.png b/static/images/status/usb-flash-drive--exclamation.png deleted file mode 100755 index 6950bf1c..00000000 Binary files a/static/images/status/usb-flash-drive--exclamation.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive--minus.png b/static/images/status/usb-flash-drive--minus.png deleted file mode 100755 index e0a811ee..00000000 Binary files a/static/images/status/usb-flash-drive--minus.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive--pencil.png b/static/images/status/usb-flash-drive--pencil.png deleted file mode 100755 index d76f49e1..00000000 Binary files a/static/images/status/usb-flash-drive--pencil.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive--plus.png b/static/images/status/usb-flash-drive--plus.png deleted file mode 100755 index 1e1f9ac7..00000000 Binary files a/static/images/status/usb-flash-drive--plus.png and /dev/null differ diff --git a/static/images/status/usb-flash-drive.png b/static/images/status/usb-flash-drive.png deleted file mode 100755 index d99d1840..00000000 Binary files a/static/images/status/usb-flash-drive.png and /dev/null differ diff --git a/static/images/status/user--arrow.png b/static/images/status/user--arrow.png deleted file mode 100755 index 6b6e825e..00000000 Binary files a/static/images/status/user--arrow.png and /dev/null differ diff --git a/static/images/status/user--exclamation.png b/static/images/status/user--exclamation.png deleted file mode 100755 index dc1309d1..00000000 Binary files a/static/images/status/user--exclamation.png and /dev/null differ diff --git a/static/images/status/user--minus.png b/static/images/status/user--minus.png deleted file mode 100755 index d757074c..00000000 Binary files a/static/images/status/user--minus.png and /dev/null differ diff --git a/static/images/status/user--pencil.png b/static/images/status/user--pencil.png deleted file mode 100755 index 5fa48043..00000000 Binary files a/static/images/status/user--pencil.png and /dev/null differ diff --git a/static/images/status/user--plus.png b/static/images/status/user--plus.png deleted file mode 100755 index 9f6c0f5f..00000000 Binary files a/static/images/status/user--plus.png and /dev/null differ diff --git a/static/images/status/user-black-female.png b/static/images/status/user-black-female.png deleted file mode 100755 index 75c1e118..00000000 Binary files a/static/images/status/user-black-female.png and /dev/null differ diff --git a/static/images/status/user-black.png b/static/images/status/user-black.png deleted file mode 100755 index 30ad3d83..00000000 Binary files a/static/images/status/user-black.png and /dev/null differ diff --git a/static/images/status/user-business-boss.png b/static/images/status/user-business-boss.png deleted file mode 100755 index 69bea71b..00000000 Binary files a/static/images/status/user-business-boss.png and /dev/null differ diff --git a/static/images/status/user-business-gray-boss.png b/static/images/status/user-business-gray-boss.png deleted file mode 100755 index 1627b45e..00000000 Binary files a/static/images/status/user-business-gray-boss.png and /dev/null differ diff --git a/static/images/status/user-business-gray.png b/static/images/status/user-business-gray.png deleted file mode 100755 index b71f7249..00000000 Binary files a/static/images/status/user-business-gray.png and /dev/null differ diff --git a/static/images/status/user-business.png b/static/images/status/user-business.png deleted file mode 100755 index e030b5e9..00000000 Binary files a/static/images/status/user-business.png and /dev/null differ diff --git a/static/images/status/user-detective-gray.png b/static/images/status/user-detective-gray.png deleted file mode 100755 index 592a5aa2..00000000 Binary files a/static/images/status/user-detective-gray.png and /dev/null differ diff --git a/static/images/status/user-detective.png b/static/images/status/user-detective.png deleted file mode 100755 index bfb6566c..00000000 Binary files a/static/images/status/user-detective.png and /dev/null differ diff --git a/static/images/status/user-female.png b/static/images/status/user-female.png deleted file mode 100755 index acc2e909..00000000 Binary files a/static/images/status/user-female.png and /dev/null differ diff --git a/static/images/status/user-gray-female.png b/static/images/status/user-gray-female.png deleted file mode 100755 index 4e7e9e65..00000000 Binary files a/static/images/status/user-gray-female.png and /dev/null differ diff --git a/static/images/status/user-gray.png b/static/images/status/user-gray.png deleted file mode 100755 index e63de8c4..00000000 Binary files a/static/images/status/user-gray.png and /dev/null differ diff --git a/static/images/status/user-green-female.png b/static/images/status/user-green-female.png deleted file mode 100755 index 29065cf2..00000000 Binary files a/static/images/status/user-green-female.png and /dev/null differ diff --git a/static/images/status/user-green.png b/static/images/status/user-green.png deleted file mode 100755 index 4e89e105..00000000 Binary files a/static/images/status/user-green.png and /dev/null differ diff --git a/static/images/status/user-medium-female.png b/static/images/status/user-medium-female.png deleted file mode 100755 index a966bd2a..00000000 Binary files a/static/images/status/user-medium-female.png and /dev/null differ diff --git a/static/images/status/user-medium.png b/static/images/status/user-medium.png deleted file mode 100755 index 57fc528d..00000000 Binary files a/static/images/status/user-medium.png and /dev/null differ diff --git a/static/images/status/user-nude-female.png b/static/images/status/user-nude-female.png deleted file mode 100755 index b42e4543..00000000 Binary files a/static/images/status/user-nude-female.png and /dev/null differ diff --git a/static/images/status/user-nude.png b/static/images/status/user-nude.png deleted file mode 100755 index 6ebd74e4..00000000 Binary files a/static/images/status/user-nude.png and /dev/null differ diff --git a/static/images/status/user-red-female.png b/static/images/status/user-red-female.png deleted file mode 100755 index 274d6b92..00000000 Binary files a/static/images/status/user-red-female.png and /dev/null differ diff --git a/static/images/status/user-red.png b/static/images/status/user-red.png deleted file mode 100755 index 2ec42ff8..00000000 Binary files a/static/images/status/user-red.png and /dev/null differ diff --git a/static/images/status/user-silhouette-question.png b/static/images/status/user-silhouette-question.png deleted file mode 100755 index 09f73c23..00000000 Binary files a/static/images/status/user-silhouette-question.png and /dev/null differ diff --git a/static/images/status/user-silhouette.png b/static/images/status/user-silhouette.png deleted file mode 100755 index f6e4dc8a..00000000 Binary files a/static/images/status/user-silhouette.png and /dev/null differ diff --git a/static/images/status/user-small-female.png b/static/images/status/user-small-female.png deleted file mode 100755 index f66eec81..00000000 Binary files a/static/images/status/user-small-female.png and /dev/null differ diff --git a/static/images/status/user-small.png b/static/images/status/user-small.png deleted file mode 100755 index 6a1b7d96..00000000 Binary files a/static/images/status/user-small.png and /dev/null differ diff --git a/static/images/status/user-thief-baldie.png b/static/images/status/user-thief-baldie.png deleted file mode 100755 index 03b85bb2..00000000 Binary files a/static/images/status/user-thief-baldie.png and /dev/null differ diff --git a/static/images/status/user-thief-female.png b/static/images/status/user-thief-female.png deleted file mode 100755 index 018b480a..00000000 Binary files a/static/images/status/user-thief-female.png and /dev/null differ diff --git a/static/images/status/user-thief.png b/static/images/status/user-thief.png deleted file mode 100755 index 8287316e..00000000 Binary files a/static/images/status/user-thief.png and /dev/null differ diff --git a/static/images/status/user-white-female.png b/static/images/status/user-white-female.png deleted file mode 100755 index 6b0ea93e..00000000 Binary files a/static/images/status/user-white-female.png and /dev/null differ diff --git a/static/images/status/user-white.png b/static/images/status/user-white.png deleted file mode 100755 index 3c3c4b3f..00000000 Binary files a/static/images/status/user-white.png and /dev/null differ diff --git a/static/images/status/user-worker-boss.png b/static/images/status/user-worker-boss.png deleted file mode 100755 index 654294f2..00000000 Binary files a/static/images/status/user-worker-boss.png and /dev/null differ diff --git a/static/images/status/user-worker.png b/static/images/status/user-worker.png deleted file mode 100755 index 9cbc9e5d..00000000 Binary files a/static/images/status/user-worker.png and /dev/null differ diff --git a/static/images/status/user-yellow-female.png b/static/images/status/user-yellow-female.png deleted file mode 100755 index 1257e66e..00000000 Binary files a/static/images/status/user-yellow-female.png and /dev/null differ diff --git a/static/images/status/user-yellow.png b/static/images/status/user-yellow.png deleted file mode 100755 index 9064df3e..00000000 Binary files a/static/images/status/user-yellow.png and /dev/null differ diff --git a/static/images/status/user.png b/static/images/status/user.png deleted file mode 100755 index 2d44726f..00000000 Binary files a/static/images/status/user.png and /dev/null differ diff --git a/static/images/status/users.png b/static/images/status/users.png deleted file mode 100755 index a6aae040..00000000 Binary files a/static/images/status/users.png and /dev/null differ diff --git a/static/images/status/validation-document.png b/static/images/status/validation-document.png deleted file mode 100755 index ef88d468..00000000 Binary files a/static/images/status/validation-document.png and /dev/null differ diff --git a/static/images/status/validation-invalid-document.png b/static/images/status/validation-invalid-document.png deleted file mode 100755 index 1d28bc5f..00000000 Binary files a/static/images/status/validation-invalid-document.png and /dev/null differ diff --git a/static/images/status/validation-invalid.png b/static/images/status/validation-invalid.png deleted file mode 100755 index 0defb575..00000000 Binary files a/static/images/status/validation-invalid.png and /dev/null differ diff --git a/static/images/status/validation-label-html.png b/static/images/status/validation-label-html.png deleted file mode 100755 index 5ffa4731..00000000 Binary files a/static/images/status/validation-label-html.png and /dev/null differ diff --git a/static/images/status/validation-label.png b/static/images/status/validation-label.png deleted file mode 100755 index dc7b0263..00000000 Binary files a/static/images/status/validation-label.png and /dev/null differ diff --git a/static/images/status/validation-valid-document.png b/static/images/status/validation-valid-document.png deleted file mode 100755 index fe4889b6..00000000 Binary files a/static/images/status/validation-valid-document.png and /dev/null differ diff --git a/static/images/status/validation-valid.png b/static/images/status/validation-valid.png deleted file mode 100755 index 9edce469..00000000 Binary files a/static/images/status/validation-valid.png and /dev/null differ diff --git a/static/images/status/validation.png b/static/images/status/validation.png deleted file mode 100755 index 5528d73f..00000000 Binary files a/static/images/status/validation.png and /dev/null differ diff --git a/static/images/status/vise-drawer.png b/static/images/status/vise-drawer.png deleted file mode 100755 index ebe7c1d4..00000000 Binary files a/static/images/status/vise-drawer.png and /dev/null differ diff --git a/static/images/status/vise.png b/static/images/status/vise.png deleted file mode 100755 index 4c17355c..00000000 Binary files a/static/images/status/vise.png and /dev/null differ diff --git a/static/images/status/wall--arrow.png b/static/images/status/wall--arrow.png deleted file mode 100755 index 7782f3a4..00000000 Binary files a/static/images/status/wall--arrow.png and /dev/null differ diff --git a/static/images/status/wall--exclamation.png b/static/images/status/wall--exclamation.png deleted file mode 100755 index ca68ea5c..00000000 Binary files a/static/images/status/wall--exclamation.png and /dev/null differ diff --git a/static/images/status/wall--minus.png b/static/images/status/wall--minus.png deleted file mode 100755 index ff6138a6..00000000 Binary files a/static/images/status/wall--minus.png and /dev/null differ diff --git a/static/images/status/wall--pencil.png b/static/images/status/wall--pencil.png deleted file mode 100755 index 2f6df8f4..00000000 Binary files a/static/images/status/wall--pencil.png and /dev/null differ diff --git a/static/images/status/wall--plus.png b/static/images/status/wall--plus.png deleted file mode 100755 index aeecf1a5..00000000 Binary files a/static/images/status/wall--plus.png and /dev/null differ diff --git a/static/images/status/wall-break.png b/static/images/status/wall-break.png deleted file mode 100755 index 24765432..00000000 Binary files a/static/images/status/wall-break.png and /dev/null differ diff --git a/static/images/status/wall-brick.png b/static/images/status/wall-brick.png deleted file mode 100755 index 7184a78c..00000000 Binary files a/static/images/status/wall-brick.png and /dev/null differ diff --git a/static/images/status/wall-small-brick.png b/static/images/status/wall-small-brick.png deleted file mode 100755 index cc5871cd..00000000 Binary files a/static/images/status/wall-small-brick.png and /dev/null differ diff --git a/static/images/status/wall-small.png b/static/images/status/wall-small.png deleted file mode 100755 index dd13add0..00000000 Binary files a/static/images/status/wall-small.png and /dev/null differ diff --git a/static/images/status/wall.png b/static/images/status/wall.png deleted file mode 100755 index fae8f0b0..00000000 Binary files a/static/images/status/wall.png and /dev/null differ diff --git a/static/images/status/wallet--arrow.png b/static/images/status/wallet--arrow.png deleted file mode 100755 index a04bbca7..00000000 Binary files a/static/images/status/wallet--arrow.png and /dev/null differ diff --git a/static/images/status/wallet--exclamation.png b/static/images/status/wallet--exclamation.png deleted file mode 100755 index 3f058f5e..00000000 Binary files a/static/images/status/wallet--exclamation.png and /dev/null differ diff --git a/static/images/status/wallet--minus.png b/static/images/status/wallet--minus.png deleted file mode 100755 index 5257af93..00000000 Binary files a/static/images/status/wallet--minus.png and /dev/null differ diff --git a/static/images/status/wallet--pencil.png b/static/images/status/wallet--pencil.png deleted file mode 100755 index ca48b916..00000000 Binary files a/static/images/status/wallet--pencil.png and /dev/null differ diff --git a/static/images/status/wallet--plus.png b/static/images/status/wallet--plus.png deleted file mode 100755 index 26f4c50f..00000000 Binary files a/static/images/status/wallet--plus.png and /dev/null differ diff --git a/static/images/status/wallet.png b/static/images/status/wallet.png deleted file mode 100755 index 3a7d4126..00000000 Binary files a/static/images/status/wallet.png and /dev/null differ diff --git a/static/images/status/wand--arrow.png b/static/images/status/wand--arrow.png deleted file mode 100755 index 7dbce266..00000000 Binary files a/static/images/status/wand--arrow.png and /dev/null differ diff --git a/static/images/status/wand--exclamation.png b/static/images/status/wand--exclamation.png deleted file mode 100755 index ab689be1..00000000 Binary files a/static/images/status/wand--exclamation.png and /dev/null differ diff --git a/static/images/status/wand--minus.png b/static/images/status/wand--minus.png deleted file mode 100755 index 4c2d7c22..00000000 Binary files a/static/images/status/wand--minus.png and /dev/null differ diff --git a/static/images/status/wand--pencil.png b/static/images/status/wand--pencil.png deleted file mode 100755 index 7e87a7e5..00000000 Binary files a/static/images/status/wand--pencil.png and /dev/null differ diff --git a/static/images/status/wand--plus.png b/static/images/status/wand--plus.png deleted file mode 100755 index b35d3481..00000000 Binary files a/static/images/status/wand--plus.png and /dev/null differ diff --git a/static/images/status/wand-hat.png b/static/images/status/wand-hat.png deleted file mode 100755 index fe94ac25..00000000 Binary files a/static/images/status/wand-hat.png and /dev/null differ diff --git a/static/images/status/wand-small.png b/static/images/status/wand-small.png deleted file mode 100755 index 66a53c45..00000000 Binary files a/static/images/status/wand-small.png and /dev/null differ diff --git a/static/images/status/wand.png b/static/images/status/wand.png deleted file mode 100755 index 1e2724ea..00000000 Binary files a/static/images/status/wand.png and /dev/null differ diff --git a/static/images/status/water--arrow.png b/static/images/status/water--arrow.png deleted file mode 100755 index 54463410..00000000 Binary files a/static/images/status/water--arrow.png and /dev/null differ diff --git a/static/images/status/water--exclamation.png b/static/images/status/water--exclamation.png deleted file mode 100755 index 85ac5e3f..00000000 Binary files a/static/images/status/water--exclamation.png and /dev/null differ diff --git a/static/images/status/water--minus.png b/static/images/status/water--minus.png deleted file mode 100755 index 69b651b5..00000000 Binary files a/static/images/status/water--minus.png and /dev/null differ diff --git a/static/images/status/water--pencil.png b/static/images/status/water--pencil.png deleted file mode 100755 index f5379bda..00000000 Binary files a/static/images/status/water--pencil.png and /dev/null differ diff --git a/static/images/status/water--plus.png b/static/images/status/water--plus.png deleted file mode 100755 index f1b72df6..00000000 Binary files a/static/images/status/water--plus.png and /dev/null differ diff --git a/static/images/status/water.png b/static/images/status/water.png deleted file mode 100755 index caa3083c..00000000 Binary files a/static/images/status/water.png and /dev/null differ diff --git a/static/images/status/weather-cloud.png b/static/images/status/weather-cloud.png deleted file mode 100755 index 49afdad8..00000000 Binary files a/static/images/status/weather-cloud.png and /dev/null differ diff --git a/static/images/status/weather-clouds.png b/static/images/status/weather-clouds.png deleted file mode 100755 index 732c635f..00000000 Binary files a/static/images/status/weather-clouds.png and /dev/null differ diff --git a/static/images/status/weather-cloudy.png b/static/images/status/weather-cloudy.png deleted file mode 100755 index 06962826..00000000 Binary files a/static/images/status/weather-cloudy.png and /dev/null differ diff --git a/static/images/status/weather-fog.png b/static/images/status/weather-fog.png deleted file mode 100755 index a17878d0..00000000 Binary files a/static/images/status/weather-fog.png and /dev/null differ diff --git a/static/images/status/weather-lightning.png b/static/images/status/weather-lightning.png deleted file mode 100755 index b7a03f64..00000000 Binary files a/static/images/status/weather-lightning.png and /dev/null differ diff --git a/static/images/status/weather-moon-clouds.png b/static/images/status/weather-moon-clouds.png deleted file mode 100755 index d1826005..00000000 Binary files a/static/images/status/weather-moon-clouds.png and /dev/null differ diff --git a/static/images/status/weather-moon-fog.png b/static/images/status/weather-moon-fog.png deleted file mode 100755 index 26346a99..00000000 Binary files a/static/images/status/weather-moon-fog.png and /dev/null differ diff --git a/static/images/status/weather-moon.png b/static/images/status/weather-moon.png deleted file mode 100755 index 545b6f9c..00000000 Binary files a/static/images/status/weather-moon.png and /dev/null differ diff --git a/static/images/status/weather-rain.png b/static/images/status/weather-rain.png deleted file mode 100755 index 5c91a388..00000000 Binary files a/static/images/status/weather-rain.png and /dev/null differ diff --git a/static/images/status/weather-snow.png b/static/images/status/weather-snow.png deleted file mode 100755 index 2b8ee5ca..00000000 Binary files a/static/images/status/weather-snow.png and /dev/null differ diff --git a/static/images/status/weather.png b/static/images/status/weather.png deleted file mode 100755 index ff082c8a..00000000 Binary files a/static/images/status/weather.png and /dev/null differ diff --git a/static/images/status/webcam--arrow.png b/static/images/status/webcam--arrow.png deleted file mode 100755 index 72c5426f..00000000 Binary files a/static/images/status/webcam--arrow.png and /dev/null differ diff --git a/static/images/status/webcam--exclamation.png b/static/images/status/webcam--exclamation.png deleted file mode 100755 index 3e9f379b..00000000 Binary files a/static/images/status/webcam--exclamation.png and /dev/null differ diff --git a/static/images/status/webcam--minus.png b/static/images/status/webcam--minus.png deleted file mode 100755 index f1d1c6e0..00000000 Binary files a/static/images/status/webcam--minus.png and /dev/null differ diff --git a/static/images/status/webcam--pencil.png b/static/images/status/webcam--pencil.png deleted file mode 100755 index d4c1c536..00000000 Binary files a/static/images/status/webcam--pencil.png and /dev/null differ diff --git a/static/images/status/webcam--plus.png b/static/images/status/webcam--plus.png deleted file mode 100755 index fcc25fac..00000000 Binary files a/static/images/status/webcam--plus.png and /dev/null differ diff --git a/static/images/status/webcam-network.png b/static/images/status/webcam-network.png deleted file mode 100755 index eaa7754e..00000000 Binary files a/static/images/status/webcam-network.png and /dev/null differ diff --git a/static/images/status/webcam.png b/static/images/status/webcam.png deleted file mode 100755 index 09f26071..00000000 Binary files a/static/images/status/webcam.png and /dev/null differ diff --git a/static/images/status/wheel.png b/static/images/status/wheel.png deleted file mode 100755 index 2dcab4ea..00000000 Binary files a/static/images/status/wheel.png and /dev/null differ diff --git a/static/images/status/wooden-box--arrow.png b/static/images/status/wooden-box--arrow.png deleted file mode 100755 index 7ae6a7fb..00000000 Binary files a/static/images/status/wooden-box--arrow.png and /dev/null differ diff --git a/static/images/status/wooden-box--exclamation.png b/static/images/status/wooden-box--exclamation.png deleted file mode 100755 index 274e5d0a..00000000 Binary files a/static/images/status/wooden-box--exclamation.png and /dev/null differ diff --git a/static/images/status/wooden-box--minus.png b/static/images/status/wooden-box--minus.png deleted file mode 100755 index 17fe5526..00000000 Binary files a/static/images/status/wooden-box--minus.png and /dev/null differ diff --git a/static/images/status/wooden-box--pencil.png b/static/images/status/wooden-box--pencil.png deleted file mode 100755 index ec9f367e..00000000 Binary files a/static/images/status/wooden-box--pencil.png and /dev/null differ diff --git a/static/images/status/wooden-box--plus.png b/static/images/status/wooden-box--plus.png deleted file mode 100755 index 9412e2e1..00000000 Binary files a/static/images/status/wooden-box--plus.png and /dev/null differ diff --git a/static/images/status/wooden-box-label.png b/static/images/status/wooden-box-label.png deleted file mode 100755 index 4d532e42..00000000 Binary files a/static/images/status/wooden-box-label.png and /dev/null differ diff --git a/static/images/status/wooden-box.png b/static/images/status/wooden-box.png deleted file mode 100755 index f64d7610..00000000 Binary files a/static/images/status/wooden-box.png and /dev/null differ diff --git a/static/images/status/wrench--arrow.png b/static/images/status/wrench--arrow.png deleted file mode 100755 index 67197f8d..00000000 Binary files a/static/images/status/wrench--arrow.png and /dev/null differ diff --git a/static/images/status/wrench--exclamation.png b/static/images/status/wrench--exclamation.png deleted file mode 100755 index b322d0b8..00000000 Binary files a/static/images/status/wrench--exclamation.png and /dev/null differ diff --git a/static/images/status/wrench--minus.png b/static/images/status/wrench--minus.png deleted file mode 100755 index 4ae458cf..00000000 Binary files a/static/images/status/wrench--minus.png and /dev/null differ diff --git a/static/images/status/wrench--pencil.png b/static/images/status/wrench--pencil.png deleted file mode 100755 index 7a9cb36a..00000000 Binary files a/static/images/status/wrench--pencil.png and /dev/null differ diff --git a/static/images/status/wrench--plus.png b/static/images/status/wrench--plus.png deleted file mode 100755 index ffa39882..00000000 Binary files a/static/images/status/wrench--plus.png and /dev/null differ diff --git a/static/images/status/wrench-screwdriver.png b/static/images/status/wrench-screwdriver.png deleted file mode 100755 index 7b93eb05..00000000 Binary files a/static/images/status/wrench-screwdriver.png and /dev/null differ diff --git a/static/images/status/xfn-colleague-met.png b/static/images/status/xfn-colleague-met.png deleted file mode 100755 index 09bf85d8..00000000 Binary files a/static/images/status/xfn-colleague-met.png and /dev/null differ diff --git a/static/images/status/xfn-colleague.png b/static/images/status/xfn-colleague.png deleted file mode 100755 index 1c15bc09..00000000 Binary files a/static/images/status/xfn-colleague.png and /dev/null differ diff --git a/static/images/status/xfn-friend-met.png b/static/images/status/xfn-friend-met.png deleted file mode 100755 index b1d31935..00000000 Binary files a/static/images/status/xfn-friend-met.png and /dev/null differ diff --git a/static/images/status/xfn-friend.png b/static/images/status/xfn-friend.png deleted file mode 100755 index e0e1c05f..00000000 Binary files a/static/images/status/xfn-friend.png and /dev/null differ diff --git a/static/images/status/xfn-sweetheart-met.png b/static/images/status/xfn-sweetheart-met.png deleted file mode 100755 index f1fe1c28..00000000 Binary files a/static/images/status/xfn-sweetheart-met.png and /dev/null differ diff --git a/static/images/status/xfn-sweetheart.png b/static/images/status/xfn-sweetheart.png deleted file mode 100755 index b9bbc0ce..00000000 Binary files a/static/images/status/xfn-sweetheart.png and /dev/null differ diff --git a/static/images/status/xfn.png b/static/images/status/xfn.png deleted file mode 100755 index e7cfd7df..00000000 Binary files a/static/images/status/xfn.png and /dev/null differ diff --git a/static/images/status/yin-yang.png b/static/images/status/yin-yang.png deleted file mode 100755 index ded8fe36..00000000 Binary files a/static/images/status/yin-yang.png and /dev/null differ diff --git a/static/images/status/zone--arrow.png b/static/images/status/zone--arrow.png deleted file mode 100755 index 7f8771ec..00000000 Binary files a/static/images/status/zone--arrow.png and /dev/null differ diff --git a/static/images/status/zone--exclamation.png b/static/images/status/zone--exclamation.png deleted file mode 100755 index 5eb589e4..00000000 Binary files a/static/images/status/zone--exclamation.png and /dev/null differ diff --git a/static/images/status/zone--minus.png b/static/images/status/zone--minus.png deleted file mode 100755 index dc2600c5..00000000 Binary files a/static/images/status/zone--minus.png and /dev/null differ diff --git a/static/images/status/zone--pencil.png b/static/images/status/zone--pencil.png deleted file mode 100755 index 1c8007fb..00000000 Binary files a/static/images/status/zone--pencil.png and /dev/null differ diff --git a/static/images/status/zone--plus.png b/static/images/status/zone--plus.png deleted file mode 100755 index 7f76f971..00000000 Binary files a/static/images/status/zone--plus.png and /dev/null differ diff --git a/static/images/status/zone-money.png b/static/images/status/zone-money.png deleted file mode 100755 index 059709bc..00000000 Binary files a/static/images/status/zone-money.png and /dev/null differ diff --git a/static/images/status/zone-select.png b/static/images/status/zone-select.png deleted file mode 100755 index 1ea1c102..00000000 Binary files a/static/images/status/zone-select.png and /dev/null differ diff --git a/static/images/status/zone.png b/static/images/status/zone.png deleted file mode 100755 index 80fc7be9..00000000 Binary files a/static/images/status/zone.png and /dev/null differ diff --git a/static/images/status/zones-stack.png b/static/images/status/zones-stack.png deleted file mode 100755 index 79e07f21..00000000 Binary files a/static/images/status/zones-stack.png and /dev/null differ diff --git a/static/images/status/zones.png b/static/images/status/zones.png deleted file mode 100755 index 84330b89..00000000 Binary files a/static/images/status/zones.png and /dev/null differ diff --git a/static/js/common.js b/static/js/common.js deleted file mode 100644 index 0b203b8f..00000000 --- a/static/js/common.js +++ /dev/null @@ -1,756 +0,0 @@ -// Common functions used on all pages - -var stashboard = {}; - -// Display a message -stashboard.displayMessage = function(message, klass){ - $("#notice span").text(message); - $("#notice").removeClass().addClass(klass).show(); -}; - -// Display an error message -stashboard.error = function(message){ - stashboard.displayMessage(message, "error"); -}; - -// Display an error message -stashboard.success = function(message){ - stashboard.displayMessage(message, "success"); -}; - -// Display an info message -stashboard.info = function(message){ - stashboard.displayMessage(message, "info"); -}; - -stashboard.rfc1123 = function(date){ - var rfc = $.datepicker.formatDate("D, d M yy", date); - rfc = rfc + " " + date.getHours() + ":"; - rfc = rfc + date.getMinutes() + ":" + date.getSeconds(); - var offset = date.getTimezoneOffset(); - var minutes = offset % 60; - var hours = (offset - minutes) / 60; - var off; - - if (offset < 0) { - off = "+"; - hours = -hours; - } else { - off = "-"; - } - - if (hours < 10) { - off += "0"; - } - off += hours.toString(); - - if (minutes < 10) { - off += "0"; - } - off += minutes.toString(); - return rfc + " " + off; -}; - -stashboard.fillLegend = function(isAdmin) { - var createStatusRow = function(data){ - var tr = $(""); - - $("", {"class": "icon"}).append( - $("", { - src: data.image, - alt: data.name - }) - ).appendTo(tr); - - $("", {"class": "description", text: data.description}).appendTo(tr); - - if (isAdmin) { - - var edit = $("", {text: "Edit", href: data.url}); - - $("", {"class": "level", text: data.level}).appendTo(tr); - $("", {html: edit}).appendTo(tr); - $("", {html: - $("", {text: "Delete", href: data.url, "class": "delete-status"}) - }).appendTo(tr); - - edit.click(function(e) { - e.preventDefault(); - var a = $(e.target); - var tr = a.parent().parent(); - var img = tr.children(".icon").children("img"); - //This is somewhat ugly - var value = img.attr("src").split("/").pop().slice(0, -4); - - $("#status-name").val(img.attr("alt")); - $("#status-description").val(tr.children(".description").text()); - $("#statusLevel").val(tr.children(".level").text()); - $("input[name=status-image]:checked").attr("checked", false); - $("input[value=" + value + "]").attr("checked", true); - - $("#add-status-modal").dialog({ - height: 515, - width: 460, - resizable: false, - autoOpen: true, - modal: true, - buttons: { - 'Save': function(){ - $.ajax({ - type: "POST", - url: a.attr("href"), - data: { - name: $("#status-name").val(), - description: $("#status-description").val(), - image: $("input[name=status-image]:checked").val(), - level: $("#statusLevel").val() - }, - dataType: 'json', - context: tr, - success: function(data){ - $("#add-status-modal").dialog('close'); - this.children(".description").text(data.description); - this.children(".level").text(data.level); - this.children(".icon").children("img").attr("alt", data.name); - this.children(".icon").children("img").attr("src", data.image); - }, - error: function(){ - $("#add-status-modal").dialog('close'); - stashboard.error("Could not save status"); - } - }); - }, - 'Cancel': function(){ - $(this).dialog('close'); - } - } - }); - }); - } - $("#legend-body").append(tr); - }; - - $("#add-status").click(function(){ - $("#status-name").val(""); - $("#status-description").val(""); - $("#statusLevel").val(""); - $("#add-status-modal").dialog('open'); - $("input[name=status-image]").attr("checked", false); - }); - - - $.ajax({ - type: "GET", - url: "/api/v1/statuses", - dataType: 'json', - success: function(data){ - - if (data){ - var statuses = data.statuses; - for (var i=0; i < statuses.length; i++) { - createStatusRow(statuses[i]); - } - } - - }, - error: function(){} - }); - - $.ajax({ - type: "GET", - url: "/api/v1/levels", - dataType: "json", - context: $("#statusLevel"), - success: function(data){ - if (data){ - var levels = data.levels; - for (var i=0; i < levels.length; i++) { - $("', { - href: 'services/' + data.id, - text: data.name - }) - ).appendTo(tr); - - if (fetchStatuses) { - imageRow = informationImage; - } - - $('', {"class": "status highlight"}).append( - $('', { - href: 'services/' + data.id, - html: $("", { - src: imageRow, - alt: "Unknown Status" - }) - }) - ).appendTo(tr); - - for (var i=0; i < 5; i++) { - $("", {"class": "status"}).append( - $("", { - src: imageRow, - alt: "Unknown Status" - }) - ).appendTo(tr); - } - - $("#service-list").fadeIn('fast', function(){ - $("#services-body").append(tr); - }); - - if (fetchStatuses){ - - $.ajax({ - type: "GET", - url: "/api/v1/services/" + data.id + "/events/current", - dataType: 'json', - success: function(evt){ - $("#" + data.id + " td.highlight img") - .attr("src", evt.status.image); - - if (evt.informational) { - $("#" + data.id + " td.highlight a").append( - $("", { - src: "/images/small-information.png", - "class": "information" - }) - ); - } - }, - error: function(evt){ - $("#" + data.id + " td.highlight img") - .attr("src", defaultImage); - } - }); - - var rightNow = new Date(); - rightNow.setHours(0); - rightNow.setMinutes(0); - rightNow.setSeconds(0); - rightNow.setMilliseconds(0); - - var endDate = new Date(rightNow.getTime()); - var startDate = new Date(endDate.getTime() - 86400000 * 5); - var url = "/api/v1/services/" + data.id + "/events"; - url += "?start=" + stashboard.rfc1123(startDate); - url += "&end=" + stashboard.rfc1123(endDate); - - $.ajax({ - type: "GET", - url: url, - dataType: 'json', - success: function(results){ - var calendar = {}; - var days = []; - - // Make end date the correct date - endDate = new Date(endDate.getTime() - 86400000); - - for (var i=0; i < 5; i++) { - days.push(endDate); - calendar[endDate.getDate()] = false; - endDate = new Date(endDate.getTime() - 86400000); - } - - var events = results.events; - - for (i=0; i < events.length; i++) { - var e = events[i]; - var evtDate = new Date(e.timestamp); - calendar[evtDate.getDate()] = e.informational || e.status.level !== "NORMAL"; - } - - for (i= days.length-1; i >= 0; i--) { - var d = days[i]; - var td = $("#" + data.id).children("td").eq(i+2); - - url = "/services/" + data.id + "/" + d.getFullYear() + "/"; - url += (d.getMonth() + 1) + "/" + d.getDate(); - - if (calendar[d.getDate()]) { - td.html($("", {href: url}).append( - $("",{src: "/images/status/information.png"})) - ); - } else { - td.html($("", {href: url}).append( - $("",{src: defaultImage})) - ); - } - } - - }, - error: function(){ - - } - }); - } - }; - - $.ajax({ - type: "GET", - url: "/api/v1/services", - dataType: 'json', - success: function(data){ - - var services = data.services; - - for (var i=0; i < services.length; i++) { - createServiceRow(services[i], true); - } - - }, - error: function(){ } - }); - - $("#statusBox").click(function(){ - if($(this).is(":checked")){ - $("#submit .status").removeAttr('disabled'); - } else { - $("#submit .status").attr('disabled', 'disabled'); - } - }); - - $("#messageBox").click(function(){ - if($(this).is(":checked")){ - $("#submit .message").removeAttr('disabled'); - } else { - $("#submit .message").attr('disabled', 'disabled'); - } - }); - - $("#add-service").click(function(){ - $("#add-service-modal").dialog('open'); - }); - - - $("#add-service-modal").dialog({ - height: 310, - width: 460, - resizable: false, - modal: true, - autoOpen: false, - buttons: { - 'Create Service': function(){ - $.ajax({ - type: "POST", - url: "/api/v1/services", - data: { - name: $("#service-name").val(), - description: $("#service-description").val() - }, - dataType: 'json', - context: $("#service-list"), - success: function(data){ - $("#add-service-modal").dialog('close'); - createServiceRow(data, false); - }, - error: function(evt){ - $("#add-service-modal").dialog('close'); - stashboard.error("Could not create service. Make sure Name and Description are valid"); - } - }); - - }, - 'Cancel': function(){ - $(this).dialog('close'); - } - } - }); -}; - -stashboard.fillService = function(serviceName, isAdmin, start_date, end_date) { - var createRow = function(data) { - var d = new Date(data.timestamp); - var time = $.datepicker.formatDate("MM d, ", d); - var hour; - var period; - - if (d.getHours() < 12) { - if (d.getHours() === 0) { - hour = 12; - } else { - hour = d.getHours(); - } - period = "AM"; - } else if (d.getHours() == 12){ - hour = d.getHours(); - period = "PM"; - } else { - hour = d.getHours() - 12; - period = "PM"; - } - - if (d.getMinutes() < 10) { - time += hour + ":0" + d.getMinutes() + period; - } else { - time += hour + ":" + d.getMinutes() + period; - } - - var tr = $(''); - - $('', {text: time}).appendTo(tr); - - if (data.informational) { - image = "/images/status/information.png"; - } else { - image = data.status.image; - } - - $('', {"class": "status highlight"}).append( - $('', { - src: image, - alt: data.status.name - }) - ).appendTo(tr); - - $('', {text: data.message}).appendTo(tr); - - if (isAdmin) { - - $('', {"class": "delete"}).append( - $('', {href: data.url}).append( - $('', { - src: "/images/status/minus-circle.png", - alt: "Delete" - }) - ) - ).appendTo(tr); - - } - - return tr; - }; - - - $.ajax({ - type: "GET", - url: "/api/v1/services/" + serviceName, - dataType: "json", - success: function(service){ - - $("h2 span").text(service.name); - $("#serviceDescription").text(service.description); - - var populatStatuses = function(current) { - - $.ajax({ - type: "GET", - url: "/api/v1/statuses", - dataType: "json", - context: $("#statusValue"), - success: function(data){ - - var statuses = data.statuses; - - for (var i=0; i < statuses.length; i++) { - - var selected = false; - if (current === statuses[i].name){ - selected = true; - } - $(" - {% url MyPageHandler implicit_args=False %} - {% url MyPageHandler "calendar" %} - {% url MyPageHandler "jsmith","calendar" %} - """ - args = [arg.resolve(context) for arg in self.args] - try: - app = webapp.WSGIApplication.active_instance - handler = app.get_registered_handler_by_name(self.view_name) - return handler.get_url(implicit_args=True, *args) - except webapp.NoUrlFoundError: - return '' diff --git a/views/default/404.html b/views/default/404.html deleted file mode 100644 index 5d845d27..00000000 --- a/views/default/404.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "base.html" %} - -{% block content %} - -
    -

    Sorry, I couldn't find that page.

    -

    - Cheer up, I am sure you will find another one like it somewhere -

    -

    - -{% endblock %} \ No newline at end of file diff --git a/views/default/_legend.html b/views/default/_legend.html deleted file mode 100644 index 71cd6e35..00000000 --- a/views/default/_legend.html +++ /dev/null @@ -1,63 +0,0 @@ -
    -

    Legend

    - - {% if user_is_admin %} - - - - - - - - - - {% endif %} - - - -
    DescriptionLevelEditDelete
    - - {% if user_is_admin %} -
    Add New Status - -
    - - - - - - - - {% for image_row in common_statuses %} -
    - {% for image in image_row %} - - - - {% endfor %} -
    - - {% endfor %} - - - -
    - -
    -

    Are you sure you want to delete this status? ALL EVENTS with this status will also be deleted

    -
    - - {% endif %} - - -
    diff --git a/views/default/base.html b/views/default/base.html deleted file mode 100644 index 23d90e6e..00000000 --- a/views/default/base.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - {{ title }} - - - - - - - - - {% block js %} - {% endblock %} - - -
    - -
    - {% block content %} - - {% endblock %} -
    -
    -
    - - {% block js_end %} - {% endblock %} - - - diff --git a/views/default/credentials.html b/views/default/credentials.html deleted file mode 100644 index ce94ebc9..00000000 --- a/views/default/credentials.html +++ /dev/null @@ -1,56 +0,0 @@ -{% extends "documentation.html" %} -{% block document %} -
    -

    API Credentials

    - - {% if logged_in %} - - {% if user_is_authorized %} - - - - - - - - - - - - - - - - -
    Consumer Key:{{ consumer_key }}
    OAuth Token:{{ profile.token }}
    OAuth Token Secret:{{ profile.secret }}
    - - {% else %} - - {% if oauth_url %} - -
    - Before we can get your API credential, you will need to - authorize your account with StashBoard -
    - - {% else %} - -
    - Sorry, but the authorization service could not be reached -
    - - {% endif %} - - {% endif %} - - {% else %} - -
    - Only site administrators are eligible for API Credentials -
    - - {% endif %} - -
    - -{% endblock %} diff --git a/views/default/documentation.html b/views/default/documentation.html deleted file mode 100644 index 58cd02f7..00000000 --- a/views/default/documentation.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "base.html" %} - -{% block content %} - -
    - - - -
    - - {% block document %} - - {% endblock %} - -
    - - - -
    - -{% endblock %} \ No newline at end of file diff --git a/views/default/index.html b/views/default/index.html deleted file mode 100644 index 6f2c49ce..00000000 --- a/views/default/index.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "base.html" %} - -{% block js_end %} - -{% endblock %} - -{% block content %} - -
    - - - - - - - - - - -
    ServiceCurrent
    - - {% if user_is_admin %} - Add New Service - {% endif %} - - {% include "_legend.html" %} - -
    - - {% if user_is_admin %} - -
    - - - - -
    - - {% endif %} - - -{% endblock %} - diff --git a/views/default/service.html b/views/default/service.html deleted file mode 100644 index 1f27ddc2..00000000 --- a/views/default/service.html +++ /dev/null @@ -1,106 +0,0 @@ -{% extends "base.html" %} - -{% block js_end %} - -{% endblock %} - -{% block content %} - -
    - - {% if user_is_admin %} - - Update Status - - - Add Note - - - - {% endif %} - -

    - -

    - - {% if start_date %} -

    - {{ start_date|date:"n/j/Y" }} -

    - {% endif %} - - - - - - - - {% if user_is_admin %} - - {% endif %} - - - - -
    TimeStatusMessageDelete
    - - {% if user_is_admin %} - - Delete Service - - - Edit Service - - {% endif %} - - -
    - - {% if user_is_admin %} - -
    -

    Are you sure you want to delete this service?

    -
    - -
    - - -
    - -
    - - - - -
    - -
    - - - - -
    - - {% endif %} - -{% endblock %} -