require 'amrita/template'

module CommonView

  module BoardList
    include Amrita::ExpandByMember
  end

  module Category
    include Amrita::ExpandByMember
  end

  module Board
    def header_title
      name
    end

    def title
      name
    end

    def message
      path = bbs.data_path(key, "message.html")
      if File::readable?(path)
        noescape { File::open(path).read }
      else
        nil
      end
    end

    def advertize1
      bbs.advertize_random
    end

    def advertize2
      bbs.advertize_random
    end

    def advertize3
      bbs.advertize_random
    end

    def to_top
      a(:href=>loc.to_top)
    end

    def newthread_form
      a(:action =>$amritabbs_config[:script_name]) do
        {
          :theme=>a(:value=>loc.theme),
          :board=>a(:value=>@key) 
        }
      end
    end
  end

  module BBSThreadTitle
    def link1
      if has_summary
        a(:href=>loc.to_thread(threadid).get_last(50)) { "#{num}:" } 
      else
        a(:href=>loc.to_thread(threadid).get_last(50)) { "#{num}: #{title}" } 
      end
    end

    def link2
      if has_summary
        a(:href=>"##{num}") { title } 
      end
    end
  end

  module BBSThread
    def label
      a(:name=>num) 
    end

    def to_prev
      prev = num - 1
      prev = $amritabbs_config[:max_thread_summary] if prev == 0
      a(:href=>"##{prev}")
    end

    def to_next
      next_ = num + 1
      next_ = 1 if next_ == $amritabbs_config[:max_thread_summary]
      a(:href=>"##{next_}")
    end

    def num_of_article
      articles.size
    end

    def article1
      articles[0]
    end

    def summary_articles
      if articles.size > 10
        [articles[0]] + articles[-10..-1]
      else
        articles
      end
    end

    def navi_all
      a(:href=>loc.to_thread(threadid).get_all)
    end

    def navi_l50
      a(:href=>loc.to_thread(threadid).get_last(50))
    end

    def navi_100
      a(:href=>loc.to_thread(threadid).get_range(1,100))
    end

    def navi_reload
      a(:href=>loc)
    end

    def navi_by100
      (0..(@articles_num/100)).collect do |n|
        a(:href=>loc.get_range(n*100+1, n*100+100)) { "#{n*100+1}-" } 
      end
    end

    def navi_prev
      cur = loc.start.to_i
      if cur > 100
        a(:href=>loc.get_range(cur-100, cur))
      end
    end

    def navi_next
      cur = loc.to.to_i
      if cur + 100 < @articles_num
        a(:href=>loc.get_range(cur, cur+100))
      end
    end

    def navi_new
      a(:href=>loc.get_range(@articles_num, nil))
    end

    def navi_board
      a(:href=>loc.to_board(board.key))
    end

    def newarticle_form
      a(:action =>$amritabbs_config[:script_name]) do
        { 
          :theme=>a(:value=>loc.theme),
          :board_key=>a(:value=>loc.board),
          :thread=>a(:value=>threadid)
        }
      end
    end
  end

  module Article
    def name_with_mail
      a(:href=>"mailto:#{mail}") { name }
    end
  end
end