diff --git a/MIT-LICENSE b/MIT-LICENSE
index 441ca02..926b04e 100644
--- a/MIT-LICENSE
+++ b/MIT-LICENSE
@@ -17,4 +17,4 @@ 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.
\ No newline at end of file
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/example/server/example_servlet.rb b/example/server/example_servlet.rb
index b73be94..16f3bff 100644
--- a/example/server/example_servlet.rb
+++ b/example/server/example_servlet.rb
@@ -2,40 +2,40 @@ module ProductsFilter
def price(integer)
sprintf("$%.2d USD", integer / 100.0)
end
-
+
def prettyprint(text)
text.gsub( /\*(.*)\*/, '\1' )
end
-
+
def count(array)
array.size
end
-
+
def paragraph(p)
"
#{p}
"
end
end
class Servlet < LiquidServlet
-
+
def index
{ 'date' => Time.now }
end
-
- def products
- { 'products' => products_list, 'description' => description, 'section' => 'Snowboards', 'cool_products' => true}
+
+ def products
+ { 'products' => products_list, 'description' => description, 'section' => 'Snowboards', 'cool_products' => true}
end
private
-
+
def products_list
[{'name' => 'Arbor Draft', 'price' => 39900, 'description' => 'the *arbor draft* is a excellent product' },
{'name' => 'Arbor Element', 'price' => 40000, 'description' => 'the *arbor element* rocks for freestyling'},
{'name' => 'Arbor Diamond', 'price' => 59900, 'description' => 'the *arbor diamond* is a made up product because im obsessed with arbor and have no creativity'}]
end
-
+
def description
"List of Products ~ This is a list of products with price and description."
end
-
+
end
diff --git a/example/server/liquid_servlet.rb b/example/server/liquid_servlet.rb
index 8f24f00..d6b25e4 100644
--- a/example/server/liquid_servlet.rb
+++ b/example/server/liquid_servlet.rb
@@ -7,22 +7,22 @@ class LiquidServlet < WEBrick::HTTPServlet::AbstractServlet
def do_POST(req, res)
handle(:post, req, res)
end
-
+
private
-
+
def handle(type, req, res)
@request, @response = req, res
-
+
@request.path_info =~ /(\w+)$/
- @action = $1 || 'index'
- @assigns = send(@action) if respond_to?(@action)
+ @action = $1 || 'index'
+ @assigns = send(@action) if respond_to?(@action)
@response['Content-Type'] = "text/html"
@response.status = 200
- @response.body = Liquid::Template.parse(read_template).render(@assigns, :filters => [ProductsFilter])
+ @response.body = Liquid::Template.parse(read_template).render(@assigns, :filters => [ProductsFilter])
end
-
+
def read_template(filename = @action)
File.read( File.dirname(__FILE__) + "/templates/#{filename}.liquid" )
end
-end
\ No newline at end of file
+end
diff --git a/example/server/templates/index.liquid b/example/server/templates/index.liquid
index 79a52b4..e56b606 100644
--- a/example/server/templates/index.liquid
+++ b/example/server/templates/index.liquid
@@ -3,4 +3,4 @@
-
-
+
+
diff --git a/lib/extras/liquid_view.rb b/lib/extras/liquid_view.rb
index 6b983be..843a539 100644
--- a/lib/extras/liquid_view.rb
+++ b/lib/extras/liquid_view.rb
@@ -2,15 +2,15 @@
# and use liquid as an template system for .liquid files
#
# Example
-#
+#
# ActionView::Base::register_template_handler :liquid, LiquidView
class LiquidView
PROTECTED_ASSIGNS = %w( template_root response _session template_class action_name request_origin session template
_response url _request _cookies variables_added _flash params _headers request cookies
ignore_missing_templates flash _params logger before_filter_chain_aborted headers )
- PROTECTED_INSTANCE_VARIABLES = %w( @_request @controller @_first_render @_memoized__pick_template @view_paths
+ PROTECTED_INSTANCE_VARIABLES = %w( @_request @controller @_first_render @_memoized__pick_template @view_paths
@helpers @assigns_added @template @_render_stack @template_format @assigns )
-
+
def self.call(template)
"LiquidView.new(self).render(template, local_assigns)"
end
@@ -18,10 +18,10 @@ class LiquidView
def initialize(view)
@view = view
end
-
+
def render(template, local_assigns = nil)
@view.controller.headers["Content-Type"] ||= 'text/html; charset=utf-8'
-
+
# Rails 2.2 Template has source, but not locals
if template.respond_to?(:source) && !template.respond_to?(:locals)
assigns = (@view.instance_variables - PROTECTED_INSTANCE_VARIABLES).inject({}) do |hash, ivar|
@@ -31,15 +31,15 @@ class LiquidView
else
assigns = @view.assigns.reject{ |k,v| PROTECTED_ASSIGNS.include?(k) }
end
-
+
source = template.respond_to?(:source) ? template.source : template
local_assigns = (template.respond_to?(:locals) ? template.locals : local_assigns) || {}
-
+
if content_for_layout = @view.instance_variable_get("@content_for_layout")
assigns['content_for_layout'] = content_for_layout
end
assigns.merge!(local_assigns.stringify_keys)
-
+
liquid = Liquid::Template.parse(source)
liquid.render(assigns, :filters => [@view.controller.master_helper_module], :registers => {:action_view => @view, :controller => @view.controller})
end
@@ -48,4 +48,4 @@ class LiquidView
false
end
-end
\ No newline at end of file
+end
diff --git a/lib/liquid/block.rb b/lib/liquid/block.rb
index a0a07e4..ada7e8a 100644
--- a/lib/liquid/block.rb
+++ b/lib/liquid/block.rb
@@ -99,7 +99,7 @@ module Liquid
begin
# If we get an Interrupt that means the block must stop processing. An
- # Interrupt is any command that stops block execution such as {% break %}
+ # Interrupt is any command that stops block execution such as {% break %}
# or {% continue %}
if token.is_a? Continue or token.is_a? Break
context.push_interrupt(token.interrupt)
diff --git a/lib/liquid/file_system.rb b/lib/liquid/file_system.rb
index 57363c3..fe2b9aa 100644
--- a/lib/liquid/file_system.rb
+++ b/lib/liquid/file_system.rb
@@ -1,7 +1,7 @@
module Liquid
# A Liquid file system is way to let your templates retrieve other templates for use with the include tag.
#
- # You can implement subclasses that retrieve templates from the database, from the file system using a different
+ # You can implement subclasses that retrieve templates from the database, from the file system using a different
# path structure, you can provide them as hard-coded inline strings, or any manner that you see fit.
#
# You can add additional instance variables, arguments, or methods as needed.
@@ -18,7 +18,7 @@ module Liquid
raise FileSystemError, "This liquid context does not allow includes."
end
end
-
+
# This implements an abstract file system which retrieves template files named in a manner similar to Rails partials,
# ie. with the template name prefixed with an underscore. The extension ".liquid" is also added.
#
@@ -27,36 +27,36 @@ module Liquid
# Example:
#
# file_system = Liquid::LocalFileSystem.new("/some/path")
- #
+ #
# file_system.full_path("mypartial") # => "/some/path/_mypartial.liquid"
# file_system.full_path("dir/mypartial") # => "/some/path/dir/_mypartial.liquid"
#
class LocalFileSystem
attr_accessor :root
-
+
def initialize(root)
@root = root
end
-
+
def read_template_file(template_path, context)
full_path = full_path(template_path)
raise FileSystemError, "No such template '#{template_path}'" unless File.exists?(full_path)
-
+
File.read(full_path)
end
-
+
def full_path(template_path)
raise FileSystemError, "Illegal template name '#{template_path}'" unless template_path =~ /^[^.\/][a-zA-Z0-9_\/]+$/
-
+
full_path = if template_path.include?('/')
File.join(root, File.dirname(template_path), "_#{File.basename(template_path)}.liquid")
else
File.join(root, "_#{template_path}.liquid")
end
-
+
raise FileSystemError, "Illegal template path '#{File.expand_path(full_path)}'" unless File.expand_path(full_path) =~ /^#{File.expand_path(root)}/
-
+
full_path
end
end
-end
\ No newline at end of file
+end
diff --git a/lib/liquid/tags/assign.rb b/lib/liquid/tags/assign.rb
index 70b49ce..34fdf19 100644
--- a/lib/liquid/tags/assign.rb
+++ b/lib/liquid/tags/assign.rb
@@ -10,26 +10,26 @@ module Liquid
#
class Assign < Tag
Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/o
-
- def initialize(tag_name, markup, tokens)
+
+ def initialize(tag_name, markup, tokens)
if markup =~ Syntax
@to = $1
@from = Variable.new($2)
else
raise SyntaxError.new("Syntax Error in 'assign' - Valid syntax: assign [var] = [source]")
end
-
- super
+
+ super
end
-
+
def render(context)
val = @from.render(context)
context.scopes.last[@to] = val
context.resource_limits[:assign_score_current] += (val.respond_to?(:length) ? val.length : 1)
''
- end
-
- end
-
- Template.register_tag('assign', Assign)
+ end
+
+ end
+
+ Template.register_tag('assign', Assign)
end
diff --git a/lib/liquid/tags/break.rb b/lib/liquid/tags/break.rb
index d297612..0626338 100644
--- a/lib/liquid/tags/break.rb
+++ b/lib/liquid/tags/break.rb
@@ -8,8 +8,8 @@ module Liquid
# {% break %}
# {% endif %}
# {% endfor %}
- #
- class Break < Tag
+ #
+ class Break < Tag
def interrupt
BreakInterrupt.new
diff --git a/lib/liquid/tags/case.rb b/lib/liquid/tags/case.rb
index 4e2fb2c..9150b15 100644
--- a/lib/liquid/tags/case.rb
+++ b/lib/liquid/tags/case.rb
@@ -3,15 +3,15 @@ module Liquid
Syntax = /(#{QuotedFragment})/o
WhenSyntax = /(#{QuotedFragment})(?:(?:\s+or\s+|\s*\,\s*)(#{QuotedFragment}.*))?/o
- def initialize(tag_name, markup, tokens)
+ def initialize(tag_name, markup, tokens)
@blocks = []
-
+
if markup =~ Syntax
@left = $1
else
raise SyntaxError.new("Syntax Error in tag 'case' - Valid syntax: case [condition]")
end
-
+
super
end
@@ -27,53 +27,53 @@ module Liquid
end
end
- def render(context)
- context.stack do
+ def render(context)
+ context.stack do
execute_else_block = true
-
+
output = ''
@blocks.each do |block|
- if block.else?
+ if block.else?
return render_all(block.attachment, context) if execute_else_block
elsif block.evaluate(context)
- execute_else_block = false
+ execute_else_block = false
output << render_all(block.attachment, context)
- end
+ end
end
output
- end
- end
-
- private
-
- def record_when_condition(markup)
- while markup
- # Create a new nodelist and assign it to the new block
- if not markup =~ WhenSyntax
- raise SyntaxError.new("Syntax Error in tag 'case' - Valid when condition: {% when [condition] [or condition2...] %} ")
- end
-
- markup = $2
-
- block = Condition.new(@left, '==', $1)
- block.attach(@nodelist)
- @blocks.push(block)
end
end
- def record_else_condition(markup)
+ private
+
+ def record_when_condition(markup)
+ while markup
+ # Create a new nodelist and assign it to the new block
+ if not markup =~ WhenSyntax
+ raise SyntaxError.new("Syntax Error in tag 'case' - Valid when condition: {% when [condition] [or condition2...] %} ")
+ end
+
+ markup = $2
+
+ block = Condition.new(@left, '==', $1)
+ block.attach(@nodelist)
+ @blocks.push(block)
+ end
+ end
+
+ def record_else_condition(markup)
if not markup.strip.empty?
raise SyntaxError.new("Syntax Error in tag 'case' - Valid else condition: {% else %} (no parameters) ")
end
-
- block = ElseCondition.new
+
+ block = ElseCondition.new
block.attach(@nodelist)
@blocks << block
end
-
-
- end
-
+
+
+ end
+
Template.register_tag('case', Case)
end
diff --git a/lib/liquid/tags/continue.rb b/lib/liquid/tags/continue.rb
index 267ed9f..0512a7d 100644
--- a/lib/liquid/tags/continue.rb
+++ b/lib/liquid/tags/continue.rb
@@ -8,7 +8,7 @@ module Liquid
# {% continue %}
# {% endif %}
# {% endfor %}
- #
+ #
class Continue < Tag
def interrupt
diff --git a/lib/liquid/tags/cycle.rb b/lib/liquid/tags/cycle.rb
index 9b3f342..276f9f5 100644
--- a/lib/liquid/tags/cycle.rb
+++ b/lib/liquid/tags/cycle.rb
@@ -1,5 +1,5 @@
module Liquid
-
+
# Cycle is usually used within a loop to alternate between values, like colors or DOM classes.
#
# {% for item in items %}
@@ -15,45 +15,45 @@ module Liquid
class Cycle < Tag
SimpleSyntax = /^#{QuotedFragment}+/o
NamedSyntax = /^(#{QuotedFragment})\s*\:\s*(.*)/o
-
- def initialize(tag_name, markup, tokens)
+
+ def initialize(tag_name, markup, tokens)
case markup
when NamedSyntax
- @variables = variables_from_string($2)
- @name = $1
+ @variables = variables_from_string($2)
+ @name = $1
when SimpleSyntax
@variables = variables_from_string(markup)
- @name = "'#{@variables.to_s}'"
+ @name = "'#{@variables.to_s}'"
else
raise SyntaxError.new("Syntax Error in 'cycle' - Valid syntax: cycle [name :] var [, var2, var3 ...]")
end
- super
- end
-
+ super
+ end
+
def render(context)
context.registers[:cycle] ||= Hash.new(0)
-
+
context.stack do
- key = context[@name]
+ key = context[@name]
iteration = context.registers[:cycle][key]
result = context[@variables[iteration]]
- iteration += 1
- iteration = 0 if iteration >= @variables.size
+ iteration += 1
+ iteration = 0 if iteration >= @variables.size
context.registers[:cycle][key] = iteration
- result
+ result
end
end
-
+
private
-
+
def variables_from_string(markup)
markup.split(',').collect do |var|
- var =~ /\s*(#{QuotedFragment})\s*/o
- $1 ? $1 : nil
- end.compact
+ var =~ /\s*(#{QuotedFragment})\s*/o
+ $1 ? $1 : nil
+ end.compact
end
-
+
end
-
+
Template.register_tag('cycle', Cycle)
end
diff --git a/lib/liquid/tags/decrement.rb b/lib/liquid/tags/decrement.rb
index c22318e..217d96d 100644
--- a/lib/liquid/tags/decrement.rb
+++ b/lib/liquid/tags/decrement.rb
@@ -1,5 +1,5 @@
module Liquid
-
+
# decrement is used in a place where one needs to insert a counter
# into a template, and needs the counter to survive across
# multiple instantiations of the template.
@@ -19,21 +19,21 @@ module Liquid
# Hello: -3
#
class Decrement < Tag
- def initialize(tag_name, markup, tokens)
+ def initialize(tag_name, markup, tokens)
@variable = markup.strip
- super
- end
-
+ super
+ end
+
def render(context)
value = context.environments.first[@variable] ||= 0
value = value - 1
context.environments.first[@variable] = value
value.to_s
end
-
+
private
end
-
+
Template.register_tag('decrement', Decrement)
end
diff --git a/lib/liquid/tags/ifchanged.rb b/lib/liquid/tags/ifchanged.rb
index a4406c6..c18a5c5 100644
--- a/lib/liquid/tags/ifchanged.rb
+++ b/lib/liquid/tags/ifchanged.rb
@@ -1,20 +1,20 @@
module Liquid
class Ifchanged < Block
-
+
def render(context)
- context.stack do
-
+ context.stack do
+
output = render_all(@nodelist, context)
-
+
if output != context.registers[:ifchanged]
context.registers[:ifchanged] = output
output
else
''
- end
+ end
end
end
- end
-
- Template.register_tag('ifchanged', Ifchanged)
-end
\ No newline at end of file
+ end
+
+ Template.register_tag('ifchanged', Ifchanged)
+end
diff --git a/lib/liquid/tags/increment.rb b/lib/liquid/tags/increment.rb
index e6a30ca..8626114 100644
--- a/lib/liquid/tags/increment.rb
+++ b/lib/liquid/tags/increment.rb
@@ -1,5 +1,5 @@
module Liquid
-
+
# increment is used in a place where one needs to insert a counter
# into a template, and needs the counter to survive across
# multiple instantiations of the template.
@@ -16,20 +16,20 @@ module Liquid
# Hello: 2
#
class Increment < Tag
- def initialize(tag_name, markup, tokens)
+ def initialize(tag_name, markup, tokens)
@variable = markup.strip
- super
- end
-
+ super
+ end
+
def render(context)
value = context.environments.first[@variable] ||= 0
context.environments.first[@variable] = value + 1
value.to_s
end
-
+
private
end
-
+
Template.register_tag('increment', Increment)
end
diff --git a/performance/shopify/comment_form.rb b/performance/shopify/comment_form.rb
index 52c2538..2a62f66 100644
--- a/performance/shopify/comment_form.rb
+++ b/performance/shopify/comment_form.rb
@@ -1,5 +1,5 @@
-class CommentForm < Liquid::Block
- Syntax = /(#{Liquid::VariableSignature}+)/
+class CommentForm < Liquid::Block
+ Syntax = /(#{Liquid::VariableSignature}+)/
def initialize(tag_name, markup, tokens)
if markup =~ Syntax
@@ -8,14 +8,14 @@ class CommentForm < Liquid::Block
else
raise SyntaxError.new("Syntax Error in 'comment_form' - Valid syntax: comment_form [article]")
end
-
+
super
end
- def render(context)
+ def render(context)
article = context[@variable_name]
-
- context.stack do
+
+ context.stack do
context['form'] = {
'posted_successfully?' => context.registers[:posted_successfully],
'errors' => context['comment.errors'],
@@ -25,9 +25,9 @@ class CommentForm < Liquid::Block
}
wrap_in_form(article, render_all(@nodelist, context))
end
- end
-
- def wrap_in_form(article, input)
- %Q{}
+ end
+
+ def wrap_in_form(article, input)
+ %Q{}
end
end
diff --git a/performance/shopify/database.rb b/performance/shopify/database.rb
index a4db6f6..22413be 100644
--- a/performance/shopify/database.rb
+++ b/performance/shopify/database.rb
@@ -1,45 +1,45 @@
require 'yaml'
module Database
-
- # Load the standard vision toolkit database and re-arrage it to be simply exportable
+
+ # Load the standard vision toolkit database and re-arrage it to be simply exportable
# to liquid as assigns. All this is based on Shopify
def self.tables
- @tables ||= begin
+ @tables ||= begin
db = YAML.load_file(File.dirname(__FILE__) + '/vision.database.yml')
- # From vision source
+ # From vision source
db['products'].each do |product|
collections = db['collections'].find_all do |collection|
collection['products'].any? { |p| p['id'].to_i == product['id'].to_i }
- end
- product['collections'] = collections
+ end
+ product['collections'] = collections
end
- # key the tables by handles, as this is how liquid expects it.
+ # key the tables by handles, as this is how liquid expects it.
db = db.inject({}) do |assigns, (key, values)|
assigns[key] = values.inject({}) { |h, v| h[v['handle']] = v; h; }
assigns
- end
-
- # Some standard direct accessors so that the specialized templates
+ end
+
+ # Some standard direct accessors so that the specialized templates
# render correctly
db['collection'] = db['collections'].values.first
db['product'] = db['products'].values.first
db['blog'] = db['blogs'].values.first
db['article'] = db['blog']['articles'].first
-
- db['cart'] = {
+
+ db['cart'] = {
'total_price' => db['line_items'].values.inject(0) { |sum, item| sum += item['line_price'] * item['quantity'] },
'item_count' => db['line_items'].values.inject(0) { |sum, item| sum += item['quantity'] },
'items' => db['line_items'].values
}
-
+
db
- end
+ end
end
end
if __FILE__ == $0
p Database.tables['collections']['frontpage'].keys
#p Database.tables['blog']['articles']
-end
\ No newline at end of file
+end
diff --git a/performance/shopify/json_filter.rb b/performance/shopify/json_filter.rb
index 76ff3d2..1ce7328 100644
--- a/performance/shopify/json_filter.rb
+++ b/performance/shopify/json_filter.rb
@@ -1,7 +1,7 @@
module JsonFilter
-
+
def json(object)
object.reject {|k,v| k == "collections" }.to_json
end
-
-end
\ No newline at end of file
+
+end
diff --git a/performance/shopify/money_filter.rb b/performance/shopify/money_filter.rb
index 8f1f00e..b200831 100644
--- a/performance/shopify/money_filter.rb
+++ b/performance/shopify/money_filter.rb
@@ -1,5 +1,5 @@
module MoneyFilter
-
+
def money_with_currency(money)
return '' if money.nil?
sprintf("$ %.2f USD", money/100.0)
@@ -9,10 +9,10 @@ module MoneyFilter
return '' if money.nil?
sprintf("$ %.2f", money/100.0)
end
-
- private
-
+
+ private
+
def currency
ShopDrop.new.currency
- end
-end
\ No newline at end of file
+ end
+end
diff --git a/performance/shopify/paginate.rb b/performance/shopify/paginate.rb
index b340623..a5b5c9f 100644
--- a/performance/shopify/paginate.rb
+++ b/performance/shopify/paginate.rb
@@ -3,7 +3,7 @@ class Paginate < Liquid::Block
def initialize(tag_name, markup, tokens)
@nodelist = []
-
+
if markup =~ Syntax
@collection_name = $1
@page_size = if $2
@@ -11,22 +11,22 @@ class Paginate < Liquid::Block
else
20
end
-
+
@attributes = { 'window_size' => 3 }
markup.scan(Liquid::TagAttributes) do |key, value|
@attributes[key] = value
- end
+ end
else
raise SyntaxError.new("Syntax Error in tag 'paginate' - Valid syntax: paginate [collection] by number")
end
-
+
super
end
def render(context)
@context = context
- context.stack do
+ context.stack do
current_page = context['current_page'].to_i
pagination = {
@@ -34,29 +34,29 @@ class Paginate < Liquid::Block
'current_page' => 5,
'current_offset' => @page_size * 5
}
-
- context['paginate'] = pagination
-
- collection_size = context[@collection_name].size
+
+ context['paginate'] = pagination
+
+ collection_size = context[@collection_name].size
raise ArgumentError.new("Cannot paginate array '#{@collection_name}'. Not found.") if collection_size.nil?
-
- page_count = (collection_size.to_f / @page_size.to_f).to_f.ceil + 1
+
+ page_count = (collection_size.to_f / @page_size.to_f).to_f.ceil + 1
pagination['items'] = collection_size
pagination['pages'] = page_count -1
pagination['previous'] = link('« Previous', current_page-1 ) unless 1 >= current_page
pagination['next'] = link('Next »', current_page+1 ) unless page_count <= current_page+1
pagination['parts'] = []
-
+
hellip_break = false
-
+
if page_count > 2
1.upto(page_count-1) do |page|
-
+
if current_page == page
pagination['parts'] << no_link(page)
- elsif page == 1
+ elsif page == 1
pagination['parts'] << link(page, page)
elsif page == page_count -1
pagination['parts'] << link(page, page)
@@ -68,26 +68,26 @@ class Paginate < Liquid::Block
else
pagination['parts'] << link(page, page)
end
-
+
hellip_break = false
- end
+ end
end
-
+
render_all(@nodelist, context)
end
end
-
+
private
-
+
def no_link(title)
{ 'title' => title, 'is_link' => false}
end
-
+
def link(title, page)
{ 'title' => title, 'url' => current_url + "?page=#{page}", 'is_link' => true}
end
-
+
def current_url
"/collections/frontpage"
end
-end
\ No newline at end of file
+end
diff --git a/performance/shopify/shop_filter.rb b/performance/shopify/shop_filter.rb
index c62070a..dccabc9 100644
--- a/performance/shopify/shop_filter.rb
+++ b/performance/shopify/shop_filter.rb
@@ -1,5 +1,5 @@
module ShopFilter
-
+
def asset_url(input)
"/files/1/[shop_id]/[shop_id]/assets/#{input}"
end
@@ -7,11 +7,11 @@ module ShopFilter
def global_asset_url(input)
"/global/#{input}"
end
-
+
def shopify_asset_url(input)
"/shopify/#{input}"
end
-
+
def script_tag(url)
%()
end
@@ -19,15 +19,15 @@ module ShopFilter
def stylesheet_tag(url, media="all")
%()
end
-
+
def link_to(link, url, title="")
%|#{link}|
end
-
+
def img_tag(url, alt="")
- %||
- end
-
+ %||
+ end
+
def link_to_vendor(vendor)
if vendor
link_to vendor, url_for_vendor(vendor), vendor
@@ -35,7 +35,7 @@ module ShopFilter
'Unknown Vendor'
end
end
-
+
def link_to_type(type)
if type
link_to type, url_for_type(type), type
@@ -43,56 +43,56 @@ module ShopFilter
'Unknown Vendor'
end
end
-
+
def url_for_vendor(vendor_title)
"/collections/#{vendor_title.to_handle}"
end
-
+
def url_for_type(type_title)
"/collections/#{type_title.to_handle}"
end
-
+
def product_img_url(url, style = 'small')
-
+
unless url =~ /^products\/([\w\-\_]+)\.(\w{2,4})/
raise ArgumentError, 'filter "size" can only be called on product images'
end
-
+
case style
when 'original'
- return '/files/shops/random_number/' + url
+ return '/files/shops/random_number/' + url
when 'grande', 'large', 'medium', 'compact', 'small', 'thumb', 'icon'
- "/files/shops/random_number/products/#{$1}_#{style}.#{$2}"
+ "/files/shops/random_number/products/#{$1}_#{style}.#{$2}"
else
- raise ArgumentError, 'valid parameters for filter "size" are: original, grande, large, medium, compact, small, thumb and icon '
+ raise ArgumentError, 'valid parameters for filter "size" are: original, grande, large, medium, compact, small, thumb and icon '
end
end
-
+
def default_pagination(paginate)
-
- html = []
+
+ html = []
html << %(#{link_to(paginate['previous']['title'], paginate['previous']['url'])}) if paginate['previous']
for part in paginate['parts']
if part['is_link']
- html << %(#{link_to(part['title'], part['url'])})
+ html << %(#{link_to(part['title'], part['url'])})
elsif part['title'].to_i == paginate['current_page'].to_i
- html << %(#{part['title']})
+ html << %(#{part['title']})
else
- html << %(#{part['title']})
+ html << %(#{part['title']})
end
-
+
end
html << %(#{link_to(paginate['next']['title'], paginate['next']['url'])}) if paginate['next']
html.join(' ')
end
-
+
# Accepts a number, and two words - one for singular, one for plural
# Returns the singular word if input equals 1, otherwise plural
def pluralize(input, singular, plural)
input == 1 ? singular : plural
end
-
+
end
diff --git a/performance/shopify/tag_filter.rb b/performance/shopify/tag_filter.rb
index 93de0a5..ed6f8b4 100644
--- a/performance/shopify/tag_filter.rb
+++ b/performance/shopify/tag_filter.rb
@@ -1,9 +1,9 @@
module TagFilter
-
- def link_to_tag(label, tag)
+
+ def link_to_tag(label, tag)
"#{label}"
end
-
+
def highlight_active_tag(tag, css_class='active')
if @context['current_tags'].include?(tag)
"#{tag}"
@@ -12,14 +12,14 @@ module TagFilter
end
end
- def link_to_add_tag(label, tag)
+ def link_to_add_tag(label, tag)
tags = (@context['current_tags'] + [tag]).uniq
"#{label}"
end
-
- def link_to_remove_tag(label, tag)
+
+ def link_to_remove_tag(label, tag)
tags = (@context['current_tags'] - [tag]).uniq
"#{label}"
end
-
+
end
diff --git a/performance/shopify/vision.database.yml b/performance/shopify/vision.database.yml
index 199d257..9f38c30 100644
--- a/performance/shopify/vision.database.yml
+++ b/performance/shopify/vision.database.yml
@@ -2,7 +2,7 @@
# Variants
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-product_variants:
+product_variants:
- &product-1-var-1
id: 1
title: 151cm / Normal
@@ -13,7 +13,7 @@ product_variants:
inventory_quantity: 5
option1: 151cm
option2: Normal
- option3:
+ option3:
- &product-1-var-2
id: 2
title: 155cm / Normal
@@ -24,7 +24,7 @@ product_variants:
inventory_quantity: 2
option1: 155cm
option2: Normal
- option3:
+ option3:
- &product-2-var-1
id: 3
title: 162cm
@@ -34,19 +34,19 @@ product_variants:
available: true
inventory_quantity: 3
option1: 162cm
- option2:
- option3:
+ option2:
+ option3:
- &product-3-var-1
id: 4
title: 159cm
price: 19900
weight: 1000
- compare_at_price:
+ compare_at_price:
available: true
inventory_quantity: 4
option1: 159cm
- option2:
- option3:
+ option2:
+ option3:
- &product-4-var-1
id: 5
title: 159cm
@@ -56,8 +56,8 @@ product_variants:
available: true
inventory_quantity: 6
option1: 159cm
- option2:
- option3:
+ option2:
+ option3:
- &product-1-var-3
id: 6
title: 158cm / Wide
@@ -74,12 +74,12 @@ product_variants:
title: 162cm
price: 19900
weight: 1000
- compare_at_price:
+ compare_at_price:
available: false
inventory_quantity: 0
option1: 162cm
- option2:
- option3:
+ option2:
+ option3:
- &product-3-var-3
id: 8
title: 165cm
@@ -89,8 +89,8 @@ product_variants:
available: true
inventory_quantity: 4
option1: 165cm
- option2:
- option3:
+ option2:
+ option3:
- &product-5-var-1
id: 9
title: black / 42
@@ -233,7 +233,7 @@ product_variants:
inventory_quantity: 0
option1: brown
option2: medium
- option3:
+ option3:
- &product-8-var-3
id: 22
title: brown / large
@@ -315,7 +315,7 @@ product_variants:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Products
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
+
products:
- &product-1
id: 1
@@ -327,27 +327,27 @@ products:
price_max: 31900
price_min: 23900
price_varies: true
- available: true
- tags:
+ available: true
+ tags:
- season2005
- pro
- intermediate
- - wooden
+ - wooden
- freestyle
- options:
+ options:
- Length
- - Style
+ - Style
compare_at_price: 49900
compare_at_price_max: 50900
compare_at_price_min: 49900
compare_at_price_varies: true
url: /products/arbor-draft
featured_image: products/arbor_draft.jpg
- images:
+ images:
- products/arbor_draft.jpg
- description:
+ description:
The Arbor Draft snowboard wouldn't exist if Polynesians hadn't figured out how to surf hundreds of years ago. But the Draft does exist, and it's here to bring your urban and park riding to a new level. The board's freaky Tiki design pays homage to culture that inspired snowboarding. It's designed to spin with ease, land smoothly, lock hook-free onto rails, and take the abuse of a pavement pounding or twelve. The Draft will pop off kickers with authority and carve solidly across the pipe. The Draft features targeted Koa wood die cuts inlayed into the deck that enhance the flex pattern. Now bow down to riding's ancestors.
- variants:
+ variants:
- *product-1-var-1
- *product-1-var-2
- *product-1-var-3
@@ -361,14 +361,14 @@ products:
price_max: 29900
price_min: 29900
price_varies: false
- available: true
- tags:
+ available: true
+ tags:
- season2005
- pro
- - wooden
+ - wooden
- freestyle
options:
- - Length
+ - Length
compare_at_price: 52900
compare_at_price_max: 52900
compare_at_price_min: 52900
@@ -379,29 +379,29 @@ products:
- products/element58.jpg
description:
The Element is a technically advanced all-mountain board for riders who readily transition from one terrain, snow condition, or riding style to another. Its balanced design provides the versatility needed for the true ride-it-all experience. The Element is exceedingly lively, freely initiates, and holds a tight edge at speed. Its structural real-wood topsheet is made with book-matched Koa.
- variants:
+ variants:
- *product-2-var-1
-
+
- &product-3
id: 3
- title: Comic ~ Pastel
+ title: Comic ~ Pastel
handle: comic-pastel
type: Snowboards
vendor: Technine
price: 19900
price_max: 22900
price_min: 19900
- tags:
+ tags:
- season2006
- beginner
- intermediate
- - freestyle
+ - freestyle
- purple
options:
- Length
price_varies: true
- available: true
- compare_at_price:
+ available: true
+ compare_at_price:
compare_at_price_max: 0
compare_at_price_min: 0
compare_at_price_varies: false
@@ -413,7 +413,7 @@ products:
- products/technine_detail.jpg
description:
2005 Technine Comic Series Description The Comic series was developed to be the ultimate progressive freestyle board in the Technine line. Dependable edge control and a perfect flex pattern for jumping in the park or out of bounds. Landins and progression will come easy with this board and it will help your riding progress to the next level. Street rails, park jibs, backcountry booters and park jumps, this board will do it all.
- variants:
+ variants:
- *product-3-var-1
- *product-3-var-2
- *product-3-var-3
@@ -428,12 +428,12 @@ products:
price_max: 19900
price_min: 19900
price_varies: false
- available: true
- tags:
+ available: true
+ tags:
- season2006
- beginner
- intermediate
- - freestyle
+ - freestyle
- orange
options:
- Length
@@ -448,9 +448,9 @@ products:
- products/technine4.jpg
description:
2005 Technine Comic Series Description The Comic series was developed to be the ultimate progressive freestyle board in the Technine line. Dependable edge control and a perfect flex pattern for jumping in the park or out of bounds. Landins and progression will come easy with this board and it will help your riding progress to the next level. Street rails, park jibs, backcountry booters and park jumps, this board will do it all.
- variants:
+ variants:
- *product-4-var-1
-
+
- &product-5
id: 5
title: Burton Boots
@@ -461,11 +461,11 @@ products:
price_max: 11900
price_min: 11900
price_varies: false
- available: true
- tags:
+ available: true
+ tags:
- season2006
- beginner
- - intermediate
+ - intermediate
- boots
options:
- Color
@@ -480,13 +480,13 @@ products:
- products/burton.jpg
description:
The Burton boots are particularly well on snowboards. The very best thing about them is that the according picture is cubic. This makes testing in a Vision testing environment very easy.
- variants:
+ variants:
- *product-5-var-1
- *product-5-var-2
- *product-5-var-3
- *product-5-var-4
- *product-5-var-5
- - *product-5-var-6
+ - *product-5-var-6
- &product-6
id: 6
@@ -498,17 +498,17 @@ products:
price_max: 2179500
price_min: 2179500
price_varies: false
- available: true
- tags:
+ available: true
+ tags:
- ducati
- superbike
- - bike
+ - bike
- street
- racing
- - performance
+ - performance
options:
- Color
- compare_at_price:
+ compare_at_price:
compare_at_price_max: 0
compare_at_price_min: 0
compare_at_price_varies: false
@@ -520,7 +520,7 @@ products:
‘S’ PERFORMANCE
Producing 170hp (125kW) and with a dry weight of just 169kg (372.6lb), the new 1198 S now incorporates more World Superbike technology than ever before by taking the 1198 motor and adding top-of-the-range suspension, lightweight chassis components and a true racing-style traction control system designed for road use.
The high performance, fully adjustable 43mm Öhlins forks, which sport low friction titanium nitride-treated fork sliders, respond effortlessly to every imperfection in the tarmac. Beyond their advanced engineering solutions, one of the most important characteristics of Öhlins forks is their ability to communicate the condition and quality of the tyre-to-road contact patch, a feature that puts every rider in superior control. The suspension set-up at the rear is complemented with a fully adjustable Öhlins rear shock equipped with a ride enhancing top-out spring and mounted to a single-sided swingarm for outstanding drive and traction. The front-to-rear Öhlins package is completed with a control-enhancing adjustable steering damper.
High Quality Shopify Shirt. Wear your e-commerce solution with pride and attract attention anywhere you go.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Extra comfortable zip up sweater. Durable quality, ideal for any outdoor activities.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Flagship pro D-SLR with a 12.1-MP FX-format CMOS sensor, blazing 9 fps shooting at full FX resolution and low-noise performance up to 6400 ISO.
Nikon's original 12.1-megapixel FX-format (23.9 x 36mm) CMOS sensor: Couple Nikon's exclusive digital image processing system with the 12.1-megapixel FX-format and you'll get breathtakingly rich images while also reducing noise to unprecedented levels with even higher ISOs.
Continuous shooting at up to 9 frames per second: At full FX resolution and up to 11fps in the DX crop mode, the D3 offers uncompromised shooting speeds for fast-action and sports photography.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-04 12:00
@@ -872,11 +872,11 @@ blogs:
handle: news
title: News
url: /blogs/news
- articles:
+ articles:
- id: 3
title: 'Welcome to the new Foo Shop'
author: Daniel
- content:
Welcome to your Shopify store! The jaded Pixel crew is really glad you decided to take Shopify for a spin.
To help you get you started with Shopify, here are a couple of tips regarding what you see on this page.
The text you see here is an article. To edit this article, create new articles or create new pages you can go to the Blogs & Pages tab of the administration menu.
The Shopify t-shirt above is a product and selling products is what Shopify is all about. To edit this product, or create new products you can go to the Products Tab in of the administration menu.
While you're looking around be sure to check out the Collections and Navigations tabs and soon you will be well on your way to populating your site.
And of course don't forget to browse the theme gallery to pick a new look for your shop!
Shopify is in beta If you would like to make comments or suggestions please visit us in the Shopify Forums or drop us an email.
+ content:
Welcome to your Shopify store! The jaded Pixel crew is really glad you decided to take Shopify for a spin.
To help you get you started with Shopify, here are a couple of tips regarding what you see on this page.
The text you see here is an article. To edit this article, create new articles or create new pages you can go to the Blogs & Pages tab of the administration menu.
The Shopify t-shirt above is a product and selling products is what Shopify is all about. To edit this product, or create new products you can go to the Products Tab in of the administration menu.
While you're looking around be sure to check out the Collections and Navigations tabs and soon you will be well on your way to populating your site.
And of course don't forget to browse the theme gallery to pick a new look for your shop!
Shopify is in beta If you would like to make comments or suggestions please visit us in the Shopify Forums or drop us an email.
created_at: 2005-04-04 16:00
- id: 4
title: 'Breaking News: Restock on all sales products'
@@ -884,7 +884,7 @@ blogs:
content: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-04 12:00
articles_count: 2
-
+
- id: 2
handle: bigcheese-blog
title: Bigcheese blog
@@ -896,7 +896,7 @@ blogs:
content: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-04 16:00
comments:
- -
+ -
id: 1
author: John Smith
email: john@smith.com
@@ -905,7 +905,7 @@ blogs:
created_at: 2009-01-01 12:00
updated_at: 2009-02-01 12:00
url: ""
- -
+ -
id: 2
author: John Jones
email: john@jones.com
@@ -921,22 +921,22 @@ blogs:
created_at: 2005-04-06 12:00
comments:
articles_count: 2
- comments_enabled?: true
+ comments_enabled?: true
comment_post_url: ""
comments_count: 2
- moderated?: true
+ moderated?: true
- id: 3
handle: paginated-blog
title: Paginated blog
url: /blogs/paginated-blog
- articles:
+ articles:
- id: 6
title: 'One thing you probably did not know yet...'
author: Justin
content: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-04 16:00
-
+
- id: 7
title: Fascinating
author: Tobi
diff --git a/performance/shopify/weight_filter.rb b/performance/shopify/weight_filter.rb
index cf5c8bc..3ff7c2c 100644
--- a/performance/shopify/weight_filter.rb
+++ b/performance/shopify/weight_filter.rb
@@ -3,9 +3,9 @@ module WeightFilter
def weight(grams)
sprintf("%.2f", grams / 1000)
end
-
+
def weight_with_unit(grams)
"#{weight(grams)} kg"
- end
-
-end
\ No newline at end of file
+ end
+
+end
diff --git a/performance/tests/dropify/article.liquid b/performance/tests/dropify/article.liquid
index 504eb39..dca6caa 100644
--- a/performance/tests/dropify/article.liquid
+++ b/performance/tests/dropify/article.liquid
@@ -4,7 +4,7 @@
{{ article.content }}
-
+
@@ -12,27 +12,27 @@
{% if blog.comments_enabled? %}
Comments
-
+
{% for comment in article.comments %}
-
- {{ comment.author }} said on {{ comment.created_at | date: "%B %d, %Y" }}:
+
+ {{ comment.author }} said on {{ comment.created_at | date: "%B %d, %Y" }}:
{{ comment.content }}
-
-
+
+
{% endfor %}
-
+
{% form article %}
Leave a comment
-
+
{% if form.posted_successfully? %}
{% if blog.moderated? %}
@@ -44,11 +44,11 @@
Successfully posted your comment.
{% endif %}
{% endif %}
-
+
{% if form.errors %}
Not all the fields have been filled out correctly!
{% endif %}
-
+
@@ -59,16 +59,16 @@
-
+
{% if blog.moderated? %}
comments have to be approved before showing up
- {% endif %}
+ {% endif %}
{% endform %}
-
+
{% endif %}
-
\ No newline at end of file
+
diff --git a/performance/tests/dropify/blog.liquid b/performance/tests/dropify/blog.liquid
index 3c36a32..5a800c4 100644
--- a/performance/tests/dropify/blog.liquid
+++ b/performance/tests/dropify/blog.liquid
@@ -1,33 +1,33 @@
-
-
{{page.title}}
-
- {% paginate blog.articles by 20 %}
-
- {% for article in blog.articles %}
-
-
- In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
- {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
-
- {% endif %}
-
-
-
-
- {% for article in blogs.news.articles offset:1 %}
-
-
{{ article.title }}
-
- {{ article.content }}
-
-
- {% endfor %}
-
-
+
+
Featured Items
+{% for product in collections.frontpage.products limit:1 offset:0 %}
+
+ In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
+ {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
+
+ {% endif %}
+
+
+
+
+ {% for article in blogs.news.articles offset:1 %}
+
+
{{ article.title }}
+
+ {{ article.content }}
+
+
+ {% endfor %}
+
+
diff --git a/performance/tests/dropify/page.liquid b/performance/tests/dropify/page.liquid
index dcd6399..2ccbc63 100644
--- a/performance/tests/dropify/page.liquid
+++ b/performance/tests/dropify/page.liquid
@@ -5,4 +5,4 @@
{{page.content}}
-
\ No newline at end of file
+
diff --git a/performance/tests/dropify/product.liquid b/performance/tests/dropify/product.liquid
index 12d8ea0..8870389 100644
--- a/performance/tests/dropify/product.liquid
+++ b/performance/tests/dropify/product.liquid
@@ -1,68 +1,68 @@
-
- {{ article.content }}
- {% else %}
- In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
- {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
- {% endif %}
-
-
\ No newline at end of file
+
+
Featured products...
+
+ {% for product in collections.frontpage.products %}
+
+ {{ article.content }}
+ {% else %}
+ In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
+ {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
+ {% endif %}
+
- Seems like you are looking for something that just isn't here. Try heading back to our main page. Or you can checkout some of our featured products below.
-
-
-
+
-
-
Featured Products
-
-
- {% for product in collections.frontpage.products %}
-
-
-
- {% endfor %}
+
+
+
Oh no!
+
+ Seems like you are looking for something that just isn't here. Try heading back to our main page. Or you can checkout some of our featured products below.
+
+
+
-
-
-
+
+
Featured Products
+
+
+ {% for product in collections.frontpage.products %}
+
-
\ No newline at end of file
+
diff --git a/performance/tests/vogue/article.liquid b/performance/tests/vogue/article.liquid
index a2dea57..a7196fd 100644
--- a/performance/tests/vogue/article.liquid
+++ b/performance/tests/vogue/article.liquid
@@ -3,7 +3,7 @@
- {{ article.content }}
- {% else %}
- In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
- {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
- {% endif %}
-
+
{{ article.title }}
+ {{ article.content }}
+ {% else %}
+ In Admin > Blogs & Pages, create a page with the handle frontpage and it will show up here.
+ {{ "Learn more about handles" | link_to "http://wiki.shopify.com/Handle" }}
+ {% endif %}
+
{% if collection.tags.size == 0 %}
- No tags found.{% else %}
- {% for tag in collection.tags %}{% if current_tags contains tag %} {{ tag | highlight_active_tag | link_to_remove_tag: tag }}{% else %} {{ tag | highlight_active_tag | link_to_add_tag: tag }}{% endif %}{% unless forloop.last %}, {% endunless %}{% endfor %}{% endif %}
-
- {% endif %}
+
+ {% if template == "index" %}
+ {% if blogs.news.articles.size > 1 %}
+
+
{% if collection.tags.size == 0 %}
+ No tags found.{% else %}
+ {% for tag in collection.tags %}{% if current_tags contains tag %} {{ tag | highlight_active_tag | link_to_remove_tag: tag }}{% else %} {{ tag | highlight_active_tag | link_to_add_tag: tag }}{% endif %}{% unless forloop.last %}, {% endunless %}{% endfor %}{% endif %}
+
Comments
- +{% for comment in article.comments %}-
-
- {{ comment.author }} said on {{ comment.created_at | date: "%B %d, %Y" }}:
+
+ {{ comment.author }} said on {{ comment.created_at | date: "%B %d, %Y" }}:
{{ comment.content }}
-
-
+
+
{% endfor %}
- +Leave a comment
- + {% if form.posted_successfully? %} {% if blog.moderated? %} @@ -44,11 +44,11 @@@@ -59,16 +59,16 @@
- + {% if blog.moderated? %}comments have to be approved before showing up
- {% endif %} + {% endif %} {% endform %}