aboutsummaryrefslogtreecommitdiffstats
path: root/extra_plugins
diff options
context:
space:
mode:
Diffstat (limited to 'extra_plugins')
-rw-r--r--extra_plugins/README.txt62
-rw-r--r--extra_plugins/command_planetoid.plugin9
-rw-r--r--extra_plugins/command_planetoid/__init__.py248
-rw-r--r--extra_plugins/command_planetoid/index.tmpl26
-rw-r--r--extra_plugins/command_planetoid/post.tmpl10
-rw-r--r--extra_plugins/compile_ipynb.plugin10
-rw-r--r--extra_plugins/compile_ipynb/README.txt35
-rw-r--r--extra_plugins/compile_ipynb/__init__.py98
-rw-r--r--extra_plugins/task_localsearch.plugin10
-rw-r--r--extra_plugins/task_localsearch/MIT-LICENSE.txt20
-rw-r--r--extra_plugins/task_localsearch/__init__.py94
-rw-r--r--extra_plugins/task_localsearch/files/assets/css/loader.gifbin4178 -> 0 bytes
-rw-r--r--extra_plugins/task_localsearch/files/assets/css/search.gifbin208 -> 0 bytes
-rwxr-xr-xextra_plugins/task_localsearch/files/assets/css/tipuesearch.css182
-rw-r--r--extra_plugins/task_localsearch/files/assets/js/tipuesearch.js367
-rw-r--r--extra_plugins/task_localsearch/files/assets/js/tipuesearch_set.js28
-rw-r--r--extra_plugins/task_mustache.plugin10
-rw-r--r--extra_plugins/task_mustache/__init__.py189
-rw-r--r--extra_plugins/task_mustache/mustache-template.html29
-rw-r--r--extra_plugins/task_mustache/mustache.html36
20 files changed, 0 insertions, 1463 deletions
diff --git a/extra_plugins/README.txt b/extra_plugins/README.txt
deleted file mode 100644
index 2a04614..0000000
--- a/extra_plugins/README.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-Extra Plugins
-=============
-
-These are plugins that may not be widely used or that are a bit too radical or
-experimental for the general public.
-
-To enable them for you, create a ``plugins/`` folder in your site, and copy
-both the ``.plugin`` file and the matching ``.py`` file or folder.
-
-Planetoid
----------
-
-This plugin converts Nikola into the equivalent of `Planet <http://www.planetplanet.org/>`_
-a feed aggregator. It requires `PeeWee <https://github.com/coleifer/peewee>`_ and
-`Feedparser <http://code.google.com/p/feedparser/>`_ to work.
-
-It has a configuration option: PLANETOID_REFRESH which is the number of minutes
-before retrying a feed (defaults to 60).
-
-You need to create a ``feeds`` file containing the data of which feeds you want to
-aggregate. The format is very simple::
-
- # Roberto Alsina
- http://feeds2.feedburner.com/PostsInLateralOpinionAboutPython
- Roberto Alsina
-
-#. Lines that start with ``#`` are comments and ignored.
-#. Lines that start with http are feed URLs.
-#. URL lines have to be followed by the "real name" of the feed.
-
-FIXME: explain the planetoid theme stuff
-
-After all that is in place, just run ``nikola build`` and you'll get
-a planet.
-
-Local Search
-------------
-
-If you don't want to depend on google or duckduckgo to implement search for you,
-or just want it to wok even if you are offline, enable this plugin and the
-search will be performed client side.
-
-This plugin implements a Tipue-based local search for your site.
-
-To use it, copy task_localsearch.plugin and task_localsearch
-into a plugins/ folder in your nikola site.
-
-After you build your site, you will have several new files in assets/css and assets/js
-and a search.html that you can use as a basis for using this in your site.
-
-For more information about how to customize it and use it, please refer to the tipue
-docs at http://www.tipue.com/search/
-
-Tipue is under an MIT license (see MIT-LICENSE.txt)
-
-
-Mustache
---------
-
-This task gives you a ``mustache.html`` file which lets you access your whole
-blog without reloading the page, using client-side templates. Makes it much
-faster and modern ;-)
diff --git a/extra_plugins/command_planetoid.plugin b/extra_plugins/command_planetoid.plugin
deleted file mode 100644
index 8636d49..0000000
--- a/extra_plugins/command_planetoid.plugin
+++ /dev/null
@@ -1,9 +0,0 @@
-[Core]
-Name = planetoid
-Module = command_planetoid
-
-[Documentation]
-Author = Roberto Alsina
-Version = 0.1
-Website = http://nikola.ralsina.com.ar
-Description = Maintain a planet-like site
diff --git a/extra_plugins/command_planetoid/__init__.py b/extra_plugins/command_planetoid/__init__.py
deleted file mode 100644
index 2428f10..0000000
--- a/extra_plugins/command_planetoid/__init__.py
+++ /dev/null
@@ -1,248 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2012 Roberto Alsina y otros.
-
-# 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 __future__ import print_function, unicode_literals
-import codecs
-import datetime
-import hashlib
-from optparse import OptionParser
-import os
-
-from doit.tools import timeout
-import feedparser
-import peewee
-
-from nikola.plugin_categories import Command, Task
-from nikola.utils import config_changed
-
-
-class Feed(peewee.Model):
- name = peewee.CharField()
- url = peewee.CharField(max_length=200)
- last_status = peewee.CharField(null=True)
- etag = peewee.CharField(max_length=200)
- last_modified = peewee.DateTimeField()
-
-
-class Entry(peewee.Model):
- date = peewee.DateTimeField()
- feed = peewee.ForeignKeyField(Feed)
- content = peewee.TextField(max_length=20000)
- link = peewee.CharField(max_length=200)
- title = peewee.CharField(max_length=200)
- guid = peewee.CharField(max_length=200)
-
-
-class Planetoid(Command, Task):
- """Maintain a planet-like thing."""
- name = "planetoid"
-
- def init_db(self):
- # setup database
- Feed.create_table(fail_silently=True)
- Entry.create_table(fail_silently=True)
-
- def gen_tasks(self):
- self.init_db()
- for task in self.task_load_feeds():
- yield task
- for task in self.task_update_feeds():
- yield task
- for task in self.task_generate_posts():
- yield task
-
- def run(self, *args):
- self.init_db()
- parser = OptionParser(usage="nikola %s [options]" % self.name)
- (options, args) = parser.parse_args(list(args))
-
- def task_load_feeds(self):
- "Read the feeds file, add it to the database."
- feeds = []
- feed = name = None
- for line in codecs.open('feeds', 'r', 'utf-8'):
- line = line.strip()
- if line.startswith("#"):
- continue
- elif line.startswith('http'):
- feed = line
- elif line:
- name = line
- if feed and name:
- feeds.append([feed, name])
- feed = name = None
-
- def add_feed(name, url):
- f = Feed.create(
- name=name,
- url=url,
- etag='foo',
- last_modified=datetime.datetime(1970, 1, 1),
- )
- f.save()
-
- def update_feed_url(feed, url):
- feed.url = url
- feed.save()
-
- for feed, name in feeds:
- f = Feed.select().where(Feed.name == name)
- if not list(f):
- yield {
- 'basename': self.name,
- 'name': name.encode('utf8'),
- 'actions': ((add_feed, (name, feed)), ),
- 'file_dep': ['feeds'],
- }
- elif list(f)[0].url != feed:
- yield {
- 'basename': self.name,
- 'name': ('updating_' + name).encode('utf8'),
- 'actions': ((update_feed_url, (list(f)[0], feed)), ),
- }
-
- def task_update_feeds(self):
- """Download feed contents, add entries to the database."""
- def update_feed(feed):
- modified = feed.last_modified.timetuple()
- etag = feed.etag
- try:
- parsed = feedparser.parse(
- feed.url,
- etag=etag,
- modified=modified
- )
- feed.last_status = str(parsed.status)
- except: # Probably a timeout
- # TODO: log failure
- return
- if parsed.feed.get('title'):
- print(parsed.feed.title)
- else:
- print(feed.url)
- feed.etag = parsed.get('etag', 'foo')
- modified = tuple(parsed.get('date_parsed', (1970, 1, 1)))[:6]
- print("==========>", modified)
- modified = datetime.datetime(*modified)
- feed.last_modified = modified
- feed.save()
- # No point in adding items from missinfg feeds
- if parsed.status > 400:
- # TODO log failure
- return
- for entry_data in parsed.entries:
- print("=========================================")
- date = entry_data.get('published_parsed', None)
- if date is None:
- date = entry_data.get('updated_parsed', None)
- if date is None:
- print("Can't parse date from:")
- print(entry_data)
- return False
- print("DATE:===>", date)
- date = datetime.datetime(*(date[:6]))
- title = "%s: %s" % (feed.name, entry_data.get('title', 'Sin título'))
- content = entry_data.get('content', None)
- if content:
- content = content[0].value
- if not content:
- content = entry_data.get('description', None)
- if not content:
- content = entry_data.get('summary', 'Sin contenido')
- guid = str(entry_data.get('guid', entry_data.link))
- link = entry_data.link
- print(repr([date, title]))
- e = list(Entry.select().where(Entry.guid == guid))
- print(
- repr(dict(
- date=date,
- title=title,
- content=content,
- guid=guid,
- feed=feed,
- link=link,
- ))
- )
- if not e:
- entry = Entry.create(
- date=date,
- title=title,
- content=content,
- guid=guid,
- feed=feed,
- link=link,
- )
- else:
- entry = e[0]
- entry.date = date
- entry.title = title
- entry.content = content
- entry.link = link
- entry.save()
- for feed in Feed.select():
- task = {
- 'basename': self.name,
- 'name': str(feed.url),
- 'actions': [(update_feed, (feed, ))],
- 'uptodate': [timeout(datetime.timedelta(minutes=
- self.site.config.get('PLANETOID_REFRESH', 60)))],
- }
- yield task
-
- def task_generate_posts(self):
- """Generate post files for the blog entries."""
- def gen_id(entry):
- h = hashlib.md5()
- h.update(entry.feed.name.encode('utf8'))
- h.update(entry.guid)
- return h.hexdigest()
-
- def generate_post(entry):
- unique_id = gen_id(entry)
- meta_path = os.path.join('posts', unique_id + '.meta')
- post_path = os.path.join('posts', unique_id + '.txt')
- with codecs.open(meta_path, 'wb+', 'utf8') as fd:
- fd.write('%s\n' % entry.title.replace('\n', ' '))
- fd.write('%s\n' % unique_id)
- fd.write('%s\n' % entry.date.strftime('%Y/%m/%d %H:%M'))
- fd.write('\n')
- fd.write('%s\n' % entry.link)
- with codecs.open(post_path, 'wb+', 'utf8') as fd:
- fd.write('.. raw:: html\n\n')
- content = entry.content
- if not content:
- content = 'Sin contenido'
- for line in content.splitlines():
- fd.write(' %s\n' % line)
-
- for entry in Entry.select().order_by(Entry.date.desc()):
- entry_id = gen_id(entry)
- yield {
- 'basename': self.name,
- 'targets': [os.path.join('posts', entry_id + '.meta'), os.path.join('posts', entry_id + '.txt')],
- 'name': entry_id,
- 'actions': [(generate_post, (entry,))],
- 'uptodate': [config_changed({1: entry})]
- }
diff --git a/extra_plugins/command_planetoid/index.tmpl b/extra_plugins/command_planetoid/index.tmpl
deleted file mode 100644
index da9ff5d..0000000
--- a/extra_plugins/command_planetoid/index.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-## -*- coding: utf-8 -*-
-<%inherit file="base.tmpl"/>
-<%block name="content">
- % for post in posts:
- <div style="border: 2px solid darkgrey; margin-bottom: 12px; border-radius: 4px; padding:12px; overflow: auto;">
- <a href="${post.link}"><h1>${post.title(lang)}</a>
- <small>&nbsp;&nbsp;
- Publicado: ${post.date}
- </small></h1>
- ${post.text(lang)}
- </div>
- % endfor
- <div>
-<ul class="pager">
- %if prevlink:
- <li class="previous">
- <a href="${prevlink}">&larr; Posts posteriores</a>
- </li>
- %endif
- %if nextlink:
- <li class="next">
- <a href="${nextlink}">Posts anteriores &rarr;</a>
- </li>
- %endif
-</ul>
-</%block>
diff --git a/extra_plugins/command_planetoid/post.tmpl b/extra_plugins/command_planetoid/post.tmpl
deleted file mode 100644
index 2c4c220..0000000
--- a/extra_plugins/command_planetoid/post.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-## -*- coding: utf-8 -*-
-<html>
-<body>
-<script type="text/javascript">
-<!--
-window.location = "${post.link}"
-//-->
-</script>
-Redirecting you to <a href="${post.link}">the original location.</a>
-</body> \ No newline at end of file
diff --git a/extra_plugins/compile_ipynb.plugin b/extra_plugins/compile_ipynb.plugin
deleted file mode 100644
index 51051e0..0000000
--- a/extra_plugins/compile_ipynb.plugin
+++ /dev/null
@@ -1,10 +0,0 @@
-[Core]
-Name = ipynb
-Module = compile_ipynb
-
-[Documentation]
-Author = Damián Avila
-Version = 0.1
-Website = http://www.oquanta.info
-Description = Compile IPython notebooks into HTML
-
diff --git a/extra_plugins/compile_ipynb/README.txt b/extra_plugins/compile_ipynb/README.txt
deleted file mode 100644
index 2cfd45e..0000000
--- a/extra_plugins/compile_ipynb/README.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-To make this work...
-
-1- First, you have to put this plugin in your_site/plugins/ folder.
-
-2- Then, you have to download the custom nbconvert from here: https://github.com/damianavila/compile_ipynb-for-Nikola.git
-and put it inside your_site/plugins/compile_ipynb/ folder
-
-3- Also, you have to use the site-ipython theme (or make a new one containing the ipython css, mathjax.js and the proper template).
-You can get it here: https://github.com/damianavila/site-ipython-theme-for-Nikola
-
-4- Finally, you have to put:
-
-post_pages = (
- ("posts/*.ipynb", "posts", "post.tmpl", True),
- ("stories/*.ipynb", "stories", "story.tmpl", False),
-)
-
-in your conf.py
-
-Then... to use it:
-
-$nikola new_page -f ipynb
-
-**NOTE**: Just IGNORE the "-1" and "-2" options in nikola new_page command, by default this compiler
-create one metadata file and the corresponding naive IPython notebook.
-
-$nikola build
-
-And deploy the output folder... to see it locally: $nikola serve
-
-If you have any doubts, just ask: @damianavila
-
-Cheers.
-
-Damián
diff --git a/extra_plugins/compile_ipynb/__init__.py b/extra_plugins/compile_ipynb/__init__.py
deleted file mode 100644
index be83a84..0000000
--- a/extra_plugins/compile_ipynb/__init__.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (c) 2013 Damian Avila.
-
-# 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.
-
-"""Implementation of compile_html based on nbconvert."""
-
-from __future__ import unicode_literals, print_function
-import codecs
-import os
-
-try:
- from .nbformat import current as nbformat
- from .nbconvert.converters import bloggerhtml as nbconverter
- bloggerhtml = True
-except ImportError:
- bloggerhtml = None
-
-from nikola.plugin_categories import PageCompiler
-
-
-class CompileIPynb(PageCompiler):
- """Compile IPynb into HTML."""
-
- name = "ipynb"
-
- def compile_html(self, source, dest):
- if bloggerhtml is None:
- raise Exception('To build this site, you also need '
- 'https://github.com/damianavila/com'
- 'pile_ipynb-for-Nikola.git.')
- try:
- os.makedirs(os.path.dirname(dest))
- except:
- pass
- converter = nbconverter.ConverterBloggerHTML()
- with codecs.open(dest, "w+", "utf8") as out_file:
- with codecs.open(source, "r", "utf8") as in_file:
- data = in_file.read()
- converter.nb = nbformat.reads_json(data)
- output = converter.convert()
- out_file.write(output)
-
- def create_post(self, path, onefile=False, title="", slug="", date="",
- tags=""):
- d_name = os.path.dirname(path)
- if not os.path.isdir(d_name):
- os.makedirs(os.path.dirname(path))
- meta_path = os.path.join(d_name, slug + ".meta")
- with codecs.open(meta_path, "wb+", "utf8") as fd:
- if onefile:
- fd.write('%s\n' % title)
- fd.write('%s\n' % slug)
- fd.write('%s\n' % date)
- fd.write('%s\n' % tags)
- print("Your post's metadata is at: ", meta_path)
- with codecs.open(path, "wb+", "utf8") as fd:
- fd.write("""{
- "metadata": {
- "name": "%s"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
- {
- "cells": [
- {
- "cell_type": "code",
- "collapsed": false,
- "input": [],
- "language": "python",
- "metadata": {},
- "outputs": []
- }
- ],
- "metadata": {}
- }
- ]
-}""" % slug)
diff --git a/extra_plugins/task_localsearch.plugin b/extra_plugins/task_localsearch.plugin
deleted file mode 100644
index 33eb78b..0000000
--- a/extra_plugins/task_localsearch.plugin
+++ /dev/null
@@ -1,10 +0,0 @@
-[Core]
-Name = local_search
-Module = task_localsearch
-
-[Documentation]
-Author = Roberto Alsina
-Version = 0.1
-Website = http://nikola.ralsina.com.ar
-Description = Create data files for local search via Tipue
-
diff --git a/extra_plugins/task_localsearch/MIT-LICENSE.txt b/extra_plugins/task_localsearch/MIT-LICENSE.txt
deleted file mode 100644
index f131068..0000000
--- a/extra_plugins/task_localsearch/MIT-LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Tipue Search Copyright (c) 2012 Tipue
-
-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.
diff --git a/extra_plugins/task_localsearch/__init__.py b/extra_plugins/task_localsearch/__init__.py
deleted file mode 100644
index 9bb0a9e..0000000
--- a/extra_plugins/task_localsearch/__init__.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (c) 2012 Roberto Alsina y otros.
-
-# 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 json
-import os
-
-from nikola.plugin_categories import LateTask
-from nikola.utils import config_changed, copy_tree
-
-# This is what we need to produce:
-#var tipuesearch = {"pages": [
- #{"title": "Tipue Search, a jQuery site search engine", "text": "Tipue
- #Search is a site search engine jQuery plugin. It's free for both commercial and
- #non-commercial use and released under the MIT License. Tipue Search includes
- #features such as word stemming and word replacement.", "tags": "JavaScript",
- #"loc": "http://www.tipue.com/search"},
- #{"title": "Tipue Search demo", "text": "Tipue Search demo. Tipue Search is
- #a site search engine jQuery plugin.", "tags": "JavaScript", "loc":
- #"http://www.tipue.com/search/demo"},
- #{"title": "About Tipue", "text": "Tipue is a small web development/design
- #studio based in North London. We've been around for over a decade.", "tags": "",
- #"loc": "http://www.tipue.com/about"}
-#]};
-
-
-class Tipue(LateTask):
- """Render the blog posts as JSON data."""
-
- name = "local_search"
-
- def gen_tasks(self):
- self.site.scan_posts()
-
- kw = {
- "translations": self.site.config['TRANSLATIONS'],
- "output_folder": self.site.config['OUTPUT_FOLDER'],
- }
-
- posts = self.site.timeline[:]
- dst_path = os.path.join(kw["output_folder"], "assets", "js",
- "tipuesearch_content.json")
-
- def save_data():
- pages = []
- for lang in kw["translations"]:
- for post in posts:
- data = {}
- data["title"] = post.title(lang)
- data["text"] = post.text(lang)
- data["tags"] = ",".join(post.tags)
- data["loc"] = post.permalink(lang)
- pages.append(data)
- output = json.dumps({"pages": pages}, indent=2)
- try:
- os.makedirs(os.path.dirname(dst_path))
- except:
- pass
- with open(dst_path, "wb+") as fd:
- fd.write(output)
-
- yield {
- "basename": str(self.name),
- "name": os.path.join("assets", "js", "tipuesearch_content.js"),
- "targets": [dst_path],
- "actions": [(save_data, [])],
- 'uptodate': [config_changed(kw)]
- }
-
- # Copy all the assets to the right places
- asset_folder = os.path.join(os.path.dirname(__file__), "files")
- for task in copy_tree(asset_folder, kw["output_folder"]):
- task["basename"] = str(self.name)
- yield task
diff --git a/extra_plugins/task_localsearch/files/assets/css/loader.gif b/extra_plugins/task_localsearch/files/assets/css/loader.gif
deleted file mode 100644
index 9c97738..0000000
--- a/extra_plugins/task_localsearch/files/assets/css/loader.gif
+++ /dev/null
Binary files differ
diff --git a/extra_plugins/task_localsearch/files/assets/css/search.gif b/extra_plugins/task_localsearch/files/assets/css/search.gif
deleted file mode 100644
index 644bd17..0000000
--- a/extra_plugins/task_localsearch/files/assets/css/search.gif
+++ /dev/null
Binary files differ
diff --git a/extra_plugins/task_localsearch/files/assets/css/tipuesearch.css b/extra_plugins/task_localsearch/files/assets/css/tipuesearch.css
deleted file mode 100755
index 144c97d..0000000
--- a/extra_plugins/task_localsearch/files/assets/css/tipuesearch.css
+++ /dev/null
@@ -1,182 +0,0 @@
-
-/*
-Tipue Search 2.0
-Copyright (c) 2012 Tipue
-Tipue Search is released under the MIT License
-http://www.tipue.com/search
-*/
-
-
-em
-{
- font: inherit;
- font-weight: 400;
-}
-#tipue_search_input
-{
- font: 13px/1.5 'open sans', sans-serif;
- color: #333;
- padding: 7px;
- margin: 0;
- width: 160px;
- border: 1px solid #d3d3d3;
- border-radius: 3px;
- -moz-appearance: none;
- -webkit-appearance: none;
- outline: none;
-}
-#tipue_search_input:focus
-{
- border-color: #c3c3c3;
- box-shadow: 0 0 3px rgba(0,0,0,.2);
-}
-#tipue_search_button
-{
- width: 60px;
- height: 33px;
- margin-top: 1px;
- border: 1px solid #dcdcdc;
- border-radius: 3px;
- background: #f1f1f1 url('search.gif') no-repeat center;
- outline: none;
-}
-#tipue_search_button:hover
-{
- border: 1px solid #c3c3c3;
- -moz-box-shadow: 1px 1px 2px #e3e3e3;
- -webkit-box-shadow: 1px 1px 2px #e3e3e3;
- box-shadow: 1px 1px 2px #e3e3e3;
-}
-
-#tipue_search_content
-{
- clear: left;
- width: 650px;
- padding: 25px 0 13px 0;
- margin: 0;
-}
-#tipue_search_loading
-{
- padding-top: 60px;
- background: #fff url('loader.gif') no-repeat left;
-}
-
-#tipue_search_warning_head
-{
- font: 14px/1.5 'open sans', sans-serif;
- color: #333;
-}
-#tipue_search_warning
-{
- font: 13px/1.5 'open sans', sans-serif;
- color: #333;
- font-weight: 300;
- margin: 13px 0;
-}
-#tipue_search_warning a
-{
- color: #36c;
- text-decoration: none;
-}
-#tipue_search_warning a:hover
-{
- padding-bottom: 1px;
- border-bottom: 1px solid #ccc;
-}
-
-#tipue_search_results_count
-{
- font: 13px/1.5 'open sans', sans-serif;
- color: #333;
- font-weight: 300;
-}
-
-#tipue_search_content_title
-{
- font: 16px/1.5 'open sans', sans-serif;
- color: #333;
- margin-top: 27px;
-}
-#tipue_search_content_title a
-{
- color: #36c;
- text-decoration: none;
-}
-#tipue_search_content_title a:hover
-{
- padding-bottom: 1px;
- border-bottom: 1px solid #ccc;
-}
-#tipue_search_content_text
-{
- font: 13px/1.5 'open sans', sans-serif;
- color: #333;
- font-weight: 300;
- line-height: 21px;
- padding: 9px 0;
-}
-#tipue_search_content_loc
-{
- font: 13px/1.5 'open sans', sans-serif;
- color: #333;
- font-weight: 300;
-}
-#tipue_search_content_loc a
-{
- color: #777;
- text-decoration: none;
-}
-#tipue_search_content_loc a:hover
-{
- padding-bottom: 1px;
- border-bottom: 1px solid #ccc;
-}
-
-#tipue_search_foot
-{
- margin: 43px 0 31px 0;
-}
-#tipue_search_foot_boxes
-{
- padding: 0;
- margin: 0;
- font: 12px/1 'open sans', sans-serif;
-}
-#tipue_search_foot_boxes li
-{
- list-style: none;
- margin: 0;
- padding: 0;
- display: inline;
-}
-#tipue_search_foot_boxes li a
-{
- padding: 7px 10px 8px 10px;
- background-color: #f5f5f5;
- background: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1);
- background: -moz-linear-gradient(top, #f7f7f7, #f1f1f1);
- background: -ms-linear-gradient(top, #f7f7f7, #f1f1f1);
- background: -o-linear-gradient(top, #f7f7f7, #f1f1f1);
- background: linear-gradient(top, #f7f7f7, #f1f1f1);
- border: 1px solid #dcdcdc;
- border-radius: 3px;
- color: #333;
- margin-right: 7px;
- text-decoration: none;
- text-align: center;
-}
-#tipue_search_foot_boxes li.current
-{
- padding: 7px 10px 8px 10px;
- background: #fff;
- border: 1px solid #dcdcdc;
- border-radius: 3px;
- color: #333;
- margin-right: 7px;
- text-align: center;
-}
-#tipue_search_foot_boxes li a:hover
-{
- border: 1px solid #c3c3c3;
- box-shadow: 1px 1px 2px #e3e3e3;
-}
diff --git a/extra_plugins/task_localsearch/files/assets/js/tipuesearch.js b/extra_plugins/task_localsearch/files/assets/js/tipuesearch.js
deleted file mode 100644
index 9a8d58e..0000000
--- a/extra_plugins/task_localsearch/files/assets/js/tipuesearch.js
+++ /dev/null
@@ -1,367 +0,0 @@
-
-/*
-Tipue Search 2.0
-Copyright (c) 2012 Tipue
-Tipue Search is released under the MIT License
-http://www.tipue.com/search
-*/
-
-
-(function($) {
-
- $.fn.tipuesearch = function(options) {
-
- var set = $.extend( {
-
- 'show' : 7,
- 'newWindow' : false,
- 'showURL' : true,
- 'minimumLength' : 3,
- 'descriptiveWords' : 25,
- 'highlightTerms' : true,
- 'highlightEveryTerm' : false,
- 'mode' : 'static',
- 'contentLocation' : 'tipuesearch/tipuesearch_content.json'
-
- }, options);
-
- return this.each(function() {
-
- var tipuesearch_in = {
- pages: []
- };
- $.ajaxSetup({
- async: false
- });
-
- if (set.mode == 'live')
- {
- for (var i = 0; i < tipuesearch_pages.length; i++)
- {
- $.get(tipuesearch_pages[i], '',
- function (html)
- {
- var cont = $('*', html).text();
- cont = cont.replace(/\s+/g, ' ');
-
- var t_1 = html.toLowerCase().indexOf('<title>');
- var t_2 = html.toLowerCase().indexOf('</title>', t_1 + 7);
- if (t_1 != -1 && t_2 != -1)
- {
- var tit = html.slice(t_1 + 7, t_2);
- }
- else
- {
- var tit = 'No title';
- }
- var t_1 = html.toLowerCase().indexOf('<meta name="description"');
- var t_2 = html.toLowerCase().indexOf('"', t_1 + 34);
- if (t_1 != -1 && t_2 != -1)
- {
- var desc = html.slice(t_1 + 34, t_2);
- }
- else
- {
- var desc = cont;
- }
-
- tipuesearch_in.pages.push({
- "title": tit,
- "text": desc,
- "tags": cont,
- "loc": tipuesearch_pages[i]
- });
- }
- );
- }
- }
-
- if (set.mode == 'json')
- {
- $.getJSON(set.contentLocation,
- function(json)
- {
- tipuesearch_in = $.extend({}, json);
- }
- );
- }
-
- if (set.mode == 'static')
- {
- tipuesearch_in = $.extend({}, tipuesearch);
- }
-
- var tipue_search_w = '';
- if (set.newWindow)
- {
- tipue_search_w = ' target="_blank"';
- }
-
- function getURLP(name)
- {
- return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20')) || null;
- }
- if (getURLP('q'))
- {
- $('#tipue_search_input').val(getURLP('q'));
- getTipueSearch(0, true);
- }
-
- $('#tipue_search_button').click(function()
- {
- getTipueSearch(0, true);
- });
- $(this).keyup(function(event)
- {
- if(event.keyCode == '13')
- {
- getTipueSearch(0, true);
- }
- });
-
- function getTipueSearch(start, replace)
- {
- $('#tipue_search_content').hide();
- var out = '';
- var results = '';
- var show_replace = false;
- var show_stop = false;
-
- var d = $('#tipue_search_input').val().toLowerCase();
- d = $.trim(d);
- var d_w = d.split(' ');
-
- if (d.length >= set.minimumLength)
- {
- if (replace)
- {
- var d_r = d;
- for (var i = 0; i < d_w.length; i++)
- {
- for (var f = 0; f < tipuesearch_replace.words.length; f++)
- {
- if (d_w[i] == tipuesearch_replace.words[f].word)
- {
- d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with);
- show_replace = true;
- }
- }
- }
- d_w = d.split(' ');
- }
-
- var d_t = d;
- for (var i = 0; i < d_w.length; i++)
- {
- for (var f = 0; f < tipuesearch_stem.words.length; f++)
- {
- if (d_w[i] == tipuesearch_stem.words[f].word)
- {
- d_t = d_t + ' ' + tipuesearch_stem.words[f].stem;
- }
- }
- }
- d_w = d_t.split(' ');
-
- var c = 0;
- found = new Array();
- for (var i = 0; i < tipuesearch_in.pages.length; i++)
- {
- var score = 10000000;
- var s_t = tipuesearch_in.pages[i].text;
- for (var f = 0; f < d_w.length; f++)
- {
- var pat = new RegExp(d_w[f], 'i');
- if (tipuesearch_in.pages[i].title.search(pat) != -1)
- {
- score -= (2000 - i);
- }
- if (tipuesearch_in.pages[i].text.search(pat) != -1)
- {
- score -= (1500 - i);
- }
-
- if (set.highlightTerms)
- {
- if (set.highlightEveryTerm)
- {
- var patr = new RegExp('(' + d_w[f] + ')', 'gi');
- }
- else
- {
- var patr = new RegExp('(' + d_w[f] + ')', 'i');
- }
- s_t = s_t.replace(patr, "<em>$1</em>");
- }
-
- if (tipuesearch_in.pages[i].tags.search(pat) != -1)
- {
- score -= (1000 - i);
- }
- }
- if (score < 10000000)
- {
- found[c++] = score + '^' + tipuesearch_in.pages[i].title + '^' + s_t + '^' + tipuesearch_in.pages[i].loc;
- }
- }
-
- if (c != 0)
- {
- if (show_replace == 1)
- {
- out += '<div id="tipue_search_warning_head">Showing results for ' + d + '</div>';
- out += '<div id="tipue_search_warning">Show results for <a href="javascript:void(0)" id="tipue_search_replaced">' + d_r + '</a></div>';
- }
- if (c == 1)
- {
- out += '<div id="tipue_search_results_count">1 result</div>';
- }
- else
- {
- c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
- out += '<div id="tipue_search_results_count">' + c_c + ' results</div>';
- }
-
- found.sort();
- var l_o = 0;
- for (var i = 0; i < found.length; i++)
- {
- var fo = found[i].split('^');
- if (l_o >= start && l_o < set.show + start)
- {
- out += '<div id="tipue_search_content_title"><a href="' + fo[3] + '"' + tipue_search_w + '>' + fo[1] + '</a></div>';
-
- var t = fo[2];
- var t_d = '';
- var t_w = t.split(' ');
- if (t_w.length < set.descriptiveWords)
- {
- t_d = t;
- }
- else
- {
- for (var f = 0; f < set.descriptiveWords; f++)
- {
- t_d += t_w[f] + ' ';
- }
- }
- t_d = $.trim(t_d);
- if (t_d.charAt(t_d.length - 1) != '.')
- {
- t_d += ' ...';
- }
- out += '<div id="tipue_search_content_text">' + t_d + '</div>';
-
- if (set.showURL)
- {
- out += '<div id="tipue_search_content_loc"><a href="' + fo[3] + '"' + tipue_search_w + '>' + fo[3] + '</a></div>';
- }
- }
- l_o++;
- }
-
- if (c > set.show)
- {
- var pages = Math.ceil(c / set.show);
- var page = (start / set.show);
- out += '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">';
-
- if (start > 0)
- {
- out += '<li><a href="javascript:void(0)" class="tipue_search_foot_box" id="' + (start - set.show) + '_' + replace + '">&#171; Previous</a></li>';
- }
-
- if (page <= 4)
- {
- var p_b = pages;
- if (pages > 5)
- {
- p_b = 5;
- }
- for (var f = 0; f < p_b; f++)
- {
- if (f == page)
- {
- out += '<li class="current">' + (f + 1) + '</li>';
- }
- else
- {
- out += '<li><a href="javascript:void(0)" class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>';
- }
- }
- }
- else
- {
- var p_b = pages + 4;
- if (p_b > pages)
- {
- p_b = pages;
- }
- for (var f = page; f < p_b; f++)
- {
- if (f == page)
- {
- out += '<li class="current">' + (f + 1) + '</li>';
- }
- else
- {
- out += '<li><a href="javascript:void(0)" class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>';
- }
- }
- }
-
- if (page + 1 != pages)
- {
- out += '<li><a href="javascript:void(0)" class="tipue_search_foot_box" id="' + (start + set.show) + '_' + replace + '">Next &#187;</a></li>';
- }
-
- out += '</ul></div>';
- }
- }
- else
- {
- out += '<div id="tipue_search_warning_head">Nothing found</div>';
- }
- }
- else
- {
- if (show_stop)
- {
- out += '<div id="tipue_search_warning_head">Nothing found</div><div id="tipue_search_warning">Common words are largely ignored</div>';
- }
- else
- {
- out += '<div id="tipue_search_warning_head">Search too short</div>';
- if (set.minimumLength == 1)
- {
- out += '<div id="tipue_search_warning">Should be one character or more</div>';
- }
- else
- {
- out += '<div id="tipue_search_warning">Should be ' + set.minimumLength + ' characters or more</div>';
- }
- }
- }
-
- $('#tipue_search_content').html(out);
- $('#tipue_search_content').slideDown(200);
-
- $('#tipue_search_replaced').click(function()
- {
- getTipueSearch(0, false);
- });
-
- $('.tipue_search_foot_box').click(function()
- {
- var id_v = $(this).attr('id');
- var id_a = id_v.split('_');
-
- getTipueSearch(parseInt(id_a[0]), id_a[1]);
- });
- }
-
- });
- };
-
-})(jQuery);
-
diff --git a/extra_plugins/task_localsearch/files/assets/js/tipuesearch_set.js b/extra_plugins/task_localsearch/files/assets/js/tipuesearch_set.js
deleted file mode 100644
index 8989c3c..0000000
--- a/extra_plugins/task_localsearch/files/assets/js/tipuesearch_set.js
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/*
-Tipue Search 2.0
-Copyright (c) 2012 Tipue
-Tipue Search is released under the MIT License
-http://www.tipue.com/search
-*/
-
-
-var tipuesearch_stop_words = ["and", "be", "by", "do", "for", "he", "how", "if", "is", "it", "my", "not", "of", "or", "the", "to", "up", "what", "when"];
-
-var tipuesearch_replace = {"words": [
- {"word": "tipua", replace_with: "tipue"},
- {"word": "javscript", replace_with: "javascript"}
-]};
-
-var tipuesearch_stem = {"words": [
- {"word": "e-mail", stem: "email"},
- {"word": "javascript", stem: "script"},
- {"word": "javascript", stem: "js"}
-]};
-
-/*
-Include the following variable listing the pages on your site if you're using Live mode
-*/
-
-var tipuesearch_pages = ["http://foo.com/", "http://foo.com/about/", "http://foo.com/blog/", "http://foo.com/tos/"];
-
diff --git a/extra_plugins/task_mustache.plugin b/extra_plugins/task_mustache.plugin
deleted file mode 100644
index 6103936..0000000
--- a/extra_plugins/task_mustache.plugin
+++ /dev/null
@@ -1,10 +0,0 @@
-[Core]
-Name = render_mustache
-Module = task_mustache
-
-[Documentation]
-Author = Roberto Alsina
-Version = 0.1
-Website = http://nikola.ralsina.com.ar
-Description = Generates the blog's index pages in json.
-
diff --git a/extra_plugins/task_mustache/__init__.py b/extra_plugins/task_mustache/__init__.py
deleted file mode 100644
index 8b5ec13..0000000
--- a/extra_plugins/task_mustache/__init__.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright (c) 2012 Roberto Alsina y otros.
-
-# 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 json
-import os
-
-from nikola.plugin_categories import Task
-from nikola.utils import config_changed, copy_file
-
-
-class Mustache(Task):
- """Render the blog posts as JSON data."""
-
- name = "render_mustache"
-
- def gen_tasks(self):
- self.site.scan_posts()
-
- kw = {
- "translations": self.site.config['TRANSLATIONS'],
- "index_display_post_count":
- self.site.config['INDEX_DISPLAY_POST_COUNT'],
- "messages": self.site.MESSAGES,
- "index_teasers": self.site.config['INDEX_TEASERS'],
- "output_folder": self.site.config['OUTPUT_FOLDER'],
- "filters": self.site.config['FILTERS'],
- "blog_title": self.site.config['BLOG_TITLE'],
- "content_footer": self.site.config['CONTENT_FOOTER'],
- }
-
- # TODO: timeline is global, get rid of it
- posts = [x for x in self.site.timeline if x.use_in_feeds]
- if not posts:
- yield {
- 'basename': 'render_mustache',
- 'actions': [],
- }
- return
-
- def write_file(path, post, lang):
-
- # Prev/Next links
- prev_link = False
- if post.prev_post:
- prev_link = post.prev_post.permalink(lang).replace(".html",
- ".json")
- next_link = False
- if post.next_post:
- next_link = post.next_post.permalink(lang).replace(".html",
- ".json")
- data = {}
-
- # Configuration
- for k, v in self.site.config.items():
- # FIXME: not py3 ready
- if isinstance(v, (str, unicode)): # NOQA
- data[k] = v
-
- # Tag data
- tags = []
- for tag in post.tags:
- tags.append({'name': tag, 'link': self.site.link("tag", tag,
- lang)})
- data.update({
- "tags": tags,
- "tags?": True if tags else False,
- })
-
- # Template strings
- for k, v in kw["messages"][lang].items():
- data["message_" + k] = v
-
- # Post data
- data.update({
- "title": post.title(lang),
- "text": post.text(lang),
- "prev": prev_link,
- "next": next_link,
- "date":
- post.date.strftime(self.site.GLOBAL_CONTEXT['date_format']),
- })
-
- # Disqus comments
- data["disqus_html"] = ('<div id="disqus_thread"></div> <script '
- 'type="text/javascript">var disqus_'
- 'shortname="%s";var disqus_url="%s";'
- '(function(){var a=document.createElement'
- '("script");a.type="text/javascript";'
- 'a.async=true;a.src="http://"+disqus_'
- 'shortname+".disqus.com/embed.js";('
- 'document.getElementsByTagName("head")'
- '[0]||document.getElementsByTagName("body")'
- '[0]).appendChild(a)})(); </script>'
- '<noscript>Please enable JavaScript to view'
- ' the <a href="http://disqus.com/'
- '?ref_noscript">comments powered by DISQUS.'
- '</a></noscript><a href="http://disqus.com"'
- 'class="dsq-brlink">comments powered by <sp'
- 'an class="logo-disqus">DISQUS</span></a>' %
- (self.site.config['DISQUS_FORUM'],
- post.permalink(absolute=True)))
-
- # Post translations
- translations = []
- for langname in kw["translations"]:
- if langname == lang:
- continue
- translations.append({'name':
- kw["messages"][langname]["Read in English"],
- 'link': "javascript:load_data('%s');"
- % post.permalink(langname).replace(
- ".html", ".json")})
- data["translations"] = translations
-
- try:
- os.makedirs(os.path.dirname(path))
- except:
- pass
- with open(path, 'wb+') as fd:
- fd.write(json.dumps(data))
-
- for lang in kw["translations"]:
- for i, post in enumerate(posts):
- out_path = post.destination_path(lang, ".json")
- out_file = os.path.join(kw['output_folder'], out_path)
- task = {
- 'basename': 'render_mustache',
- 'name': str(out_path),
- 'file_dep': post.fragment_deps(lang),
- 'targets': [out_file],
- 'actions': [(write_file, (out_file, post, lang))],
- 'task_dep': ['render_posts'],
- }
- yield task
-
- if posts:
- first_post_data = posts[0].permalink(
- self.site.config["DEFAULT_LANG"]).replace(".html", ".json")
-
- # Copy mustache template
- src = os.path.join(os.path.dirname(__file__), 'mustache-template.html')
- dst = os.path.join(kw['output_folder'], 'mustache-template.html')
- yield {
- 'basename': 'render_mustache',
- 'name': 'mustache-template.html',
- 'targets': [dst],
- 'file_dep': [src],
- 'actions': [(copy_file, (src, dst))],
- }
-
- # Copy mustache.html with the right starting file in it
- src = os.path.join(os.path.dirname(__file__), 'mustache.html')
- dst = os.path.join(kw['output_folder'], 'mustache.html')
-
- def copy_mustache():
- with open(src, 'rb') as in_file:
- with open(dst, 'wb+') as out_file:
- data = in_file.read().replace('{{first_post_data}}',
- first_post_data)
- out_file.write(data)
- yield {
- 'basename': 'render_mustache',
- 'name': 'mustache.html',
- 'targets': [dst],
- 'file_dep': [src],
- 'uptodate': [config_changed({1: first_post_data})],
- 'actions': [(copy_mustache, [])],
- }
diff --git a/extra_plugins/task_mustache/mustache-template.html b/extra_plugins/task_mustache/mustache-template.html
deleted file mode 100644
index 7f2b34c..0000000
--- a/extra_plugins/task_mustache/mustache-template.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<script id="view" type="text/html">
-<div class="container" id="container">
- <div class="postbox">
- <h1>{{BLOG_TITLE}}</h1>
- <hr>
- <h2>{{title}}</h2>
- Posted on: {{date}}</br>
- {{#tags?}} More posts about:
- {{#tags}}<a class="tag" href={{link}}><span class="badge badge-info">{{name}}</span></a>{{/tags}}
- </br>
- {{/tags?}}
- {{#translations}}<a href={{link}}>{{name}}</a>{{/translations}}&nbsp;</br>
- <hr>
- {{{text}}}
- <ul class="pager">
- {{#prev}}
- <li class="previous"><a href="javascript:load_data('{{prev}}')">{{message_Previous post}}</a></li>
- {{/prev}}
- {{#next}}
- <li class="next"><a href="javascript:load_data('{{next}}')">{{message_Next post}}</a></li>
- {{/next}}
- </ul>
- {{{disqus_html}}}
- </div>
- <div class="footerbox">
- {{{CONTENT_FOOTER}}}
- </div>
-</div>
-</script>
diff --git a/extra_plugins/task_mustache/mustache.html b/extra_plugins/task_mustache/mustache.html
deleted file mode 100644
index 5dbebef..0000000
--- a/extra_plugins/task_mustache/mustache.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<head>
- <link href="/assets/css/bootstrap.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/bootstrap-responsive.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
- <link href="/assets/css/colorbox.css" rel="stylesheet" type="text/css"/>
- <link href="/assets/css/slides.css" rel="stylesheet" type="text/css"/>
- <link href="/assets/css/theme.css" rel="stylesheet" type="text/css"/>
- <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
- <script src="/assets/js/jquery-1.7.2.min.js" type="text/javascript"></script>
- <script src="https://raw.github.com/jonnyreeves/jquery-Mustache/master/src/jquery.mustache.js"></script>
- <script src="https://raw.github.com/janl/mustache.js/master/mustache.js"></script>
- <script src="/assets/js/jquery.colorbox-min.js" type="text/javascript"></script>
- <script src="/assets/js/slides.min.jquery.js" type="text/javascript"></script>
- <script type="text/javascript">
-function load_data(dataurl) {
- jQuery.getJSON(dataurl, function(data) {
- $('body').mustache('view', data, { method: 'html' });
- window.location.hash = '#' + dataurl;
- })
-};
-$(document).ready(function() {
-$.Mustache.load('/mustache-template.html')
- .done(function () {
- if (window.location.hash != '') {
- load_data(window.location.hash.slice(1));
- }
- else {
- load_data('{{first_post_data}}');
- };
- })
-});
-</script>
-</head>
-<body style="padding-top: 0;">
-</body>