MiraitSystems/enju_trunk

View on GitHub
app/views/manifestations/index.html.erb

Summary

Maintainability
Test Coverage
<!--[if IE 9]> <div class="ie9"> <![endif]-->
<script>
<!--
  $(document).ready(function() {
    $('#sort_plan').change(function() {
      url = "<%= url_for(:controller => :manifestations,:action => :index) %>";

      var sort_plan = $('#sort_plan').val();
      url += "?sort_plan=" + sort_plan;

      var parameter = location.search;
      parameter = parameter.substring(1, parameter.length);  
      parameter = decodeURIComponent(parameter);
      parameters = parameter.split('&');
      var fix_parameter = "";
      for(var i = 0; i < parameters.length; i++) {
        if (!parameters[i].match(/^sort_plan=|^page=/))
          fix_parameter += "&" + parameters[i];
      }
      if (fix_parameter != null)
        url += fix_parameter;

      location.href = url;
    });
    $('#per_page').change(function() {
      url = "<%= url_for(:controller => :manifestations,:action => :index) %>";

      var per_page = $('#per_page').val();
      url += "?per_page=" + per_page;

      var parameter = location.search;
      parameter = parameter.substring(1, parameter.length);  
      parameter = decodeURIComponent(parameter);
      parameters = parameter.split('&');
      var fix_parameter = "";
      for(var i = 0; i < parameters.length; i++) {
        if (!parameters[i].match(/^per_page=|^page=/))
          fix_parameter += "&" + parameters[i];
      }
      if (fix_parameter != null)
        url += fix_parameter;

      location.href = url;
    });
  });
-->
</script>

<script id = "key_controll">
$(document).ready(function() {
  var first_focus = document.getElementsByClassName("search_form");
  first_focus[0].focus();
  
  $('table.container').on('focus', 'tr', function() {
    $this = $(this);
    $this.addClass('active').siblings().removeClass('active');
    $this.closest('table.container').scrollTop($this.index() * $this.outerHeight());
  }).on('keydown', 'tr', function(e) {
    $this = $(this);
    switch(e.keyCode){
      case 40: //↓
        $this.next().focus();
        return false;
        break;
      case 38: //↑
        $this.prev().focus();
        return false;
        break;
      case 37: //←
        <% move_page = 0 %>
        <% move_page = params[:page].to_i if params[:page] %>
        //今のページを取得
        var now_page = "page="+ <%=move_page%>;
        var new_page = "page="+ <%=move_page - 1%>;
        var page_address = location.href;
        //現在のページが「取得できない」or「1」の場合
        if (now_page == "page=0" || now_page == "page=1"){ 
        } else {
          var new_address = page_address.replace(now_page, new_page);
          location.href = new_address;
        }
        return false;
        break;
      case 39: //→
        <% move_page = 0 %>
        <% move_page = params[:page].to_i if params[:page] %>
        <% end_page = 0 %>
        <% end_page = @manifestations.num_pages if @manifestations.try(:num_pages) %>
        //今のページを取得
        var now_page = "page="+ <%=move_page %>;
        var new_page = "page="+ <%=move_page + 1 %>;
        var last_page = "page="+ <%=end_page %> 
        var page_address = location.href;
        //現在のページが「取得できない」場合
        if (now_page == "page=0"){
          //ページ上限での処理
          if (last_page == "page=1") {
          } else {
            new_page = "page="+ <%=move_page + 2 %>;
            var address = location.search;
            var search_address = address.replace("?", "?"+ new_page + "&");
            location.search = search_address;
          }
        } else {
          //ページ上限での処理
          if (now_page == last_page) {
          } else {
            var new_address = page_address.replace(now_page, new_page);
            location.href = new_address;
          }
        }
        return false;
        break;
      case 13: //enter
        var tags = document.getElementsByClassName('active');
        var manifestation_tag = tags[0].getAttribute('name');
        var page_address = location.href;
        if (page_address.match(/works?/)) {
          var page_pathname = location.pathname;
          page_pathname = "manifestations/" + manifestation_tag;
          location.pathname = page_pathname;
        } else {
          var new_address = page_address.replace("manifestations?", "manifestations/" + manifestation_tag + "?");
          location.href = new_address;
        }
        return false;
        break;
    }
  <%- if SystemConfiguration.get('focus_start_position') -%>
  }).find('tr').first().focus();
  <% else %>
  })
  <% end %>
  //外側をクリックしたときに枠を外す
  $listover = false;
  $(document).click(function(){
      if ($listover) {}
      else{
        var tags = document.getElementsByClassName('active');
        if ($(tags).size()){
          var manifestation_tag = tags[0].getAttribute('id');
          $("#"+ manifestation_tag).removeClass('active');
        }
      }
  });
  $("#list").hover(function () {$listover = true;},function () {$listover = false;});
});
</script>

