diff --git a/commotionwireless.net/_config.yml b/commotionwireless.net/_config.yml index fdd4b988..bc34d899 100644 --- a/commotionwireless.net/_config.yml +++ b/commotionwireless.net/_config.yml @@ -3,11 +3,12 @@ description: "Commotion is an open-source communication tool that uses mobile ph encoding: utf-8 -url: "staging.commotionwireless.net" +url: "commotionwireless.net" port: 80 piwik: base_url: piwik.opentechinstitute.org site_id: 1 permalink: /blog/:year/:month/:day/:title +category_dir: /blog/category pagination: 3 diff --git a/commotionwireless.net/_includes/blog-footer.html b/commotionwireless.net/_includes/blog-footer.html index 2c82bf9d..e83470aa 100644 --- a/commotionwireless.net/_includes/blog-footer.html +++ b/commotionwireless.net/_includes/blog-footer.html @@ -1,4 +1 @@ -

Tags:

-{% for category in page.categories %} - {{ category }}  -{% endfor %} +

Tags:

{{ page.categories | category_links }} diff --git a/commotionwireless.net/_includes/blog-front-content.html b/commotionwireless.net/_includes/blog-front-content.html index 219837c5..36734db7 100644 --- a/commotionwireless.net/_includes/blog-front-content.html +++ b/commotionwireless.net/_includes/blog-front-content.html @@ -6,11 +6,7 @@

{{ post.title }}

{{ post.date | date: "%B %d, %Y" }} {{ post.post_author }}

{{ post.content | split:'' | first | strip_html }}

Read More -
-{% for category in post.categories %} - {{ category }}  -{% endfor %} -
+
{{ post.categories | category_links }}

