diff --git a/en/_exts/configurationblock.py b/en/_exts/configurationblock.py new file mode 100644 index 000000000..36ca61f5b --- /dev/null +++ b/en/_exts/configurationblock.py @@ -0,0 +1,93 @@ +#Copyright (c) 2010 Fabien Potencier +# +#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 docutils.parsers.rst import Directive, directives +from docutils import nodes +from string import upper + +class configurationblock(nodes.General, nodes.Element): + pass + +class ConfigurationBlock(Directive): + has_content = True + required_arguments = 0 + optional_arguments = 0 + final_argument_whitespace = True + option_spec = {} + formats = { + 'html': 'HTML', + 'xml': 'XML', + 'php': 'PHP', + 'yaml': 'YAML', + 'jinja': 'Twig', + 'html+jinja': 'Twig', + 'jinja+html': 'Twig', + 'php+html': 'PHP', + 'html+php': 'PHP', + 'ini': 'INI', + 'php-annotations': 'Annotations', + } + + def run(self): + env = self.state.document.settings.env + + node = nodes.Element() + node.document = self.state.document + self.state.nested_parse(self.content, self.content_offset, node) + + entries = [] + for i, child in enumerate(node): + if isinstance(child, nodes.literal_block): + # add a title (the language name) before each block + #targetid = "configuration-block-%d" % env.new_serialno('configuration-block') + #targetnode = nodes.target('', '', ids=[targetid]) + #targetnode.append(child) + + innernode = nodes.emphasis(self.formats[child['language']], self.formats[child['language']]) + + para = nodes.paragraph() + para += [innernode, child] + + entry = nodes.list_item('') + entry.append(para) + entries.append(entry) + + resultnode = configurationblock() + resultnode.append(nodes.bullet_list('', *entries)) + + return [resultnode] + +def visit_configurationblock_html(self, node): + self.body.append(self.starttag(node, 'div', CLASS='configuration-block')) + +def depart_configurationblock_html(self, node): + self.body.append('\n') + +def visit_configurationblock_latex(self, node): + pass + +def depart_configurationblock_latex(self, node): + pass + +def setup(app): + app.add_node(configurationblock, + html=(visit_configurationblock_html, depart_configurationblock_html), + latex=(visit_configurationblock_latex, depart_configurationblock_latex)) + app.add_directive('configuration-block', ConfigurationBlock) diff --git a/en/_exts/configurationblock.pyc b/en/_exts/configurationblock.pyc new file mode 100644 index 000000000..bd1959c3a Binary files /dev/null and b/en/_exts/configurationblock.pyc differ diff --git a/en/_static/configurationblock.css b/en/_static/configurationblock.css new file mode 100644 index 000000000..447d29631 --- /dev/null +++ b/en/_static/configurationblock.css @@ -0,0 +1,93 @@ +ul.simple +{ + padding: 5px 0 0 0; +} + +ul.simple li +{ + margin: 0; + margin-right: 5px; + display: inline; +} + +div.configuration-block em +{ + margin-bottom: 10px; +} + +div.configuration-block li +{ + padding: 5px; +} + +div.configuration-block em +{ + font-style: normal; + font-size: 90%; +} + +div.jsactive +{ + position: relative; +} + +div.jsactive ul +{ + list-style: none; +} + +div.jsactive li +{ + float: left; + list-style: none; + margin-left: 0; + -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; + background-color: #ddd; + margin-right: 5px; +} + +div.jsactive .selected +{ + background-color: #000; +} + +div.jsactive .selected a +{ + color: #fff; + text-decoration: none; +} + +div.jsactive .selected a:hover +{ + color: #fff; + text-decoration: underline; +} + +div.jsactive a +{ + color: #000; + text-decoration: none; +} + +div.jsactive a:hover +{ + color: #000; + text-decoration: underline; +} + +div.jsactive div +{ + position: absolute; + top: 30px; + left: 0; +} + +div.jsactive div div +{ + position: static; +} + +div.jsactive pre +{ + margin: 0; +} diff --git a/en/_static/configurationblock.js b/en/_static/configurationblock.js new file mode 100644 index 000000000..0f708a1a8 --- /dev/null +++ b/en/_static/configurationblock.js @@ -0,0 +1,34 @@ +$(document).ready(function(){ + $('div.configuration-block [class^=highlight-]').hide(); + $('div.configuration-block [class^=highlight-]').width($('div.configuration-block').width()); + + $('div.configuration-block').addClass('jsactive'); + $('div.configuration-block').addClass('clearfix'); + + $('div.configuration-block').each(function (){ + var el = $('[class^=highlight-]:first', $(this)); + el.show(); + el.parents('ul').height(el.height() + 40); + }); + + // Global + $('div.configuration-block li').each(function(){ + var str = $(':first', $(this)).html(); + $(':first ', $(this)).html(''); + $(':first ', $(this)).append('' + str + '') + $(':first', $(this)).bind('click', function(){ + $('[class^=highlight-]', $(this).parents('ul')).hide(); + $('li', $(this).parents('ul')).removeClass('selected'); + $(this).parent().addClass('selected'); + + var block = $('[class^=highlight-]', $(this).parent('li')); + block.show(); + block.parents('ul').height(block.height() + 40); + return false; + }); + }); + + $('div.configuration-block').each(function (){ + $('li:first', $(this)).addClass('selected'); + }); +}); diff --git a/en/_templates/layout.html b/en/_templates/layout.html index 79878cee5..447c36b64 100644 --- a/en/_templates/layout.html +++ b/en/_templates/layout.html @@ -104,6 +104,7 @@