<%- unless params[:index] && params[:index] == 'nacsis' -%>
<div id="facet_menu" class="ui-corner-all">
  <%- if @manifestations && (@manifestations.total_count > 0) -%>
    <h4 class="title"><%= t('page.result_filters') %></h4>
    <%- if @subject %>
      <h4><%= t('activerecord.models.subject') %></h4>
      <ul>
        <li><%= @subject.term %></li>
        <li><%= link_to t('page.remove_this_facet'), manifestations_path(params.merge(:subject_id => nil)) %></li>
      </ul>
    <%- end -%>
    <%= render 'manifestations/all_facet' -%>
    <br />
  <%- end -%>
  <% if @series_statement and can?(:update, @series_statement) %>
    <%= render 'submenu_series_statement' %>
  <% end %>
  <%- if params[:library_id].blank? -%>
    <%= link_to (image_tag 'icons/feed.png', :size => '16x16', :alt => t('page.feed'), :title => t('tooltip.feed'), :class => 'icon'), url_for(params.merge(:format => :rss, :page => nil, :library_id => nil)) -%> <%= link_to t('page.search_result_feed'), url_for(params.merge(:format => :rss, :page => nil, :library_id => nil, :commit => nil)) -%>
  <%- else -%>
    <%= link_to (image_tag 'icons/feed.png', :size => '16x16', :alt => t('page.feed'), :title => t('tooltip.feed'), :class => 'icon'), url_for(params.merge(:format => :rss, :page => nil)) -%> <%= link_to t('page.search_result_feed'), url_for(params.merge(:format => :rss, :page => nil, :commit => nil)) -%>
  <%- end -%>
  <% if user_signed_in? and current_user.has_role?('Librarian') %>
    <h5 style='margin-top:15px;'><%= t('tooltip.icons_info') -%></h5>
    <ul>
      <li><%= image_tag('icons/book_edit.png', :size => '16x16', :alt => t('page.edit'), :title => t('tooltip.book_edit')) -%>:&nbsp;<%=t('page.edit')-%></li>
      <li><%= image_tag('icons/arrow_divide.png', :size => '16x16', :alt => t('manifestation.add_derivation'), :title => t('tooltip.add_derivation')) -%>:&nbsp;<%=t('manifestation.add_derivation')-%></li>
    </ul>
  <% end %>
</div>
<%- end -%>

<div id="search_result" class="ui-corner-all">
<div id="content_list_search_result">
  <div style="color: green"><%= flash[:message] || flash[:notice] -%></div>
  <%= render 'manifestations/title', :manifestation => @manifestation if @manifestation -%>
  <% if @basket %>
    <p id="basket_count"><%= t('basket.show_basket', :count => @basket.try(:checked_manifestations).try(:size)) %></p>
    <%= link_to t('basket.out'), manifestations_path %>
  <% end %>
  <div id="container">
  <%= render 'index_form' %>
  </div>
  <% if @series_statement %>
    <%= render 'show_series_statement' %>
  <% end %>