{% endfor %} diff --git a/commotionwireless.net/_includes/blog-rss-block.html b/commotionwireless.net/_includes/blog-rss-block.html index b4e0cb49..f15cd2d4 100644 --- a/commotionwireless.net/_includes/blog-rss-block.html +++ b/commotionwireless.net/_includes/blog-rss-block.html @@ -1,3 +1,4 @@
- RSS Feed
+RSS: RSS Feed + diff --git a/commotionwireless.net/_includes/menu.html b/commotionwireless.net/_includes/menu.html index 510addfa..0fa37335 100644 --- a/commotionwireless.net/_includes/menu.html +++ b/commotionwireless.net/_includes/menu.html @@ -16,7 +16,7 @@
  • Contact
  • -
  • Blog
  • +
  • Blog
  • #{category} (#{posts_in_category})
  • \n" + end + html + end + end +end + +Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag) diff --git a/commotionwireless.net/_plugins/generate_categories.rb b/commotionwireless.net/_plugins/generate_categories.rb new file mode 100644 index 00000000..15811622 --- /dev/null +++ b/commotionwireless.net/_plugins/generate_categories.rb @@ -0,0 +1,241 @@ +# encoding: utf-8 +# +# Jekyll category page generator. +# http://recursive-design.com/projects/jekyll-plugins/ +# +# Version: 0.2.4 (201210160037) +# +# Copyright (c) 2010 Dave Perrett, http://recursive-design.com/ +# Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) +# +# A generator that creates category pages for jekyll sites. +# +# To use it, simply drop this script into the _plugins directory of your Jekyll site. You should +# also create a file called 'category_index.html' in the _layouts directory of your jekyll site +# with the following contents (note: you should remove the leading '# ' characters): +# +# ================================== COPY BELOW THIS LINE ================================== +# --- +# layout: default +# --- +# +#

    {{ page.title }}

    +# +# ================================== COPY ABOVE THIS LINE ================================== +# +# You can alter the _layout_ setting if you wish to use an alternate layout, and obviously you +# can change the HTML above as you see fit. +# +# When you compile your jekyll site, this plugin will loop through the list of categories in your +# site, and use the layout above to generate a page for each one with a list of links to the +# individual posts. +# +# You can also (optionally) generate an atom.xml feed for each category. To do this, copy +# the category_feed.xml file to the _includes/custom directory of your own project +# (https://github.com/recurser/jekyll-plugins/blob/master/_includes/custom/category_feed.xml). +# You'll also need to copy the octopress_filters.rb file into the _plugins directory of your +# project as the category_feed.xml requires a couple of extra filters +# (https://github.com/recurser/jekyll-plugins/blob/master/_plugins/octopress_filters.rb). +# +# Included filters : +# - category_links: Outputs the list of categories as comma-separated links. +# - date_to_html_string: Outputs the post.date as formatted html, with hooks for CSS styling. +# +# Available _config.yml settings : +# - category_dir: The subfolder to build category pages in (default is 'categories'). +# - category_title_prefix: The string used before the category name in the page title (default is +# 'Category: '). +module Jekyll + + # The CategoryIndex class creates a single category page for the specified category. + class CategoryPage < Page + + # Initializes a new CategoryIndex. + # + # +template_path+ is the path to the layout template to use. + # +site+ is the Jekyll Site instance. + # +base+ is the String path to the . + # +category_dir+ is the String path between and the category folder. + # +category+ is the category currently being processed. + def initialize(template_path, name, site, base, category_dir, category) + @site = site + @base = base + @dir = category_dir + @name = name + + self.process(name) + + if File.exist?(template_path) + @perform_render = true + template_dir = File.dirname(template_path) + template = File.basename(template_path) + # Read the YAML data from the layout page. + self.read_yaml(template_dir, template) + self.data['category'] = category + # Set the title for this page. + title_prefix = site.config['category_title_prefix'] || 'Category: ' + self.data['title'] = "#{title_prefix}#{category}" + # Set the meta-description for this page. + meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' + self.data['description'] = "#{meta_description_prefix}#{category}" + else + @perform_render = false + end + end + + def render? + @perform_render + end + + end + + # The CategoryIndex class creates a single category page for the specified category. + class CategoryIndex < CategoryPage + + # Initializes a new CategoryIndex. + # + # +site+ is the Jekyll Site instance. + # +base+ is the String path to the . + # +category_dir+ is the String path between and the category folder. + # +category+ is the category currently being processed. + def initialize(site, base, category_dir, category) + template_path = File.join(base, '_layouts', 'category_index.html') + category = category.gsub('%20','-') + super(template_path, 'index.html', site, base, category_dir, category) + end + + end + + # The CategoryFeed class creates an Atom feed for the specified category. + class CategoryFeed < CategoryPage + + # Initializes a new CategoryFeed. + # + # +site+ is the Jekyll Site instance. + # +base+ is the String path to the . + # +category_dir+ is the String path between and the category folder. + # +category+ is the category currently being processed. + def initialize(site, base, category_dir, category) + template_path = File.join(base, '_includes', 'custom', 'category_feed.xml') + super(template_path, 'atom.xml', site, base, category_dir, category) + + # Set the correct feed URL. + self.data['feed_url'] = "#{category_dir}/#{name}" if render? + end + + end + + # The Site class is a built-in Jekyll class with access to global site config information. + class Site + + # Creates an instance of CategoryIndex for each category page, renders it, and + # writes the output to a file. + # + # +category+ is the category currently being processed. + def write_category_index(category) + target_dir = GenerateCategories.category_dir(self.config['category_dir'], category) + index = CategoryIndex.new(self, self.source, target_dir, category) + if index.render? + index.render(self.layouts, site_payload) + index.write(self.dest) + # Record the fact that this pages has been added, otherwise Site::cleanup will remove it. + self.pages << index + end + + # Create an Atom-feed for each index. + feed = CategoryFeed.new(self, self.source, target_dir, category) + if feed.render? + feed.render(self.layouts, site_payload) + feed.write(self.dest) + # Record the fact that this pages has been added, otherwise Site::cleanup will remove it. + self.pages << feed + end + end + + # Loops through the list of category pages and processes each one. + def write_category_indexes + if self.layouts.key? 'category_index' + self.categories.keys.each do |category| + self.write_category_index(category) + end + + # Throw an exception if the layout couldn't be found. + else + throw "No 'category_index' layout found." + end + end + + end + + + # Jekyll hook - the generate method is called by jekyll, and generates all of the category pages. + class GenerateCategories < Generator + safe true + priority :low + + CATEGORY_DIR = 'categories' + + def generate(site) + site.write_category_indexes + end + + # Processes the given dir and removes leading and trailing slashes. Falls + # back on the default if no dir is provided. + def self.category_dir(base_dir, category) + base_dir = (base_dir || CATEGORY_DIR).gsub(/^\/*(.*)\/*$/, '\1') + category = category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase + File.join(base_dir, category) + end + + end + + + # Adds some extra filters used during the category creation process. + module Filters + + # Outputs a list of categories as comma-separated links. This is used + # to output the category list for each post on a category page. + # + # +categories+ is the list of categories to format. + # + # Returns string + def category_links(categories) + base_dir = @context.registers[:site].config['category_dir'] + categories = categories.sort!.map do |category| + category_dir = GenerateCategories.category_dir(base_dir, category) + # Make sure the category directory begins with a slash. + category_dir = "/#{category_dir}" unless category_dir =~ /^\// + "#{category.gsub('%20','-')}" + end + + case categories.length + when 0 + "" + when 1 + categories[0].to_s + else + categories.join(', ') + end + end + + # Outputs the post.date as formatted html, with hooks for CSS styling. + # + # +date+ is the date object to format as HTML. + # + # Returns string + def date_to_html_string(date) + result = '' + date.strftime('%b').upcase + ' ' + result += date.strftime('%d ') + result += date.strftime('%Y ') + result + end + + end + +end diff --git a/commotionwireless.net/blog/blogindex.md b/commotionwireless.net/blog/blogindex.md deleted file mode 100644 index 5bc44ce2..00000000 --- a/commotionwireless.net/blog/blogindex.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Commotion Wireless Blog Index" -layout: blog-index -lang: en ---- -
    -

    Posts by Tag

    -{% for category in site.categories %} -

    {{ category[0] }}

    - -{% endfor %} -
    diff --git a/commotionwireless.net/blog/index.md b/commotionwireless.net/blog/index.md index 41b389f6..f24818ba 100644 --- a/commotionwireless.net/blog/index.md +++ b/commotionwireless.net/blog/index.md @@ -1,10 +1,8 @@ --- -layout: blog-front -title: Commotion Blog -categories: -created: 2014-01-14 -changed: 2014-01-15 -post_author: Chris Ritzo +title: "Commotion Wireless Blog Index" +layout: blog-index lang: en --- -

    Recent Blog Posts

    +
    +{% include posts-by-date.html %} +
    diff --git a/commotionwireless.net/blog/recent.md b/commotionwireless.net/blog/recent.md new file mode 100644 index 00000000..41b389f6 --- /dev/null +++ b/commotionwireless.net/blog/recent.md @@ -0,0 +1,10 @@ +--- +layout: blog-front +title: Commotion Blog +categories: +created: 2014-01-14 +changed: 2014-01-15 +post_author: Chris Ritzo +lang: en +--- +

    Recent Blog Posts

    diff --git a/commotionwireless.net/css/commotion-responsive-480.css b/commotionwireless.net/css/commotion-responsive-480.css index d828fab5..f4d28e06 100644 --- a/commotionwireless.net/css/commotion-responsive-480.css +++ b/commotionwireless.net/css/commotion-responsive-480.css @@ -434,6 +434,10 @@ div#download-button-block .download-button a.button { margin-left: 10px; padding: 5px 21px 5px 0; } +.downloads-table { + overflow: auto; + width: 100%; +} .verifying-downloads-block { float:right; diff --git a/commotionwireless.net/css/commotion.css b/commotionwireless.net/css/commotion.css index 749855f6..bbee65ee 100644 --- a/commotionwireless.net/css/commotion.css +++ b/commotionwireless.net/css/commotion.css @@ -636,6 +636,9 @@ div.cck-download-pdf { .blog-index a:hover { border-bottom: 3px solid #FF739C; } +.blog-index ul li { + margin-bottom: 1em; +} .bug-report { display: block; background-color: #877AED; @@ -681,3 +684,9 @@ div.cck-download-pdf { background: #000000; color: #FFFFFF; } +.tag { + padding-left: .5em; +} +.index-day { + padding-left: .5em; +} diff --git a/commotionwireless.net/download/routers/index.md b/commotionwireless.net/download/routers/index.md index 4a6922f0..7b85e953 100644 --- a/commotionwireless.net/download/routers/index.md +++ b/commotionwireless.net/download/routers/index.md @@ -30,11 +30,7 @@ lang: en

    Don't see your device listed? Check the Commotion Router Developer Hardware in testing wiki page for a full list of devices being tested with Commotion OpenWRT.

    -

    Current Release = v1.0 "Grumpy Cat"

    - -

    At this time, the Commotion team recommends using factory install images for v1.0 to take full advantage of all new features in the 1.0 release.

    - -

     

    +

    Current Release: v1.1 "Grumpy Cat"

     

    @@ -42,107 +38,130 @@ lang: en

    Commotion Router Downloads

    -

    Version 1.0

    - -

    Commotion version 1.0 was released in December 2013. Official software images are posted here.

    +

    Version 1.1

    +

    Commotion version 1.1 was released in April 2014. Official software images are posted here.

    -

    If you are interested in trying the newest features of Commotion Router, check out our nightly builds and contact us for support questions.

    +

    If you are interested in trying the newest features of Commotion Router, check out our nightly builds and contact us for support questions.

    - -#### Manufacturer: Ubiquiti +

    Manufacturer: Ubiquiti

    +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RouterMD5DateSize
    -

    Ubiquiti Picostation M2 and Ubiquiti Bullet M2/M5 -- Factory Install | (sig)

    -
    c8e3b011602b23c646c8c66532b10e3412/30/20135.2 MB
    -

    Ubiquiti Picostation M2 and Ubiquiti Bullet M2/M5 -- Upgrade | (sig)

    -
    1f0ffa7d8300db4c1788c913cece43b512/30/20135.2 MB
    -

    Ubiquiti Nanostation M2/M5 -- Factory Install | (sig)

    -
    7c5ded26f3701026f5a4d586754f6e7612/30/20135.2 MB
    -

    Ubiquiti Nanostation M2/M5 -- Upgrade | (sig)

    -
    304d30496e1a970a09fd099b935bda0f12/30/20135.2 MB
    -

    Ubiquiti Rocket M2/M5 -- Factory Install | (sig)

    -
    a9f31346cc1857cc230f54888617482312/30/20135.2 MB
    -

    Ubiquiti Rocket M2/M5 -- Upgrade | (sig)

    -
    a9f31346cc1857cc230f54888617482312/30/20135.2 MB
    -

    Ubiquiti Unifi Outdoor -- Factory Install | (sig)

    -
    fb6b9c9e6897edd61805a1eedce1a25a12/30/20135.2 MB
    -

    Ubiquiti Unifi Outdoor -- Upgrade | (sig)

    -
    45dcfd4d7564bf1fd57025556dffdab912/30/20135.2 MB
    RouterMD5DateSize
    +

    Ubiquiti Picostation M2 and Ubiquiti Bullet M2/M5 -- Factory Install | (sig)

    +
    d47acc9644506a3993a1fef1a1c9d0b34-14-145.3 MB
    +

    Ubiquiti Picostation M2 and Ubiquiti Bullet M2/M5 -- Upgrade | (sig)

    +
    c14f72c2378d4d8e08f9470d64d57c294-14-145.3 MB
    +

    Ubiquiti Nanostation M2/M5 -- Factory Install | (sig)

    +
    e6116446eb8d6910f69855c401e9bb5b4-14-145.3 MB
    +

    Ubiquiti Nanostation M2/M5 -- Upgrade | (sig)

    +
    4d01fce056945b55f7749dd7b473a5bc4-14-145.3 MB
    +

    Ubiquiti Rocket M2/M5 -- Factory Install | (sig)

    +
    9444ce2084ba51688d52fe896e77895a4-14-145.3 MB
    +

    Ubiquiti Rocket M2/M5 -- Upgrade | (sig)

    +
    a81dafa5a73b75d12b0bd006e60b239c4-14-145.3 MB
    +

    Ubiquiti Unifi Outdoor -- Factory Install | (sig)

    +
    411a32be53561a5905b32f85627d26284-14-145.3 MB
    +

    Ubiquiti Unifi Outdoor -- Upgrade | (sig)

    +
    c69c5c95d4d43f83f62dd89f0df448434-14-145.3 MB
    - - - -#### Manufacturer: TP Link - +
    + +
    + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + +
    RouterMD5DateSize
    TP LinkTL-WDR4300 - COMING SOON!   
    TL-WDR4300MD54-14-145.3 MB
    TL-WDR3600MD54-14-145.3 MB
    TL-WDR4310MD54-14-145.3 MB
    +
    + + +

    Previous Versions

    +

    Nightly Builds

    Our nightly builds are back! Nightly built images of Commotion OpenWRT are generated from our build server and posted to downloads.commotionwireless.net/nightly. Nightly images contain the most up to date feature and bug fix commites, but should be considered working, yet unstable builds.