From 625f2e9ad6e68e9fc119d9af29fbca9ecf6fa8cc Mon Sep 17 00:00:00 2001 From: Rueshyna Date: Fri, 8 Mar 2013 19:16:01 +0800 Subject: [PATCH] have done conference author filter, journal haven't been done, yet --- Gemfile | 1 + app/assets/javascripts/desktop.js | 2 +- app/assets/stylesheets/desktop.css | 3 +- .../desktop/conference_pages.js | 272 ++++++++++++------ .../desktop/conference_pages_controller.rb | 10 +- .../desktop/conference_pages_helper.rb | 7 +- .../app/models/writing_conference.rb | 2 +- .../desktop/conference_pages/_form.html.erb | 29 +- .../desktop/conference_pages/edit.html.erb | 2 +- .../desktop/conference_pages/new.html.erb | 2 +- .../desktop/journal_pages_controller.rb | 14 +- .../desktop/journal_pages_helper.rb | 4 +- .../app/models/writing_journal.rb | 2 +- .../desktop/journal_pages/_form.html.erb | 14 - 14 files changed, 217 insertions(+), 147 deletions(-) diff --git a/Gemfile b/Gemfile index ea74fd50..e752dc35 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,7 @@ gem 'exception_notification' # Send error trace gem 'execjs' gem 'jquery-rails', '2.1.4' gem 'jquery-ui-rails' +gem "select2-rails" gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git' # gem "memcached", "~> 1.4.3" diff --git a/app/assets/javascripts/desktop.js b/app/assets/javascripts/desktop.js index c55534a4..be81ab5e 100644 --- a/app/assets/javascripts/desktop.js +++ b/app/assets/javascripts/desktop.js @@ -16,4 +16,4 @@ //= require orbitdesktop //= require jquery.gridster //= require desktop/books_pages -//= require jquery.tokeninput +//= require select2 diff --git a/app/assets/stylesheets/desktop.css b/app/assets/stylesheets/desktop.css index 2ae194e5..f3d3f91e 100644 --- a/app/assets/stylesheets/desktop.css +++ b/app/assets/stylesheets/desktop.css @@ -15,4 +15,5 @@ *= require desktop/desktop-media *= require desktop/desktop-timeline *= require orbit-bar -*/ \ No newline at end of file + *= require select2 +*/ diff --git a/vendor/built_in_modules/personal_conference/app/assets/javascripts/personal_conference/desktop/conference_pages.js b/vendor/built_in_modules/personal_conference/app/assets/javascripts/personal_conference/desktop/conference_pages.js index 96a235cf..86ee0e88 100644 --- a/vendor/built_in_modules/personal_conference/app/assets/javascripts/personal_conference/desktop/conference_pages.js +++ b/vendor/built_in_modules/personal_conference/app/assets/javascripts/personal_conference/desktop/conference_pages.js @@ -1,116 +1,218 @@ orbitDesktop.prototype.initializeConferencePapers = function(target,url,cache){ // this init conference papers - this.initializeConferencePapers.formCallback = function(data){ - if(data.success){ - o.notify(data.msg,"success"); - o.sub_menu_item($("div[content-type=menu] a").eq(0)); - }else{ - o.notify(data.msg,"alert"); - } + this.initializeConferencePapers.formCallback = function(data){ + if(data.success){ + o.notify(data.msg,"success"); + o.sub_menu_item($("div[content-type=menu] a").eq(0)); + }else{ + o.notify(data.msg,"alert"); + } + } + + this.initializeConferencePapers.list = function(){ // to open list part in conference papers page + var conferenceData; + var bindHandlers = function(){ // to bind handlers for list page + o.simple_drop_down(); } - this.initializeConferencePapers.list = function(){ // to open list part in conference papers page - var conferenceData; - var bindHandlers = function(){ // to bind handlers for list page - o.simple_drop_down(); - } - - var bindSecondaryHandlers = function(){ - $("#conference_p div#paper_list a.icon-check-empty").click(function(){ - if($(this).hasClass("icon-check-empty")){ - $(this).switchClass("icon-check-empty","icon-check",0); - } else if($(this) .hasClass("icon-check")) { - $(this).switchClass("icon-check","icon-check-empty",0); - } else if($(this).hasClass("icon-star")){ - $(this).removeClass("icon-star").addClass("icon-star-empty"); - } else if($(this).hasClass("icon-star-empty")){ - $(this).removeClass("icon-star-empty").addClass("icon-star"); - } - return false; - }) - } - } - this.initializeConferencePapers.paperDelete = function(data,dom){ - var parent = dom.parent().parent(); - if(data.success){ - parent.hide("slide",function(){parent.remove();}); - o.notify(data.msg,"success"); + var bindSecondaryHandlers = function(){ + $("#conference_p div#paper_list a.icon-check-empty").click(function(){ + if($(this).hasClass("icon-check-empty")){ + $(this).switchClass("icon-check-empty","icon-check",0); + } else if($(this) .hasClass("icon-check")) { + $(this).switchClass("icon-check","icon-check-empty",0); + } else if($(this).hasClass("icon-star")){ + $(this).removeClass("icon-star").addClass("icon-star-empty"); + } else if($(this).hasClass("icon-star-empty")){ + $(this).removeClass("icon-star-empty").addClass("icon-star"); } + return false; + }) } - - this.initializeConferencePapers.editpaper = function(){ - o.highlight_sub_menu_item(1) + } + this.initializeConferencePapers.paperDelete = function(data,dom){ + var parent = dom.parent().parent(); + if(data.success){ + parent.hide("slide",function(){parent.remove();}); + o.notify(data.msg,"success"); } + } - this.initializeConferencePapers.addpaper = function(){ // to open add pages in conference papers page - var bindHandlers = function(){ // to bind handlers for add page - o.simple_drop_down(); - $('#add_plugin_file a.add').click(function(){ - var new_id = $(this).prev().attr('value'); - var old_id = new RegExp("new_writing_conference_files", "g"); - $(this).prev().attr('value', parseInt(new_id) + 1); - var x = get_html(old_id,new_id); - var newfield = $(x); - $(this).parents('table').append(newfield); - newfield.find('.action a.delete').click(function(){ - newfield.remove(); - }); - return false; + this.initializeConferencePapers.editpaper = function(){ + o.highlight_sub_menu_item(1); + var uploadFiles = function(){ + $('#add_plugin_file a.add').click(function(){ + var new_id = $(this).prev().attr('value'); + var old_id = new RegExp("new_writing_conference_files", "g"); + $(this).prev().attr('value', parseInt(new_id) + 1); + var x = get_html(old_id,new_id); + var newfield = $(x); + $(this).parents('table').append(newfield); + newfield.find('.action a.delete').click(function(){ + newfield.remove(); }); - - $('.action a.remove_existing_record').click(function(){ - $(this).next('.should_destroy').attr('value', 1); - $("tr#add_plugin_file_" + $(this).prev().attr('value')).hide(); - }); - } - bindHandlers(); + return false; + }); + $('.action a.remove_existing_record').click(function(){ + $(this).next('.should_destroy').attr('value', 1); + $("tr#add_plugin_file_" + $(this).prev().attr('value')).hide(); + }); } - this.initializeConferencePapers.conference = function(){ // to open add pages in conference papers page - var bindHandlers = function(){ // to bind handlers for add page - o.simple_drop_down(); - } - bindHandlers(); + var tokesplits = function(){ + $("#writing_conference_author_tokens").select2({ + multiple: true, + minimumInputLength: 1, + width: "300px;", + formatResult: function movieFormatResult(coAuthor) { + var markup = ""; + if (coAuthor.text !== undefined && coAuthor.email !== undefined) { + markup += coAuthor.text + " -- " + coAuthor.email; + }else if (coAuthor.email !== undefined) { + markup += coAuthor.text; + } + return markup; + }, + ajax: { + url: "/panel/personal_conference/desktop/conference_pages/new.json", + dataType: 'json', + quietMillis: 100, + tokenSeparators: [","], + data: function (search, page) { + return {q: search}; + }, + results: function (data, page) { + return {results: data.results}; + } + }, + }); + + $("#writing_conference_author_tokens").select2("container").find("ul.select2-choices").sortable({ + containment: 'parent', + start: function() { $("#writing_conference_author_tokens").select2("onSortStart"); }, + update: function() { $("#writing_conference_author_tokens").select2("onSortEnd"); } + }); } - this.initializeConferencePapers.coAuthorformCallback = function(data){ - if(data.success){ - o.notify(data.msg,"success"); - o.sub_menu_item($("div[content-type=menu] a").eq(3)); - }else{ - o.notify(data.msg,"alert"); - } + var preData = function(){ + $("#writing_conference_author_tokens").select2('data', JSON.parse($("#writing_conference_author_tokens").attr('data-pre'))); + } + + uploadFiles(); + tokesplits(); + preData(); + } + + this.initializeConferencePapers.addpaper = function(){ // to open add pages in conference papers page + var uploadFiles = function(){ + $('#add_plugin_file a.add').click(function(){ + var new_id = $(this).prev().attr('value'); + var old_id = new RegExp("new_writing_conference_files", "g"); + $(this).prev().attr('value', parseInt(new_id) + 1); + var x = get_html(old_id,new_id); + var newfield = $(x); + $(this).parents('table').append(newfield); + newfield.find('.action a.delete').click(function(){ + newfield.remove(); + }); + return false; + }); + $('.action a.remove_existing_record').click(function(){ + $(this).next('.should_destroy').attr('value', 1); + $("tr#add_plugin_file_" + $(this).prev().attr('value')).hide(); + }); + } + + console.log("hi"); + var bindHandlers = function(){ + o.simple_drop_down(); + } + + var tokesplits = function(){ + $("#writing_conference_author_tokens").select2({ + multiple: true, + minimumInputLength: 1, + width: "300px;", + formatResult: function movieFormatResult(coAuthor) { + var markup = ""; + if (coAuthor.text !== undefined && coAuthor.email !== undefined) { + markup += coAuthor.text + " -- " + coAuthor.email; + }else if (coAuthor.email !== undefined) { + markup += coAuthor.text; + } + return markup; + }, + ajax: { + url: "/panel/personal_conference/desktop/conference_pages/new.json", + dataType: 'json', + quietMillis: 100, + tokenSeparators: [","], + data: function (search, page) { + return {q: search}; + }, + results: function (data, page) { + return {results: data.results}; + } + }, + }); + + $("#writing_conference_author_tokens").select2("container").find("ul.select2-choices").sortable({ + containment: 'parent', + start: function() { $("#writing_conference_author_tokens").select2("onSortStart"); }, + update: function() { $("#writing_conference_author_tokens").select2("onSortEnd"); } + }); + } + + bindHandlers(); + uploadFiles(); + tokesplits(); + } + + this.initializeConferencePapers.conference = function(){ // to open add pages in conference papers page + var bindHandlers = function(){ // to bind handlers for add page + o.simple_drop_down(); + } + bindHandlers(); + } + + this.initializeConferencePapers.coAuthorformCallback = function(data){ + if(data.success){ + o.notify(data.msg,"success"); + o.sub_menu_item($("div[content-type=menu] a").eq(3)); + }else{ + o.notify(data.msg,"alert"); + } + } + this.initializeConferencePapers.coauthor = function(){ // to open add pages in coauthor page + var bindHandlers = function(){ // to bind handlers for add page + o.simple_drop_down(); } - this.initializeConferencePapers.coauthor = function(){ // to open add pages in coauthor page - var bindHandlers = function(){ // to bind handlers for add page - o.simple_drop_down(); - } bindHandlers(); } this.initializeConferencePapers.coauthorRelationForm = function(data){ if(data.success){ - o.notify(data.msg,"success"); - $("#co_author_relation_table").html(data.newvalue); - }else{ - o.notify(data.msg,"alert"); + o.notify(data.msg,"success"); + $("#co_author_relation_table").html(data.newvalue); + }else{ + o.notify(data.msg,"alert"); } } this.initializeConferencePapers.coauthorRelationEditForm = function(data){ if(data.success){ - o.notify(data.msg,"success"); - $("#co_author_relation_table").html(data.newvalue); - }else{ - o.notify(data.msg,"alert"); + o.notify(data.msg,"success"); + $("#co_author_relation_table").html(data.newvalue); + }else{ + o.notify(data.msg,"alert"); } } - this.initializeConferencePapers.allnone = function(d,o){ + this.initializeConferencePapers.allnone = function(d,o){ switch(o.attr("href")){ case "all": $("div.overview a.icon-check-empty").removeClass("icon-check-empty").addClass("icon-check"); - break; + break; case "none": $("div.overview a.icon-check").removeClass("icon-check").addClass("icon-check-empty"); - break; + break; } - } + } }; diff --git a/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_pages_controller.rb b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_pages_controller.rb index a257719b..935e05df 100644 --- a/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_pages_controller.rb +++ b/vendor/built_in_modules/personal_conference/app/controllers/panel/personal_conference/desktop/conference_pages_controller.rb @@ -32,19 +32,19 @@ class Panel::PersonalConference::Desktop::ConferencePagesController < Applicatio WritingConference.where(create_user_id: current_user.id).map{|j|j.conference_title}.uniq if (not params[:q].nil?) and (current_user.name.include?params[:q]) - @user = [{ :id => 0, :name => current_user.name}] # self account name + @user = [{ :id => 0, :text => current_user.name, :email => current_user.email}] # self account name else @user = [] end @co_authors = ConferenceCoAuthor.where(name_id: current_user.id, :co_author => /#{params[:q]}/) - @co_authors = [{ :id => params[:q], :name => params[:q] }] + # search string - @user + # self account name - @co_authors.map{|m| { :id => m.id, :name => m.co_author } } # match pattern + @co_authors = [{ :id => params[:q], :text => params[:q], :email => "#{t("add")}#{t("author")}" }] + # search string + @user + # self account name + @co_authors.map{|m| { :id => m.id, :text => m.co_author, :email => m.email } } # match pattern respond_to do |format| format.html { render :layout => false} - format.json { render :json => @co_authors.to_json } + format.json { render :json => {:results => @co_authors}.to_json } end end diff --git a/vendor/built_in_modules/personal_conference/app/helpers/panel/personal_conference/desktop/conference_pages_helper.rb b/vendor/built_in_modules/personal_conference/app/helpers/panel/personal_conference/desktop/conference_pages_helper.rb index 447370eb..85b6156e 100644 --- a/vendor/built_in_modules/personal_conference/app/helpers/panel/personal_conference/desktop/conference_pages_helper.rb +++ b/vendor/built_in_modules/personal_conference/app/helpers/panel/personal_conference/desktop/conference_pages_helper.rb @@ -83,12 +83,13 @@ module Panel::PersonalConference::Desktop::ConferencePagesHelper def generate_authors_name ids author_name = ids.map{|m| if m == "0" - {:id => 0, :name => current_user.name} + #{:id => 0, :text => current_user.name, :email => current_user.email } + {:id => 0, :text => current_user.name } else - {:id => m, :name => ConferenceCoAuthor.find(m).co_author} + #{:id => m, :text => ConferenceCoAuthor.find(m).co_author, :email => ConferenceCoAuthor.find(m).email} + {:id => m, :text => ConferenceCoAuthor.find(m).co_author} end } - author_name.to_json end end diff --git a/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb b/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb index c74eccbc..fc14f64e 100644 --- a/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb +++ b/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb @@ -49,7 +49,7 @@ class WritingConference def author_tokens=(ids) authors_ids = ids.split(",").map{|id| begin - ConferenceCoAuthor.find(m).id + ConferenceCoAuthor.find(id).id rescue if id != "0" new_co_author = ConferenceCoAuthor.new(:co_author => id, :name_id => create_user_id) diff --git a/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_pages/_form.html.erb b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_pages/_form.html.erb index 1fc2679b..87e9fe9e 100644 --- a/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_pages/_form.html.erb +++ b/vendor/built_in_modules/personal_conference/app/views/panel/personal_conference/desktop/conference_pages/_form.html.erb @@ -1,9 +1,8 @@
- <%= f.submit t("save"), name: "commit", value: "Save", class: "fn_btn ini_input hp hh1 thmc2 thmtxt" %> - + <%= f.submit t("save"), name: "commit", class: "fn_btn ini_input hp hh1 thmc2 thmtxt" %> <% if not @writing_conference.new_record? %> - <%= submit_tag t("cancel"), :type => "button", "ajax-remote" => "get", :href => panel_personal_conference_desktop_conference_pages_path, class: "bt-cancel ini_input hp hh1 thmadm thmtxt" %> + <%= submit_tag t("cancel"), :type => "button", "ajax-remote" => "get", :href => panel_personal_conference_desktop_conference_pages_path, class: "ini_input hp hh1 thmadm thmtxt" %> <% end %>
@@ -26,8 +25,7 @@
-
-
+
@@ -100,14 +98,12 @@
  • <%= label_tag("", t("personal_conference.url"), class: "s_grid_2 s_grid") %><%= f.text_field :url, size: "20", placeholder: "www.sample.com", class: "s_grid_4 s_grid"%>
  • -
    • - <%= f.label :author_tokens, t("personal_conference.authors") %>
      <%= f.text_area :author_tokens, class: "s_grid_6 s_grid", size: "20x2", @@ -209,25 +205,6 @@ - <%= stylesheet_link_tag "token-input-facebook" %> - <%= javascript_include_tag :defaults, "jquery.tokeninput" %> - - - - -