<%- if params[:index] && params[:index] == 'nacsis' -%>

    <div>
      <div style="float: right;">
        <%= t('activerecord.attributes.manifestation.per_page') %>: 
        <%= select_tag("per_page", options_for_select(per_pages, @per_page)) %>
      </div>
      <br style="clear: both;"/>
    </div>
      <%- if SystemConfiguration.get('nacsis.search_each') -%>
        <p>
          <strong><%= t('page.number_of_nacsis_book_search_results', :count => @count[:query_result_book]) -%></strong>
        </p>
        <%- if @manifestations_book && (@manifestations_book.count > 0) -%>
          <div class="autopagerize_page_element" id="list">
          <%= render 'manifestations/list_nacsis', :manifestations => @manifestations_book, :type => "book" -%>
          </div>
        <%- else -%>
          <%= render 'manifestations/not_found' -%>
        <%- end -%>
        <p>
          <strong><%= t('page.number_of_nacsis_serial_search_results', :count => @count[:query_result_serial]) -%></strong>
        </p>
        <%- if @manifestations_serial && (@manifestations_serial.count > 0) -%>
          <div class="autopagerize_page_element" id="list">
          <%= render 'manifestations/list_nacsis', :manifestations => @manifestations_serial, :type => "serial" -%>
          </div>
        <%- else -%>
          <%= render 'manifestations/not_found' -%>
        <%- end -%>
      <%- else -%>
        <p>
          <strong><%= t('page.number_of_nacsis_book_search_results', :count => @count[:query_result]) -%></strong>
        </p>
        <%- if @manifestations && (@manifestations.total_count > 0) -%>
          <div class="autopagerize_page_element" id="list">
          <%= render 'manifestations/list_nacsis', :manifestations => @manifestations, :type => "book" -%>
          </div>
        <%- else -%>
          <%= render 'manifestations/not_found' -%>
        <%- end -%>
      <%- end -%>

<%- else -%>

  <%- if @manifestations && (@manifestations.total_count > 0) -%>
    <p>
      <%= t('page.number_of_search_results', :count => @count[:query_result]) -%>
      <%- if @count[:query_result] > SystemConfiguration.get("max_number_of_results") -%>
        <br />
        <%= t('page.limit_exceeded', :count => SystemConfiguration.get("max_number_of_results")) -%>
      <%- end -%>
    </p>

    <div>
      <div style="float: right;">
        <%= t('activerecord.attributes.item_list.sort_by') %>: 
        <%= select_tag("sort_plan", options_for_select(@sort_plan, :selected => @sort_plan_id)) %>
        <%= t('activerecord.attributes.manifestation.per_page') %>: 
        <%= select_tag("per_page", options_for_select(per_pages, @per_page)) %>
      </div>
      <br style="clear: both;"/>
    </div>

    <%- @manifestations_all.each_with_index do |m, i| -%>
      <%- next if @binder && m == @manifestations_article %>
      <%- next if SystemConfiguration.get('manifestations.split_by_type') && i == 0 -%>
      <div class="search_results_header">
        <strong>
          <%= m == @manifestations_article ? t('page.search_article_results') :  t('page.search_results') %>
          <% if SystemConfiguration.get("manifestations.users_show_output_button") or (user_signed_in? and current_user.has_role?('Librarian')) %>
            &nbsp;
            <button id="<%= m == @manifestations_article ? 'excelx_article_dialog_opener' : 'excelx_book_dialog_opener'%>">
              <%= t('page.output', :model => t('page.search_result')) %>
            </button>
          <% end %>
        </strong>
      </div>
      <%- if m && (m.count > 0) -%>
        <div class="autopagerize_page_element" id="list">
        <%= render 'manifestations/list', :manifestations => m -%>
        </div>
      <%- else -%>
        <%= render 'manifestations/not_found' -%>
      <%- end -%>
    <%- end -%>
    <% if defined?(EnjuBookmark) %>
      <div id="tag_cloud">
        <h3><%= t('activerecord.models.tag') -%></h3>
        <div id="tag_cloud_list"></div>
        <%= image_tag 'spinner.gif', :id => 'spinner_tag_cloud',
          :style => 'padding-bottom: 15px; padding-left: 40px;' -%>
      </div>
    <% end %>
  <%- else -%>
    <!-- TODO: 検索結果が少ない場合にも表示させる -->
    <%- if @suggested_tag -%>
      <p><%= t('page.did_you_mean') -%>: <%= link_to @suggested_tag.name, manifestations_path(:tag => @suggested_tag.name) -%></p>
    <%- end -%>
    <%= render 'manifestations/not_found' -%>
  <%- end -%>

<%- end -%>

    <div class="autopagerize_insert_before"></div>

  </div>
</div>


<% if defined?(EnjuBookmark) %>
  <script type="text/javascript">
    window.onload = function() {
      $("#tag_cloud_list").load('<%= url_for(params.merge(:view => "tag_cloud")) -%>', null, hideTagCloudSpinner);
    }

    function hideTagCloudSpinner(){
      $("#spinner_tag_cloud").hide();
    }
<% end %>
</script>
<!--[if IE 9]> </div> <![endif]-->