diff --git a/v8/random_post/README.md b/v8/random_post/README.md new file mode 100644 index 00000000..4a2d1fae --- /dev/null +++ b/v8/random_post/README.md @@ -0,0 +1 @@ +Used to jump to a random post when hitting /random/ url. diff --git a/v8/random_post/conf.py.sample b/v8/random_post/conf.py.sample new file mode 100644 index 00000000..93dcf721 --- /dev/null +++ b/v8/random_post/conf.py.sample @@ -0,0 +1,8 @@ +# Navigation link to call the "random_post()" Javascript function +NAVIGATION_LINKS = { + DEFAULT_LANG: ( + # ... + ('/random/', 'Random'), + # ... + ), +} diff --git a/v8/random_post/random_post.plugin b/v8/random_post/random_post.plugin new file mode 100644 index 00000000..1c69dbfb --- /dev/null +++ b/v8/random_post/random_post.plugin @@ -0,0 +1,14 @@ +[Core] +Name = random_post +Module = random_post + +[Nikola] +MinVersion = 6.0.0 +MaxVersion = 8.3.1 +PluginCategory = Task + +[Documentation] +Author = Manuel Kaufmann +Version = 0.2 +Website = http://plugins.getnikola.com/#random_post +Description = Show a random post diff --git a/v8/random_post/random_post.py b/v8/random_post/random_post.py new file mode 100644 index 00000000..a7e03a06 --- /dev/null +++ b/v8/random_post/random_post.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- + +# Copyright © 2014 Manuel Kaufmann + +# 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 json + +from nikola.plugin_categories import Task +from nikola import utils + + +class Plugin(Task): + + name = "random_post" + + def gen_tasks(self): + urls = [post.permalink() for post in self.site.posts] + kw = { + 'files_folders': self.site.config['FILES_FOLDERS'], + 'output_folder': self.site.config['OUTPUT_FOLDER'], + } + + output_filename = os.path.join( + kw['output_folder'], + 'assets/js/posts.json', + ) + output_index = os.path.join( + kw['output_folder'], + 'random/index.html' + ) + + # Yield a task for Doit + yield { + 'basename': 'random_post', + 'targets': (output_filename, output_index), + 'actions': [ + (create_json, (output_filename, urls)), + (create_index, (output_index, )), + ], + 'uptodate': [utils.config_changed({1: kw, 2: self.site.timeline})], + } + + +def create_json(output, urls): + utils.makedirs(os.path.dirname(output)) + with open(output, 'w') as fh: + fh.write(json.dumps(urls)) + + +HTML_CONTENT = ''' + + + +Redirecting... + + + + + + + +''' + + +def create_index(output): + utils.makedirs(os.path.dirname(output)) + with open(output, 'w') as fh: + fh.write(HTML_CONTENT) diff --git a/v8/random_post/requirements.txt b/v8/random_post/requirements.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/v8/random_post/requirements.txt @@ -0,0 +1 @@ +