URI: 
       Overhaul dependencies, this mostly builds again - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
   DIR commit 11e8b26bad69969870b96fa4f730a2873bff1e43
   DIR parent e925b0ad1a5b8ed9fbfe16bd885512f415f1e9c2
  HTML Author: HD Moore <hd_moore@rapid7.com>
       Date:   Tue,  9 Oct 2012 23:05:51 -0500
       
       Overhaul dependencies, this mostly builds again
       
       Diffstat:
         M Makefile                            |       2 +-
         M src/dtmf2num/Makefile               |       2 +-
         M web/Gemfile                         |       6 +++---
         M web/Gemfile.lock                    |     147 ++++++++++++++++---------------
         D web/vendor/plugins/dynamic_form/MI… |      20 --------------------
         D web/vendor/plugins/dynamic_form/RE… |      13 -------------
         D web/vendor/plugins/dynamic_form/Ra… |      10 ----------
         D web/vendor/plugins/dynamic_form/dy… |      12 ------------
         D web/vendor/plugins/dynamic_form/in… |       1 -
         D web/vendor/plugins/dynamic_form/li… |     300 -------------------------------
         D web/vendor/plugins/dynamic_form/li… |       8 --------
         D web/vendor/plugins/dynamic_form/li… |       5 -----
         D web/vendor/plugins/dynamic_form/te… |      43 ------------------------------
         D web/vendor/plugins/dynamic_form/te… |     371 -------------------------------
         D web/vendor/plugins/dynamic_form/te… |       9 ---------
       
       15 files changed, 82 insertions(+), 867 deletions(-)
       ---
   DIR diff --git a/Makefile b/Makefile
       @@ -14,7 +14,7 @@ dtmf2num:
                
        ruby-kissfft:
                ( cd src/ruby-kissfft/; ruby extconf.rb )
       -        make -C src/ruby-kissfft/
       +        make -C src/ruby-kissfft/ && cp src/ruby-kissfft/kissfft.so lib/
        
        db:
                @echo "Checking the database.."
   DIR diff --git a/src/dtmf2num/Makefile b/src/dtmf2num/Makefile
       @@ -7,7 +7,7 @@ all:
                $(CC) $(CFLAGS) -c dtmf2num.c
                $(CC) $(CFLAGS) -c dsp.c
                $(CC) $(CFLAGS) -c resample2.c
       -        $(CC) $(CFLAGS) -o $(EXE) $(LIBS) dtmf2num.o dsp.o resample2.o
       +        $(CC) $(CFLAGS) -o $(EXE) dtmf2num.o dsp.o resample2.o $(LIBS)
        
        clean:
                @rm -f *.o $(EXE)
   DIR diff --git a/web/Gemfile b/web/Gemfile
       @@ -1,6 +1,6 @@
        source 'http://rubygems.org'
        
       -gem 'rails', '3.0.1'
       +gem 'rails', '3.2.8'
        
        # Bundle edge Rails instead:
        # gem 'rails', :git => 'git://github.com/rails/rails.git'
       @@ -29,5 +29,5 @@ gem 'pg', '0.11'
        # end
        
        
       -gem 'will_paginate', :git => 'git://github.com/mislav/will_paginate.git', :branch => 'rails3'
       -
       +gem 'will_paginate', '~> 3.0'
       +gem 'dynamic_form'
   DIR diff --git a/web/Gemfile.lock b/web/Gemfile.lock
       @@ -1,84 +1,91 @@
       -GIT
       -  remote: git://github.com/mislav/will_paginate.git
       -  revision: b1a5beeec9f56ecbe3594fcdca76d92b6767ce50
       -  branch: rails3
       -  specs:
       -    will_paginate (3.0.pre3)
       -
        GEM
          remote: http://rubygems.org/
          specs:
       -    abstract (1.0.0)
       -    actionmailer (3.0.1)
       -      actionpack (= 3.0.1)
       -      mail (~> 2.2.5)
       -    actionpack (3.0.1)
       -      activemodel (= 3.0.1)
       -      activesupport (= 3.0.1)
       -      builder (~> 2.1.2)
       -      erubis (~> 2.6.6)
       -      i18n (~> 0.4.1)
       -      rack (~> 1.2.1)
       -      rack-mount (~> 0.6.12)
       -      rack-test (~> 0.5.4)
       -      tzinfo (~> 0.3.23)
       -    activemodel (3.0.1)
       -      activesupport (= 3.0.1)
       -      builder (~> 2.1.2)
       -      i18n (~> 0.4.1)
       -    activerecord (3.0.1)
       -      activemodel (= 3.0.1)
       -      activesupport (= 3.0.1)
       -      arel (~> 1.0.0)
       -      tzinfo (~> 0.3.23)
       -    activeresource (3.0.1)
       -      activemodel (= 3.0.1)
       -      activesupport (= 3.0.1)
       -    activesupport (3.0.1)
       -    arel (1.0.1)
       -      activesupport (~> 3.0.0)
       -    builder (2.1.2)
       -    erubis (2.6.6)
       -      abstract (>= 1.0.0)
       -    i18n (0.4.2)
       -    mail (2.2.9)
       -      activesupport (>= 2.3.6)
       -      i18n (~> 0.4.1)
       +    actionmailer (3.2.8)
       +      actionpack (= 3.2.8)
       +      mail (~> 2.4.4)
       +    actionpack (3.2.8)
       +      activemodel (= 3.2.8)
       +      activesupport (= 3.2.8)
       +      builder (~> 3.0.0)
       +      erubis (~> 2.7.0)
       +      journey (~> 1.0.4)
       +      rack (~> 1.4.0)
       +      rack-cache (~> 1.2)
       +      rack-test (~> 0.6.1)
       +      sprockets (~> 2.1.3)
       +    activemodel (3.2.8)
       +      activesupport (= 3.2.8)
       +      builder (~> 3.0.0)
       +    activerecord (3.2.8)
       +      activemodel (= 3.2.8)
       +      activesupport (= 3.2.8)
       +      arel (~> 3.0.2)
       +      tzinfo (~> 0.3.29)
       +    activeresource (3.2.8)
       +      activemodel (= 3.2.8)
       +      activesupport (= 3.2.8)
       +    activesupport (3.2.8)
       +      i18n (~> 0.6)
       +      multi_json (~> 1.0)
       +    arel (3.0.2)
       +    builder (3.0.3)
       +    dynamic_form (1.1.4)
       +    erubis (2.7.0)
       +    hike (1.2.1)
       +    i18n (0.6.1)
       +    journey (1.0.4)
       +    json (1.7.5)
       +    mail (2.4.4)
       +      i18n (>= 0.4.0)
              mime-types (~> 1.16)
              treetop (~> 1.4.8)
       -    mime-types (1.16)
       +    mime-types (1.19)
       +    multi_json (1.3.6)
            pg (0.11.0)
       -    polyglot (0.3.1)
       -    rack (1.2.1)
       -    rack-mount (0.6.13)
       -      rack (>= 1.0.0)
       -    rack-test (0.5.6)
       +    polyglot (0.3.3)
       +    rack (1.4.1)
       +    rack-cache (1.2)
       +      rack (>= 0.4)
       +    rack-ssl (1.3.2)
       +      rack
       +    rack-test (0.6.2)
              rack (>= 1.0)
       -    rails (3.0.1)
       -      actionmailer (= 3.0.1)
       -      actionpack (= 3.0.1)
       -      activerecord (= 3.0.1)
       -      activeresource (= 3.0.1)
       -      activesupport (= 3.0.1)
       -      bundler (~> 1.0.0)
       -      railties (= 3.0.1)
       -    railties (3.0.1)
       -      actionpack (= 3.0.1)
       -      activesupport (= 3.0.1)
       -      rake (>= 0.8.4)
       -      thor (~> 0.14.0)
       -    rake (0.8.7)
       -    sqlite3-ruby (1.3.2)
       -    thor (0.14.3)
       -    treetop (1.4.8)
       +    rails (3.2.8)
       +      actionmailer (= 3.2.8)
       +      actionpack (= 3.2.8)
       +      activerecord (= 3.2.8)
       +      activeresource (= 3.2.8)
       +      activesupport (= 3.2.8)
       +      bundler (~> 1.0)
       +      railties (= 3.2.8)
       +    railties (3.2.8)
       +      actionpack (= 3.2.8)
       +      activesupport (= 3.2.8)
       +      rack-ssl (~> 1.3.2)
       +      rake (>= 0.8.7)
       +      rdoc (~> 3.4)
       +      thor (>= 0.14.6, < 2.0)
       +    rake (0.9.2.2)
       +    rdoc (3.12)
       +      json (~> 1.4)
       +    sprockets (2.1.3)
       +      hike (~> 1.2)
       +      rack (~> 1.0)
       +      tilt (~> 1.1, != 1.3.0)
       +    thor (0.16.0)
       +    tilt (1.3.3)
       +    treetop (1.4.11)
       +      polyglot
              polyglot (>= 0.3.1)
       -    tzinfo (0.3.23)
       +    tzinfo (0.3.33)
       +    will_paginate (3.0.3)
        
        PLATFORMS
          ruby
        
        DEPENDENCIES
       +  dynamic_form
          pg (= 0.11)
       -  rails (= 3.0.1)
       -  sqlite3-ruby
       -  will_paginate!
       +  rails (= 3.2.8)
       +  will_paginate (~> 3.0)
   DIR diff --git a/web/vendor/plugins/dynamic_form/MIT-LICENSE b/web/vendor/plugins/dynamic_form/MIT-LICENSE
       @@ -1,20 +0,0 @@
       -Copyright (c) 2010 David Heinemeier Hansson
       -
       -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.
   DIR diff --git a/web/vendor/plugins/dynamic_form/README b/web/vendor/plugins/dynamic_form/README
       @@ -1,13 +0,0 @@
       -DynamicForm
       -===========
       -
       -DynamicForm holds a few helpers method to help you deal with your models, they are:
       -
       -* input(record, method, options = {})
       -* form(record, options = {})
       -* error_message_on(object, method, options={})
       -* error_messages_for(record, options={})
       -
       -It also adds f.error_messages and f.error_messages_on to your form builders.
       -
       -Copyright (c) 2010 David Heinemeier Hansson, released under the MIT license
   DIR diff --git a/web/vendor/plugins/dynamic_form/Rakefile b/web/vendor/plugins/dynamic_form/Rakefile
       @@ -1,10 +0,0 @@
       -require 'rake/testtask'
       -
       -desc 'Default: run unit tests.'
       -task :default => :test
       -
       -desc 'Test the active_model_helper plugin.'
       -Rake::TestTask.new(:test) do |t|
       -  t.libs << 'test'
       -  t.pattern = 'test/**/*_test.rb'
       -end
   DIR diff --git a/web/vendor/plugins/dynamic_form/dynamic_form.gemspec b/web/vendor/plugins/dynamic_form/dynamic_form.gemspec
       @@ -1,12 +0,0 @@
       -Gem::Specification.new do |s|
       -  s.name = 'dynamic_form'
       -  s.version = '1.0.0'
       -  s.author = 'David Heinemeier Hansson'
       -  s.email = 'david@loudthinking.com'
       -  s.summary = 'Deprecated dynamic form helpers: input, form, error_messages_for, error_messages_on'
       -
       -  s.add_dependency('rails', '>= 3.0.0')
       -
       -  s.files = Dir['lib/**/*']
       -  s.require_path = 'lib'
       -end
   DIR diff --git a/web/vendor/plugins/dynamic_form/init.rb b/web/vendor/plugins/dynamic_form/init.rb
       @@ -1 +0,0 @@
       -require 'dynamic_form'
   DIR diff --git a/web/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb b/web/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb
       @@ -1,300 +0,0 @@
       -require 'action_view/helpers'
       -require 'active_support/i18n'
       -require 'active_support/core_ext/enumerable'
       -require 'active_support/core_ext/object/blank'
       -
       -module ActionView
       -  module Helpers
       -    # The Active Record Helper makes it easier to create forms for records kept in instance variables. The most far-reaching is the +form+
       -    # method that creates a complete form for all the basic content types of the record (not associations or aggregations, though). This
       -    # is a great way of making the record quickly available for editing, but likely to prove lackluster for a complicated real-world form.
       -    # In that case, it's better to use the +input+ method and the specialized +form+ methods in link:classes/ActionView/Helpers/FormHelper.html
       -    module DynamicForm
       -      # Returns a default input tag for the type of object returned by the method. For example, if <tt>@post</tt>
       -      # has an attribute +title+ mapped to a +VARCHAR+ column that holds "Hello World":
       -      #
       -      #   input("post", "title")
       -      #   # => <input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />
       -      def input(record_name, method, options = {})
       -        InstanceTag.new(record_name, method, self).to_tag(options)
       -      end
       -
       -      # Returns an entire form with all needed input tags for a specified Active Record object. For example, if <tt>@post</tt>
       -      # has attributes named +title+ of type +VARCHAR+ and +body+ of type +TEXT+ then
       -      #
       -      #   form("post")
       -      #
       -      # would yield a form like the following (modulus formatting):
       -      #
       -      #   <form action='/posts/create' method='post'>
       -      #     <p>
       -      #       <label for="post_title">Title</label><br />
       -      #       <input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />
       -      #     </p>
       -      #     <p>
       -      #       <label for="post_body">Body</label><br />
       -      #       <textarea cols="40" id="post_body" name="post[body]" rows="20"></textarea>
       -      #     </p>
       -      #     <input name="commit" type="submit" value="Create" />
       -      #   </form>
       -      #
       -      # It's possible to specialize the form builder by using a different action name and by supplying another
       -      # block renderer. For example, if <tt>@entry</tt> has an attribute +message+ of type +VARCHAR+ then
       -      #
       -      #   form("entry",
       -      #     :action => "sign",
       -      #     :input_block => Proc.new { |record, column|
       -      #       "#{column.human_name}: #{input(record, column.name)}<br />"
       -      #   })
       -      #
       -      # would yield a form like the following (modulus formatting):
       -      #
       -      #   <form action="/entries/sign" method="post">
       -      #     Message:
       -      #     <input id="entry_message" name="entry[message]" size="30" type="text" /><br />
       -      #     <input name="commit" type="submit" value="Sign" />
       -      #   </form>
       -      #
       -      # It's also possible to add additional content to the form by giving it a block, such as:
       -      #
       -      #   form("entry", :action => "sign") do |form|
       -      #     form << content_tag("b", "Department")
       -      #     form << collection_select("department", "id", @departments, "id", "name")
       -      #   end
       -      #
       -      # The following options are available:
       -      #
       -      # * <tt>:action</tt> - The action used when submitting the form (default: +create+ if a new record, otherwise +update+).
       -      # * <tt>:input_block</tt> - Specialize the output using a different block, see above.
       -      # * <tt>:method</tt> - The method used when submitting the form (default: +post+).
       -      # * <tt>:multipart</tt> - Whether to change the enctype of the form to "multipart/form-data", used when uploading a file (default: +false+).
       -      # * <tt>:submit_value</tt> - The text of the submit button (default: "Create" if a new record, otherwise "Update").
       -      def form(record_name, options = {})
       -        record = instance_variable_get("@#{record_name}")
       -        record = convert_to_model(record)
       -
       -        options = options.symbolize_keys
       -        options[:action] ||= record.persisted? ? "update" : "create"
       -        action = url_for(:action => options[:action], :id => record)
       -
       -        submit_value = options[:submit_value] || options[:action].gsub(/[^\w]/, '').capitalize
       -
       -        contents = form_tag({:action => action}, :method =>(options[:method] || 'post'), :enctype => options[:multipart] ? 'multipart/form-data': nil)
       -        contents.safe_concat hidden_field(record_name, :id) if record.persisted?
       -        contents.safe_concat all_input_tags(record, record_name, options)
       -        yield contents if block_given?
       -        contents.safe_concat submit_tag(submit_value)
       -        contents.safe_concat('</form>')
       -      end
       -
       -      # Returns a string containing the error message attached to the +method+ on the +object+ if one exists.
       -      # This error message is wrapped in a <tt>DIV</tt> tag by default or with <tt>:html_tag</tt> if specified,
       -      # which can be extended to include a <tt>:prepend_text</tt> and/or <tt>:append_text</tt> (to properly explain
       -      # the error), and a <tt>:css_class</tt> to style it accordingly. +object+ should either be the name of an
       -      # instance variable or the actual object. The method can be passed in either as a string or a symbol.
       -      # As an example, let's say you have a model <tt>@post</tt> that has an error message on the +title+ attribute:
       -      #
       -      #   <%= error_message_on "post", "title" %>
       -      #   # => <div class="formError">can't be empty</div>
       -      #
       -      #   <%= error_message_on @post, :title %>
       -      #   # => <div class="formError">can't be empty</div>
       -      #
       -      #   <%= error_message_on "post", "title",
       -      #       :prepend_text => "Title simply ",
       -      #       :append_text => " (or it won't work).",
       -      #       :html_tag => "span",
       -      #       :css_class => "inputError" %>
       -      #   # => <span class="inputError">Title simply can't be empty (or it won't work).</span>
       -      def error_message_on(object, method, *args)
       -        options = args.extract_options!
       -        unless args.empty?
       -          ActiveSupport::Deprecation.warn('error_message_on takes an option hash instead of separate ' +
       -            'prepend_text, append_text, html_tag, and css_class arguments', caller)
       -
       -          options[:prepend_text] = args[0] || ''
       -          options[:append_text] = args[1] || ''
       -          options[:html_tag] = args[2] || 'div'
       -          options[:css_class] = args[3] || 'formError'
       -        end
       -        options.reverse_merge!(:prepend_text => '', :append_text => '', :html_tag => 'div', :css_class => 'formError')
       -
       -        object = convert_to_model(object)
       -
       -        if (obj = (object.respond_to?(:errors) ? object : instance_variable_get("@#{object}"))) &&
       -          (errors = obj.errors[method]).presence
       -          content_tag(options[:html_tag],
       -            (options[:prepend_text].html_safe << errors.first).safe_concat(options[:append_text]),
       -            :class => options[:css_class]
       -          )
       -        else
       -          ''
       -        end
       -      end
       -
       -      # Returns a string with a <tt>DIV</tt> containing all of the error messages for the objects located as instance variables by the names
       -      # given.  If more than one object is specified, the errors for the objects are displayed in the order that the object names are
       -      # provided.
       -      #
       -      # This <tt>DIV</tt> can be tailored by the following options:
       -      #
       -      # * <tt>:header_tag</tt> - Used for the header of the error div (default: "h2").
       -      # * <tt>:id</tt> - The id of the error div (default: "errorExplanation").
       -      # * <tt>:class</tt> - The class of the error div (default: "errorExplanation").
       -      # * <tt>:object</tt> - The object (or array of objects) for which to display errors,
       -      #   if you need to escape the instance variable convention.
       -      # * <tt>:object_name</tt> - The object name to use in the header, or any text that you prefer.
       -      #   If <tt>:object_name</tt> is not set, the name of the first object will be used.
       -      # * <tt>:header_message</tt> - The message in the header of the error div.  Pass +nil+
       -      #   or an empty string to avoid the header message altogether. (Default: "X errors
       -      #   prohibited this object from being saved").
       -      # * <tt>:message</tt> - The explanation message after the header message and before
       -      #   the error list.  Pass +nil+ or an empty string to avoid the explanation message
       -      #   altogether. (Default: "There were problems with the following fields:").
       -      #
       -      # To specify the display for one object, you simply provide its name as a parameter.
       -      # For example, for the <tt>@user</tt> model:
       -      #
       -      #   error_messages_for 'user'
       -      #
       -      # You can also supply an object:
       -      #
       -      #   error_messages_for @user
       -      #
       -      # This will use the last part of the model name in the presentation. For instance, if
       -      # this is a MyKlass::User object, this will use "user" as the name in the String. This
       -      # is taken from MyKlass::User.model_name.human, which can be overridden.
       -      #
       -      # To specify more than one object, you simply list them; optionally, you can add an extra <tt>:object_name</tt> parameter, which
       -      # will be the name used in the header message:
       -      #
       -      #   error_messages_for 'user_common', 'user', :object_name => 'user'
       -      #
       -      # You can also use a number of objects, which will have the same naming semantics
       -      # as a single object.
       -      #
       -      #   error_messages_for @user, @post
       -      #
       -      # If the objects cannot be located as instance variables, you can add an extra <tt>:object</tt> parameter which gives the actual
       -      # object (or array of objects to use):
       -      #
       -      #   error_messages_for 'user', :object => @question.user
       -      #
       -      # NOTE: This is a pre-packaged presentation of the errors with embedded strings and a certain HTML structure. If what
       -      # you need is significantly different from the default presentation, it makes plenty of sense to access the <tt>object.errors</tt>
       -      # instance yourself and set it up. View the source of this method to see how easy it is.
       -      def error_messages_for(*params)
       -        options = params.extract_options!.symbolize_keys
       -
       -        objects = Array.wrap(options.delete(:object) || params).map do |object|
       -          object = instance_variable_get("@#{object}") unless object.respond_to?(:to_model)
       -          object = convert_to_model(object)
       -
       -          if object.class.respond_to?(:model_name)
       -            options[:object_name] ||= object.class.model_name.human.downcase
       -          end
       -
       -          object
       -        end
       -
       -        objects.compact!
       -        count = objects.inject(0) {|sum, object| sum + object.errors.count }
       -
       -        unless count.zero?
       -          html = {}
       -          [:id, :class].each do |key|
       -            if options.include?(key)
       -              value = options[key]
       -              html[key] = value unless value.blank?
       -            else
       -              html[key] = 'errorExplanation'
       -            end
       -          end
       -          options[:object_name] ||= params.first
       -
       -          I18n.with_options :locale => options[:locale], :scope => [:errors, :template] do |locale|
       -            header_message = if options.include?(:header_message)
       -              options[:header_message]
       -            else
       -              locale.t :header, :count => count, :model => options[:object_name].to_s.gsub('_', ' ')
       -            end
       -
       -            message = options.include?(:message) ? options[:message] : locale.t(:body)
       -
       -            error_messages = objects.sum do |object|
       -              object.errors.full_messages.map do |msg|
       -                content_tag(:li, msg)
       -              end
       -            end.join.html_safe
       -
       -            contents = ''
       -            contents << content_tag(options[:header_tag] || :h2, header_message) unless header_message.blank?
       -            contents << content_tag(:p, message) unless message.blank?
       -            contents << content_tag(:ul, error_messages)
       -
       -            content_tag(:div, contents.html_safe, html)
       -          end
       -        else
       -          ''
       -        end
       -      end
       -
       -    private
       -
       -      def all_input_tags(record, record_name, options)
       -        input_block = options[:input_block] || default_input_block
       -        record.class.content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
       -      end
       -
       -      def default_input_block
       -        Proc.new { |record, column| %(<p><label for="#{record}_#{column.name}">#{column.human_name}</label><br />#{input(record, column.name)}</p>) }
       -      end
       -
       -      module InstanceTagMethods
       -        def to_tag(options = {})
       -          case column_type
       -            when :string
       -              field_type = @method_name.include?("password") ? "password" : "text"
       -              to_input_field_tag(field_type, options)
       -            when :text
       -              to_text_area_tag(options)
       -            when :integer, :float, :decimal
       -              to_input_field_tag("text", options)
       -            when :date
       -              to_date_select_tag(options)
       -            when :datetime, :timestamp
       -              to_datetime_select_tag(options)
       -            when :time
       -              to_time_select_tag(options)
       -            when :boolean
       -              to_boolean_select_tag(options)
       -          end
       -        end
       -
       -        def column_type
       -          object.send(:column_for_attribute, @method_name).type
       -        end
       -      end
       -
       -      module FormBuilderMethods
       -        def error_message_on(method, *args)
       -          @template.error_message_on(@object || @object_name, method, *args)
       -        end
       -
       -        def error_messages(options = {})
       -          @template.error_messages_for(@object_name, objectify_options(options))
       -        end
       -      end
       -    end
       -
       -    class InstanceTag
       -      include DynamicForm::InstanceTagMethods
       -    end
       -
       -    class FormBuilder
       -      include DynamicForm::FormBuilderMethods
       -    end
       -  end
       -end
       -
       -I18n.load_path << File.expand_path("../../locale/en.yml", __FILE__)
   DIR diff --git a/web/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml b/web/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml
       @@ -1,8 +0,0 @@
       -en:
       -  errors:
       -    template:
       -      header:
       -        one:    "1 error prohibited this %{model} from being saved"
       -        other:  "%{count} errors prohibited this %{model} from being saved"
       -      # The variable :count is also available
       -      body: "There were problems with the following fields:"
   DIR diff --git a/web/vendor/plugins/dynamic_form/lib/dynamic_form.rb b/web/vendor/plugins/dynamic_form/lib/dynamic_form.rb
       @@ -1,5 +0,0 @@
       -require 'action_view/helpers/dynamic_form'
       -
       -class ActionView::Base
       -  include DynamicForm
       -end
   DIR diff --git a/web/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb b/web/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb
       @@ -1,42 +0,0 @@
       -require 'test_helper'
       -
       -class DynamicFormI18nTest < Test::Unit::TestCase
       -  include ActionView::Context
       -  include ActionView::Helpers::DynamicForm
       -
       -  attr_reader :request
       -
       -  def setup
       -    @object = stub :errors => stub(:count => 1, :full_messages => ['full_messages'])
       -    @object.stubs :to_model => @object
       -    @object.stubs :class => stub(:model_name => stub(:human => ""))
       -
       -    @object_name = 'book_seller'
       -    @object_name_without_underscore = 'book seller'
       -
       -    stubs(:content_tag).returns 'content_tag'
       -
       -    I18n.stubs(:t).with(:'header', :locale => 'en', :scope => [:errors, :template], :count => 1, :model => '').returns "1 error prohibited this  from being saved"
       -    I18n.stubs(:t).with(:'body', :locale => 'en', :scope => [:errors, :template]).returns 'There were problems with the following fields:'
       -  end
       -
       -  def test_error_messages_for_given_a_header_option_it_does_not_translate_header_message
       -    I18n.expects(:t).with(:'header', :locale => 'en', :scope => [:errors, :template], :count => 1, :model => '').never
       -    error_messages_for(:object => @object, :header_message => 'header message', :locale => 'en')
       -  end
       -
       -  def test_error_messages_for_given_no_header_option_it_translates_header_message
       -    I18n.expects(:t).with(:'header', :locale => 'en', :scope => [:errors, :template], :count => 1, :model => '').returns 'header message'
       -    error_messages_for(:object => @object, :locale => 'en')
       -  end
       -
       -  def test_error_messages_for_given_a_message_option_it_does_not_translate_message
       -    I18n.expects(:t).with(:'body', :locale => 'en', :scope => [:errors, :template]).never
       -    error_messages_for(:object => @object, :message => 'message', :locale => 'en')
       -  end
       -
       -  def test_error_messages_for_given_no_message_option_it_translates_message
       -    I18n.expects(:t).with(:'body', :locale => 'en', :scope => [:errors, :template]).returns 'There were problems with the following fields:'
       -    error_messages_for(:object => @object, :locale => 'en')
       -  end
       -end
       -\ No newline at end of file
   DIR diff --git a/web/vendor/plugins/dynamic_form/test/dynamic_form_test.rb b/web/vendor/plugins/dynamic_form/test/dynamic_form_test.rb
       @@ -1,370 +0,0 @@
       -require 'test_helper'
       -require 'action_view/template/handlers/erb'
       -
       -class DynamicFormTest < ActionView::TestCase
       -  tests ActionView::Helpers::DynamicForm
       -
       -  def form_for(*)
       -    @output_buffer = super
       -  end
       -
       -  silence_warnings do
       -    class Post < Struct.new(:title, :author_name, :body, :secret, :written_on)
       -      extend ActiveModel::Naming
       -      include ActiveModel::Conversion
       -    end
       -
       -    class User < Struct.new(:email)
       -      extend ActiveModel::Naming
       -      include ActiveModel::Conversion
       -    end
       -
       -    class Column < Struct.new(:type, :name, :human_name)
       -      extend ActiveModel::Naming
       -      include ActiveModel::Conversion
       -    end
       -  end
       -
       -  class DirtyPost
       -    class Errors
       -      def empty?
       -        false
       -      end
       -
       -      def count
       -        1
       -      end
       -
       -      def full_messages
       -        ["Author name can't be <em>empty</em>"]
       -      end
       -
       -      def [](field)
       -        ["can't be <em>empty</em>"]
       -      end
       -    end
       -
       -    def errors
       -      Errors.new
       -    end
       -  end
       -
       -  def setup_post
       -    @post = Post.new
       -    def @post.errors
       -      Class.new {
       -        def [](field)
       -          case field.to_s
       -          when "author_name"
       -            ["can't be empty"]
       -          when "body"
       -            ['foo']
       -          else
       -            []
       -          end
       -        end
       -        def empty?() false end
       -        def count() 1 end
       -        def full_messages() [ "Author name can't be empty" ] end
       -      }.new
       -    end
       -
       -    def @post.persisted?() false end
       -    def @post.to_param() nil end
       -
       -    def @post.column_for_attribute(attr_name)
       -      Post.content_columns.select { |column| column.name == attr_name }.first
       -    end
       -
       -    silence_warnings do
       -      def Post.content_columns() [ Column.new(:string, "title", "Title"), Column.new(:text, "body", "Body") ] end
       -    end
       -
       -    @post.title       = "Hello World"
       -    @post.author_name = ""
       -    @post.body        = "Back to the hill and over it again!"
       -    @post.secret = 1
       -    @post.written_on  = Date.new(2004, 6, 15)
       -  end
       -
       -  def setup_user
       -    @user = User.new
       -    def @user.errors
       -      Class.new {
       -        def [](field) field == "email" ? ['nonempty'] : [] end
       -        def empty?() false end
       -        def count() 1 end
       -        def full_messages() [ "User email can't be empty" ] end
       -      }.new
       -    end
       -
       -    def @user.new_record?() true end
       -    def @user.to_param() nil end
       -
       -    def @user.column_for_attribute(attr_name)
       -      User.content_columns.select { |column| column.name == attr_name }.first
       -    end
       -
       -    silence_warnings do
       -      def User.content_columns() [ Column.new(:string, "email", "Email") ] end
       -    end
       -
       -    @user.email = ""
       -  end
       -
       -  def protect_against_forgery?
       -    @protect_against_forgery ? true : false
       -  end
       -  attr_accessor :request_forgery_protection_token, :form_authenticity_token
       -
       -  def setup
       -    super
       -    setup_post
       -    setup_user
       -
       -    @response = ActionController::TestResponse.new
       -  end
       -
       -  def url_for(options)
       -    options = options.symbolize_keys
       -    [options[:action], options[:id].to_param].compact.join('/')
       -  end
       -
       -  def test_generic_input_tag
       -    assert_dom_equal(
       -      %(<input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />), input("post", "title")
       -    )
       -  end
       -
       -  def test_text_area_with_errors
       -    assert_dom_equal(
       -      %(<div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div>),
       -      text_area("post", "body")
       -    )
       -  end
       -
       -  def test_text_field_with_errors
       -    assert_dom_equal(
       -      %(<div class="fieldWithErrors"><input id="post_author_name" name="post[author_name]" size="30" type="text" value="" /></div>),
       -      text_field("post", "author_name")
       -    )
       -  end
       -
       -  def test_field_error_proc
       -    old_proc = ActionView::Base.field_error_proc
       -    ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
       -      %(<div class=\"fieldWithErrors\">#{html_tag} <span class="error">#{[instance.error_message].join(', ')}</span></div>).html_safe
       -    end
       -
       -    assert_dom_equal(
       -      %(<div class="fieldWithErrors"><input id="post_author_name" name="post[author_name]" size="30" type="text" value="" /> <span class="error">can't be empty</span></div>),
       -      text_field("post", "author_name")
       -    )
       -  ensure
       -    ActionView::Base.field_error_proc = old_proc if old_proc
       -  end
       -
       -  def test_form_with_string
       -    assert_dom_equal(
       -      %(<form action="create" method="post"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>),
       -      form("post")
       -    )
       -
       -    silence_warnings do
       -      class << @post
       -        def persisted?() true end
       -        def to_param() id end
       -        def id() 1 end
       -      end
       -    end
       -
       -    assert_dom_equal(
       -      %(<form action="update/1" method="post"><input id="post_id" name="post[id]" type="hidden" value="1" /><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Update" /></form>),
       -      form("post")
       -    )
       -  end
       -
       -  def test_form_with_protect_against_forgery
       -    @protect_against_forgery = true
       -    @request_forgery_protection_token = 'authenticity_token'
       -    @form_authenticity_token = '123'
       -    assert_dom_equal(
       -      %(<form action="create" method="post"><div style='margin:0;padding:0;display:inline'><input type='hidden' name='authenticity_token' value='123' /></div><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>),
       -      form("post")
       -    )
       -  end
       -
       -  def test_form_with_method_option
       -    assert_dom_equal(
       -      %(<form action="create" method="get"><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>),
       -      form("post", :method=>'get')
       -    )
       -  end
       -
       -  def test_form_with_action_option
       -    output_buffer << form("post", :action => "sign")
       -    assert_select "form[action=sign]" do |form|
       -      assert_select "input[type=submit][value=Sign]"
       -    end
       -  end
       -
       -  def test_form_with_date
       -    silence_warnings do
       -      def Post.content_columns() [ Column.new(:date, "written_on", "Written on") ] end
       -    end
       -
       -    assert_dom_equal(
ams.jay.scot:70 /scm/warvox/commit/11e8b26bad69969870b96fa4f730a2873bff1e43.gph:881: line too long