Merge commit '975523c8b2d886805a3622e3ef23b2f398722d45' into app_config

This commit is contained in:
Matthew K. Fu JuYuan 2012-09-24 14:14:13 +08:00
commit fb3364b28e
424 changed files with 11780 additions and 83 deletions

View File

@ -4,7 +4,7 @@ class Admin::PluginsController < ApplicationController
def index def index
@module_apps = ModuleApp.excludes(widgets: nil).where(has_plugin: true).order_by(:title, :asc) @plugins = ModuleApp.where(has_plugin: true).order_by(:title, :asc)
end end

View File

@ -0,0 +1,30 @@
module Admin::PluginHelper
def render_plugin_list
ret = ''
ret << "<div class=\"subnav\">"
ret << "<div id=\"module-nav\">"
ret << "<div class=\"arrow_next pull-right\"><i class=\"icon-chevron-right\"></i></div>"
ret << "<div class=\"arrow_prev pull-left\"><i class=\"icon-chevron-left\"></i></div>"
ret << "<div class=\"module-nav-view\">"
ret << "<ul class=\"nav nav-pills\">"
@plugins.each do |plugin|
ret << "<li>"
ret << (link_to eval("#{plugin.title}") , eval("panel_#{plugin.title}_back_end_#{plugin.object}s_path"))
ret << "</li>"
end
ret << "</ul>"
ret << "</div>"
ret << "</div>"
ret << "</div>"
ret.html_safe
end
end

View File

@ -1,27 +0,0 @@
<div id="module-nav">
<div class="arrow_next pull-right"><i class="icon-chevron-right"></i></div>
<div class="arrow_prev pull-left"><i class="icon-chevron-left"></i></div>
<div class="module-nav-view">
<ul class="nav nav-pills">
<li class="active">
<a href="#">All</a>
</li>
<li><a href="#">學歷</a></li>
<li><a href="#">經歷</a></li>
<li><a href="#">研究計畫</a></li>
<li><a href="#">期刊論文</a></li>
<li><a href="#">學歷</a></li>
<li><a href="#">經歷</a></li>
<li><a href="#">研究計畫</a></li>
<li><a href="#">期刊論文</a></li>
<li><a href="#">學歷</a></li>
<li><a href="#">經歷</a></li>
<li><a href="#">研究計畫</a></li>
<li><a href="#">期刊論文</a></li>
<li><a href="#">學歷</a></li>
<li><a href="#">經歷</a></li>
<li><a href="#">期刊論文</a></li>
</ul>
</div>
</div>

View File

@ -1,4 +1,2 @@
<div class="subnav"> <%= render_plugin_list %>
<%= render :partial => 'plugin', :collection => @plugins %>
</div>

View File

@ -157,6 +157,41 @@
<% end -%> <% end -%>
<%= content_tag :li, :class => (active_for_controllers('researchs', '/panel/personal_research/back_end/tags', 'research_categorys', 'approvals') || active_for_app_auth('PersonalJournal') ) do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-personal_research') + t('admin.personal_research'), panel_personal_research_back_end_researchs_path %>
<%= content_tag :ul, :class => ("nav nav-list " + (visible_for_controllers('researchs', '/panel/personal_research/back_end/tags', 'research_categorys', 'approvals'))) do -%>
<%= content_tag :li, link_to(t('personal_research.all_articles'), panel_personal_research_back_end_researchs_path), :class => active_for_action('researchs', 'index') %>
<%#= content_tag :li, link_to(t('personal_research.setting'), panel_personal_research_back_end_research_setting_path), :class => active_for_action('research_setting', 'index') %>
<%= content_tag :li, link_to(t('personal_research.tags'), panel_personal_research_back_end_tags_path), :class => active_for_action('/panel/personal_research/back_end/tags', 'index') %>
<% end -%>
<% end -%>
<%= content_tag :li, :class => (active_for_controllers('projects', '/panel/personal_project/back_end/tags', 'project_categorys', 'approvals') || active_for_app_auth('PersonalJournal') ) do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-personal_project') + t('admin.personal_project'), panel_personal_project_back_end_projects_path %>
<%= content_tag :ul, :class => ("nav nav-list " + (visible_for_controllers('projects', '/panel/personal_project/back_end/tags', 'project_categorys', 'approvals'))) do -%>
<%= content_tag :li, link_to(t('personal_project.all_articles'), panel_personal_project_back_end_projects_path), :class => active_for_action('projects', 'index') %>
<%= content_tag :li, link_to(t('personal_project.setting'), panel_personal_project_back_end_project_setting_path), :class => active_for_action('project_setting', 'index') %>
<%= content_tag :li, link_to(t('personal_project.project_category'), panel_personal_project_back_end_project_categorys_path), :class => active_for_action('project_categorys', 'index') %>
<%= content_tag :li, link_to(t('personal_project.tags'), panel_personal_project_back_end_tags_path), :class => active_for_action('/panel/personal_project/back_end/tags', 'index') %>
<% end -%>
<% end -%>
<%= content_tag :li, :class => (active_for_controllers('writing_patents', '/panel/personal_patent/back_end/tags', 'writing_patent_categorys', 'approvals') || active_for_app_auth('PersonalJournal') ) do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-personal_patent') + t('admin.personal_patent'), panel_personal_patent_back_end_writing_patents_path %>
<%= content_tag :ul, :class => ("nav nav-list " + (visible_for_controllers('writing_patents', '/panel/personal_patent/back_end/tags', 'writing_patent_categorys', 'approvals'))) do -%>
<%= content_tag :li, link_to(t('personal_patent.all_articles'), panel_personal_patent_back_end_writing_patents_path), :class => active_for_action('writing_patents', 'index') %>
<%= content_tag :li, link_to(t('personal_patent.setting'), panel_personal_patent_back_end_writing_patent_setting_path), :class => active_for_action('writing_patent_setting', 'index') %>
<%#= content_tag :li, link_to(t('personal_patent.writing_patent_category'), panel_personal_patent_back_end_writing_patent_categorys_path), :class => active_for_action('writing_patent_categorys', 'index') %>
<%= content_tag :li, link_to(t('personal_patent.tags'), panel_personal_patent_back_end_tags_path), :class => active_for_action('/panel/personal_patent/back_end/tags', 'index') %>
<% end -%>
<% end -%>
<div class="content"> <div class="content">
<% flash.each do |key, msg| %> <% flash.each do |key, msg| %>
<%= content_tag :span, msg, :class => [key, "notice label label-warning"] %> <%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>

View File

@ -1,8 +1,11 @@
class Panel::PersonalBook::Plugin::WritingBooksController < OrbitBackendController class Panel::PersonalBook::Plugin::WritingBooksController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user! before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show] # before_filter :for_app_manager,:except => [:index,:show]
before_filter :for_app_sub_manager,:except => [:index]
before_filter :only => [ :new,:edit,:update] do |controller| before_filter :only => [ :new,:edit,:update] do |controller|
controller.get_categorys('WritingBookCategory') controller.get_categorys('WritingBookCategory')
end end

View File

@ -2,10 +2,10 @@
<tr id="<%= dom_id list_author_type %>"> <tr id="<%= dom_id list_author_type %>">
<td><%= list_author_type.title %></td> <td><%= list_author_type.title %></td>
<td> <td class="span2">
<a href="<%= panel_personal_book_back_end_writing_book_author_type_quick_edit_path(list_author_type) %>#myModal2" data-toggle="modal" data-remote="true" class="action">編輯</a> <a href="<%= panel_personal_book_back_end_writing_book_author_type_quick_edit_path(list_author_type) %>#myModal2" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_author_type), <%= link_to show_toggle_archive_btn(list_author_type),
polymorphic_path([:panel, :personal_book, :back_end, list_author_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %> polymorphic_path([:panel, :personal_book, :back_end, list_author_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td> </td>
</tr> </tr>

View File

@ -2,10 +2,10 @@
<tr id="<%= dom_id list_paper_type %>"> <tr id="<%= dom_id list_paper_type %>">
<td><%= list_paper_type.title %></td> <td><%= list_paper_type.title %></td>
<td> <td class="span2">
<a href="<%= panel_personal_book_back_end_writing_book_paper_type_quick_edit_path(list_paper_type) %>#myModal1" data-toggle="modal" data-remote="true" class="action">編輯</a> <a href="<%= panel_personal_book_back_end_writing_book_paper_type_quick_edit_path(list_paper_type) %>#myModal1" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_paper_type), <%= link_to show_toggle_archive_btn(list_paper_type),
polymorphic_path([:panel, :personal_book, :back_end, list_paper_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %> polymorphic_path([:panel, :personal_book, :back_end, list_paper_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td> </td>
</tr> </tr>

View File

@ -50,7 +50,7 @@ class Panel::PersonalJournal::BackEnd::WritingJournalsController < OrbitBackendC
def writing_journal_setting def writing_journal_setting
@module_apps = ModuleApp.where(has_plugin: true).order_by(:title, :asc) @plugins = ModuleApp.where(has_plugin: true).order_by(:title, :asc)
@level_types = JournalLevelType.all @level_types = JournalLevelType.all
@author_types = JournalAuthorType.all @author_types = JournalAuthorType.all

View File

@ -1,8 +1,11 @@
class Panel::PersonalJournal::Plugin::WritingJournalsController < OrbitBackendController class Panel::PersonalJournal::Plugin::WritingJournalsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user! before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show] # before_filter :for_app_manager,:except => [:index,:show]
before_filter :for_app_sub_manager,:except => [:index]
before_filter :only => [ :new,:edit,:update] do |controller| before_filter :only => [ :new,:edit,:update] do |controller|
controller.get_categorys('WritingJournalCategory') controller.get_categorys('WritingJournalCategory')
end end

View File

@ -4,21 +4,31 @@
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">作者型態</h3> <h3 id="myModalLabe2"><%= (@set_author_type.new_record? ? 'Add 作者型態' : 'Edit 作者型態') %></h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="form-horizontal">
<div class="control-group"> <div class="control-group">
<label class="control-label" for="inputvalue">名稱</label> <label for="http" class="control-label">Key</label>
<div class="controls"> <div class="controls">
<input type="text" id="inputvalue" placeholder="Value"> <%= f.text_field :key %>
</div>
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "link-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%= f.text_field locale, :class => 'control-label', :value => (@set_author_type.title_translations[locale] rescue nil) %>
</div> </div>
</div> </div>
</form> <% end %>
<% end %>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> <%= hidden_field_tag 'writing_journal_category[author_type]', @set_author_type.id %>
<button class="btn btn-primary">Save changes</button> <%= f.submit t('submit'), :class=>'btn btn-primary' %>
<a class="btn" data-dismiss="modal"><%= t('cancel')%></a>
</div> </div>
<% end %> <% end %>

View File

@ -2,10 +2,10 @@
<tr id="<%= dom_id list_author_type %>"> <tr id="<%= dom_id list_author_type %>">
<td><%= list_author_type.title %></td> <td><%= list_author_type.title %></td>
<td> <td class="span2">
<a href="<%= panel_personal_journal_back_end_writing_journal_author_type_quick_edit_path(list_author_type) %>#myModal2" data-toggle="modal" data-remote="true" class="action">編輯</a> <a href="<%= panel_personal_journal_back_end_writing_journal_author_type_quick_edit_path(list_author_type) %>#myModal2" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_author_type), <%= link_to show_toggle_archive_btn(list_author_type),
polymorphic_path([:panel, :personal_journal, :back_end, list_author_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %> polymorphic_path([:panel, :personal_journal, :back_end, list_author_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td> </td>
</tr> </tr>

View File

@ -2,10 +2,10 @@
<tr id="<%= dom_id list_level_type %>"> <tr id="<%= dom_id list_level_type %>">
<td><%= list_level_type.title %></td> <td><%= list_level_type.title %></td>
<td> <td class="span2">
<a href="<%= panel_personal_journal_back_end_writing_journal_level_type_quick_edit_path(list_level_type) %>#myModal1" data-toggle="modal" data-remote="true" class="action">編輯</a> <a href="<%= panel_personal_journal_back_end_writing_journal_level_type_quick_edit_path(list_level_type) %>#myModal1" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_level_type), <%= link_to show_toggle_archive_btn(list_level_type),
polymorphic_path([:panel, :personal_journal, :back_end, list_level_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %> polymorphic_path([:panel, :personal_journal, :back_end, list_level_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td> </td>
</tr> </tr>

View File

@ -2,10 +2,10 @@
<tr id="<%= dom_id list_paper_type %>"> <tr id="<%= dom_id list_paper_type %>">
<td><%= list_paper_type.title %></td> <td><%= list_paper_type.title %></td>
<td> <td class="span2">
<a href="<%= panel_personal_journal_back_end_writing_journal_paper_type_quick_edit_path(list_paper_type) %>#myModal3" data-toggle="modal" data-remote="true" class="action">編輯</a> <a href="<%= panel_personal_journal_back_end_writing_journal_paper_type_quick_edit_path(list_paper_type) %>#myModal3" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_paper_type), <%= link_to show_toggle_archive_btn(list_paper_type),
polymorphic_path([:panel, :personal_journal, :back_end, list_paper_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %> polymorphic_path([:panel, :personal_journal, :back_end, list_paper_type]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td> </td>
</tr> </tr>

View File

@ -1,22 +1,6 @@
<% # encoding: utf-8 %> <% # encoding: utf-8 %>
<div class="subnav">
<div id="module-nav">
<div class="arrow_next pull-right"><i class="icon-chevron-right"></i></div>
<div class="arrow_prev pull-left"><i class="icon-chevron-left"></i></div>
<div class="module-nav-view">
<ul class="nav nav-pills">
<% @module_apps.each do |ma| %>
<li><%= link_to eval("#{ma.object.classify.constantize}") , eval("panel_#{ma.title}_back_end_#{ma.object}s_path") %></li>
<% end %>
</ul>
</div>
</div>
</div>
<div id="isotope"> <div id="isotope">
<div class="item element"> <div class="item element">
<div class="detail w-a h-a"> <div class="detail w-a h-a">

View File

@ -0,0 +1,6 @@
.bundle/
log/*.log
pkg/
test/dummy/db/*.sqlite3
test/dummy/log/*.log
test/dummy/tmp/

View File

@ -0,0 +1,17 @@
source "http://rubygems.org"
# Declare your gem's dependencies in personal_patent.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
gemspec
# jquery-rails is used by the dummy application
gem "jquery-rails"
# Declare any dependencies that are still in development here instead of in
# your gemspec. These might include edge Rails or gems from your path or
# Git. Remember to move these dependencies to your gemspec before releasing
# your gem to rubygems.org.
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

View File

@ -0,0 +1,20 @@
Copyright 2012 YOURNAME
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.

View File

@ -0,0 +1,3 @@
= PersonalPatent
This project rocks and uses MIT-LICENSE.

View File

@ -0,0 +1,39 @@
#!/usr/bin/env rake
begin
require 'bundler/setup'
rescue LoadError
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end
begin
require 'rdoc/task'
rescue LoadError
require 'rdoc/rdoc'
require 'rake/rdoctask'
RDoc::Task = Rake::RDocTask
end
RDoc::Task.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'PersonalPatent'
rdoc.options << '--line-numbers'
rdoc.rdoc_files.include('README.rdoc')
rdoc.rdoc_files.include('lib/**/*.rb')
end
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'
Bundler::GemHelper.install_tasks
require 'rake/testtask'
Rake::TestTask.new(:test) do |t|
t.libs << 'lib'
t.libs << 'test'
t.pattern = 'test/**/*_test.rb'
t.verbose = false
end
task :default => :test

View File

@ -0,0 +1,23 @@
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
# Set I18n.locale
def set_locale
# update session if passed
session[:locale] = params[:locale] if params[:locale]
# set locale based on session or default
begin
# check if locale is valid for non site pages
if !VALID_LOCALES.include?(session[:locale])
I18n.locale = I18n.default_locale
else
I18n.locale = session[:locale]
end
rescue
I18n.locale = I18n.default_locale
end
end
end

View File

@ -0,0 +1,8 @@
class Panel::PersonalPatent::BackEnd::TagsController < Admin::TagsController
def initialize
super
@app_title = 'personal_patent'
end
end

View File

@ -0,0 +1,119 @@
class Panel::PersonalPatent::BackEnd::WritingPatentCategorysController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
before_filter :for_app_manager,:except => [:index]
def index
@writing_patent_categorys = WritingPatentCategory.all
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@url = panel_personal_patent_back_end_writing_patent_categorys_path
respond_to do |format|
format.html # index.html.erb
format.js
end
end
# GET /projects/1
# GET /projects/1.xml
def show
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.js
end
end
# GET /projects/new
# GET /projects/new.xml
def new
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@verb = :post
respond_to do |format|
format.html # new.html.erb
format.js
end
end
# GET /projects/1/edit
def edit
@writing_patent_category = WritingPatentCategory.find(params[:id])
@url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
@verb = :put
respond_to do |format|
format.html
format.js
end
end
# POST /projects
# POST /projects.xml
def create
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.create_writing_patent_category_success')) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /projects/1
# PUT /projects/1.xml
def update
@writing_patent_category = WritingPatentCategory.find(params[:id])
# debugger
@url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.update_writing_patent_category_success')) }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
# DELETE /projects/1
# DELETE /projects/1.xml
def destroy
@writing_patent_category = WritingPatentCategory.find(params[:id])
@writing_patent_category.disable = @writing_patent_category.disable ? false : true
if @writing_patent_category.save!
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url) }
# format.xml { head :ok }
format.js
end
else
flash[:error] = t("writing_patent_category.update_failed")
format.html { render :action => "index" }
end
end
end

View File

@ -0,0 +1,244 @@
class Panel::PersonalPatent::BackEnd::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids) : get_viewable("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
def writing_patent_setting
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
end
def writing_patent_category_quick_add
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
@set_writing_patent_category.id = params[:id]
respond_to do |format|
format.js
end
end
def writing_patent_category_quick_edit
@set_writing_patent_category = WritingPatentCategory.find(params[:writing_patent_id])
@writing_patent_category_url = panel_personal_patent_back_end_writing_patent_path(@set_writing_patent_category)
respond_to do |format|
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = WritingPatent.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = WritingPatent.new
debugger
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = WritingPatent.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.js { render 'create_writing_patent_setting' }
end
end
else
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = WritingPatent.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.js { render 'update_writing_patent_setting' }
end
end
else
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = WritingPatent.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_back_end_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? WritingPatent.admin_manager_all.find(id).to_a : WritingPatent.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = WritingPatent.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,244 @@
class Panel::PersonalPatent::BackEnd::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids) : get_viewable("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
def writing_patent_setting
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
end
def writing_patent_category_quick_add
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
@set_writing_patent_category.id = params[:id]
respond_to do |format|
format.js
end
end
def writing_patent_category_quick_edit
@set_writing_patent_category = WritingPatentCategory.find(params[:writing_patent_id])
@writing_patent_category_url = panel_personal_patent_back_end_writing_patent_path(@set_writing_patent_category)
respond_to do |format|
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = Project.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = Project.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.js { render 'create_writing_patent_setting' }
end
end
else
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = Project.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.js { render 'update_writing_patent_setting' }
end
end
else
@writing_patent = Project.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = Project.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = Project.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_back_end_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? Project.admin_manager_all.find(id).to_a : Project.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = Project.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,181 @@
class Panel::PersonalPatent::Plugin::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categories.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:create_user_id => current_user.id) : get_viewable("writing_patent", :create_user_id => current_user.id)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = Project.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = Project.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = Project.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
@writing_patent = Project.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = Project.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = Project.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_writing_patent_plugin_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? Project.admin_manager_all.find(id).to_a : Project.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = Project.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,9 @@
class PersonalPatentTag < Tag
has_and_belongs_to_many :writing_patents
def get_visible_links(sort = :title)
self.writing_patents.where(:is_hidden => false).desc(:is_top, sort)
end
end

View File

@ -0,0 +1,108 @@
# encoding: utf-8
class WritingPatent
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
# scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
LANGUAGE_TYPES = [ "English", "Chinese" ]
field :patent_title, localize: true
field :authors, localize: true
has_and_belongs_to_many :tags, :class_name => "PersonalPatentTag"
belongs_to :writing_patent_category
field :year
field :language
field :keywords
field :patent_no
field :patent_country
field :publish_date , :type => Date
field :url
field :note
field :create_user_id
field :update_user_id
# field :is_top, :type => Boolean, :default => false
# field :is_hot, :type => Boolean, :default => false
# field :is_hidden, :type => Boolean, :default => false
has_many :writing_patent_files, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :writing_patent_files, :allow_destroy => true
# before_save :update_avliable_language, :clean_checkboxs
validates :writing_patent_title, :at_least_one => true
before_validation :add_http
after_save :save_writing_patent_files
validates :url, :format => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix, :unless => Proc.new{self.url.blank?}
def self.search( category_id = nil )
if category_id.to_s.size > 0
find(:all, :conditions => {writing_patent_category_id: category_id}).desc( :is_top, :title )
else
find(:all).desc( :is_top, :title)
end
end
def self.widget_datas
where( :is_hidden => false ).desc(:is_top, :created_at)
end
def is_top?
self.is_top
end
def sorted_tags
tags.order_by(I18n.locale, :asc)
end
def update_avliable_language
VALID_LOCALES.each do |locale|
if (title_translations[locale].blank? rescue true)
self["available_for_#{locale}".to_sym] = false
else
self["available_for_#{locale}".to_sym] = true
end
end
end
def save_writing_patent_files
self.writing_patent_files.each do |t|
if t.should_destroy
t.destroy
end
end
end
protected
def add_http
unless self.url.blank? || self.url[/^http:\/\//] || self.url[/^https:\/\//]
self.url = 'http://' + self.url
end
end
def clean_checkboxs
self.tag_ids.delete('')
end
end

View File

@ -0,0 +1,28 @@
# encoding: utf-8
class WritingPatentCategory
include Mongoid::Document
include Mongoid::Timestamps
include OrbitCoreLib::ObjectAuthable
include OrbitCoreLib::ObjectDisable
# include Mongoid::MultiParameterAttributes
AfterObjectAuthUrl = '/panel/personal_patent/back_end/writing_patent_categorys'
APP_NAME = 'project'
# ObjectAuthTitlesOptions = %W{edit}
ObjectAuthTitlesOptions = %W{submit_new fact_check}
field :key
field :title, localize: true
has_many :writing_patents
def pp_object
title
end
def self.from_id(id)
WritingPatentCategory.find(id) rescue nil
end
end

View File

@ -0,0 +1,14 @@
class WritingPatentFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
# field :description, localize: true
field :should_destroy, :type => Boolean
field :title, localize: true
belongs_to :writing_patent
end

View File

@ -0,0 +1,30 @@
<% # encoding: utf-8 %>
<%= form_for(@writing_patent_category, :remote => true, :url => @url) do |f| %>
<h2><%= (@writing_patent_category.new_record? ? 'Add' : 'Edit') %></h2>
<div id="widget-title">
<%= f.label :key %>
<%= f.text_field :key %>
</div>
<div id="widget-title">
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "name-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%= f.text_field locale, :class => 'input-xxlarge', :value => (@web_link_category.title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="form-actions">
<%= f.submit 'Submit/送出', :class=>'btn btn-primary' %>
</div>
<% end %>

View File

@ -0,0 +1,16 @@
<tr id="<%= dom_id writing_patent_category %>" class="with_action">
<td>
<%= writing_patent_category.key %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<li><%= link_to t('writing_patent_category.edit'), edit_panel_personal_patent_back_end_writing_patent_category_path(writing_patent_category), :remote => true %></li>
<li><%= link_to t('writing_patent_category.delete'), panel_personal_patent_back_end_writing_patent_category_path(writing_patent_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %></li>
</ul>
</div>
</td>
<% @site_valid_locales.each do |locale| %>
<td><%= writing_patent_category.title_translations[locale] %></td>
<% end %>
</tr>

View File

@ -0,0 +1,2 @@
$('<%= j render :partial => 'writing_patent_category', :collection => [@writing_patent_category] %>').appendTo('#writing_patent_categorys').hide().fadeIn();
$("#new_writing_patent_category")[0].reset();

View File

@ -0,0 +1 @@
$("#<%= dom_id @writing_patent_category %>").remove();

View File

@ -0,0 +1 @@
$("#form > form").replaceWith("<%= j render "form" %>");

View File

@ -0,0 +1,23 @@
<%= flash_messages %>
<table id="writing_patent_categorys" class="table main-list">
<thead>
<tr>
<th class="span1-2"><%= t('writing_patent_category.key') %></th>
<% @site_valid_locales.each do |locale| %>
<th class="span1-2"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th>
<% end %>
</tr>
</thead>
<tbody>
<%= render :partial => 'writing_patent_category', :collection => @writing_patent_categorys %>
</tbody>
</table>
<div id="form"><%= render :partial => "form" %></div>

View File

@ -0,0 +1 @@
$("#form > form").replaceWith("<%= j render "form" %>");

View File

@ -0,0 +1,4 @@
$("#<%= dom_id @writing_patent_category %>").replaceWith("<%= j render :partial => 'link_category', :collection => [@writing_patent_category] %>");
<% @writing_patent_category = ProjectCategory.new(:display => 'List') # reset for new form %>
$(".edit_writing_patent_category").replaceWith("<%= j render "form" %>")
$(".new_writing_patent_category")[0].reset();

View File

@ -0,0 +1,11 @@
<div id="filter" class="subnav">
<div class="filters">
<div id="sort_headers" class="table-label">
<%= render 'sort_headers' %>
</div>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "sort_header" %>
<% end %>

View File

@ -0,0 +1,209 @@
<% # encoding: utf-8 %>
<%= f.error_messages %>
<!--Widget start-->
<div id="sub-wiget">
<div id="widget-tags" class="widget-box widget-size-300">
<div class="widget-action clear">
<a class="action"><i title="Setting" class="icon-cog icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-tag icons-white"></i>Tags</h3>
<div class="widget-content clear form-horizontal">
<% @tags.each do |tag| %>
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= check_box_tag 'writing_patent[tag_ids][]', tag.id, @writing_patent.tag_ids.include?(tag.id)%>
<%= tag[I18n.locale] %>
<%= hidden_field_tag 'writing_patent[tag_ids][]', '' %>
<% end %>
<% end %>
</div>
</div>
</div>
<!--Wiget End-->
<!--Post Start-->
<div id="post-body">
<div id="post-body-content" class="clear">
<div class="title">
<%= f.label :year ,t("personal_patent.year")%>
<%= select_year((@writing_patent.year ? @writing_patent.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_patent[year]'} ) %>
</div>
<div class="title">
<%= f.label :writing_patent_category ,t("personal_patent.writing_patent_category")%>
<%= f.select :writing_patent_category_id, @writing_patent_categorys.collect {|t| [ t.title, t.id ]} %>
</div>
<div class="title">
<%= f.label :period_start_date ,t("personal_patent.period_start_date")%>
<%= f.date_select :period_start_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month], :discard_day => true }, {:class => 'span1'} %>
</div>
<div class="title">
<%= f.label :period_end_date ,t("personal_patent.period_end_date")%>
<%= f.date_select :period_end_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month], :discard_day => true }, {:class => 'span1'} %>
</div>
<ul class="nav nav-tabs">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? " class='active'" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<div class="title">
<%= f.label :writing_patent_title ,t("personal_patent.writing_patent_title")%>
<%= f.fields_for :writing_patent_title_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.writing_patent_title_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :job_title ,t("personal_patent.job_title")%>
<%= f.fields_for :job_title_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.job_title_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :participator ,t("personal_patent.participator")%>
<%= f.fields_for :participator_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.participator_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :unit ,t("personal_patent.unit")%>
<%= f.fields_for :unit_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.unit_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
<% end %>
</div>
<div class="title">
<%= f.label :url, t("personal_patent.url") %>
<%= f.text_field :url %>
</div>
<div class="title">
<%= f.label :keywords, t("personal_patent.keywords") %>
<%= f.text_field :keywords %>
</div>
<div class="title">
<%= f.label :abstract, t("personal_patent.abstract") %>
<%= f.text_field :abstract %>
</div>
<div id="title">
<%= f.label :language, t("personal_patent.language") %>
<%= f.radio_button :language, "Chinese" %> <%= t("personal_patent.Chinese") %>
<%= f.radio_button :language, "English" %> <%= t("personal_patent.English") %>
</div>
<div class="title">
<%= f.label :note, t("personal_patent.note") %>
<%= f.text_area :note, :size => "60x3" %>
</div>
</div>
<div>
<div id='plugin_files' class="plugin_files_block">
<table class="table table-condensed">
<thead>
<tr>
<th>File</th>
<th>File Name</th>
<th class="span1"></th>
</tr>
</thead>
<tfoot>
<tr>
<td style="text-align:center" colspan="3">
<div id='add_plugin_file' class="info_input plugin_files_block">
<%= hidden_field_tag 'plugin_file_field_count', @writing_patent.writing_patent_files.count %>
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
</div>
</td>
</tr>
</tfoot>
<tbody>
<% @writing_patent.writing_patent_files.each_with_index do |writing_patent_file, i| %>
<%= f.fields_for :writing_patent_files, writing_patent_file do |f| %>
<%= render :partial => 'form_file', :object => writing_patent_file, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
<!--Post End-->
<div class="form-actions">
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "archive_plugin_form" %>
<script>
$('#add_plugin_file a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_add_plugin_files", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :writing_patent_files) %>").replace(old_id, new_id));
});
$('.add_plugin_files_block a.delete').live('click', function(){
$(this).parents('.list_item').remove();
});
$('.action a.remove_existing_record').live('click', function(){
$(this).next('.should_destroy').attr('value', 1);
$("tr#add_plugin_file_" + $(this).prev().attr('value')).hide();
});
</script>
<% end %>

View File

@ -0,0 +1,50 @@
<% # encoding: utf-8 %>
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
<td>
<div class="control-group">
<div class="controls">
<%= f.file_field :file %>
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
</div>
</div>
</td>
<td>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%#= f.fields_for :i18n_variable, (form_file.new_record? ? form_file.build_i18n_variable : form_file.i18n_variable ) do |f| %>
<%= f.fields_for :file_title_translations do |f| %>
<div class="control-group">
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.from_locale(locale) %></label>
<div class="controls">
<%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</td>
<td>
<span class="action">
<% if form_file.new_record? %>
<a class="delete"><i class="icon-remove"></i></a>
<% else %>
<%= f.hidden_field :id %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,11 @@
<% # encoding: utf-8 %>
<tr id="<%= dom_id list_writing_patent_category %>">
<td><%= list_writing_patent_category.title %></td>
<td class="span2">
<a href="<%= panel_personal_patent_back_end_writing_patent_writing_patent_category_quick_edit_path(list_writing_patent_category) %>#myModal1" data-toggle="modal" data-remote="true" class="action"><%= t('edit')%></a>
<%= link_to show_toggle_archive_btn(list_writing_patent_category),
polymorphic_path([:panel, :personal_patent, :back_end, list_writing_patent_category]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle action" %>
</td>
</tr>

View File

@ -0,0 +1,8 @@
<%= render_sort_bar(true, delete_panel_personal_patent_back_end_writing_patents_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
['publish_date', 'publish_date', 'span1', 'writing_patent.publish_date'],
['patent_title', 'patent_title','span3', 'writing_patent.patent_title'],
['patent_no', 'patent_no','span3', 'writing_patent.patent_no'],
['patent_country', 'patent_country','span3', 'writing_patent.patent_country'],
['authors', 'authors','span3', 'writing_patent.authors'],
['url', 'url','span3', 'writing_patent.url'],
['create_modified', 'create_user_id','span1-3', 'writing_patent.create_modified']).html_safe %>

View File

@ -0,0 +1,25 @@
<tr id="<%= dom_id writing_patent %>" class="with_action">
<td>
<% if (writing_patent.create_user_id == current_user.id) || is_manager? %>
<%= check_box_tag 'to_delete[]', writing_patent.id, false, :class => "checkbox_in_list" %>
<% end -%>
</td>
<td><%= writing_patent.publish_date.strftime("%Y.%m") %></td>
<td>
<%= link_to writing_patent.patent_title, panel_personal_patent_front_end_writing_patent_path(writing_patent) %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<%if at_least_module_manager || writing_patent.writing_patent_category.cur_user_is_sub_manager_of(:edit)%>
<li><%= link_to t('edit'), edit_panel_personal_patent_back_end_writing_patent_path(writing_patent) %></li>
<li><%= link_to t('delete'), panel_personal_patent_back_end_writing_patent_path(writing_patent), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
<% end -%>
</ul>
</div>
</td>
<td><%= writing_patent.patent_no %></td>
<td><%= writing_patent.patent_country %></td>
<td><%= writing_patent.authors %></td>
<td><%= writing_patent.url %></td>
<td><%= User.from_id(writing_patent.create_user_id).name rescue ''%></td>
</tr>

View File

@ -0,0 +1,34 @@
<% # encoding: utf-8 %>
<%= form_for(@set_writing_patent_category, :remote => true, :url => @writing_patent_category_url ) do |f| %>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabe1"><%= (@set_writing_patent_category.new_record? ? 'Add 專利類別' : 'Edit 專利類別') %></h3>
</div>
<div class="modal-body">
<div class="control-group">
<label for="http" class="control-label">Key</label>
<div class="controls">
<%= f.text_field :key %>
</div>
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "link-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%= f.text_field locale, :class => 'control-label', :value => (@set_writing_patent_category.title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
<% end %>
<div class="modal-footer">
<%= hidden_field_tag 'writing_patent_category[writing_patent_category]', @set_writing_patent_category.id %>
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<a class="btn" data-dismiss="modal"><%= t('cancel')%></a>
</div>
<% end %>

View File

@ -0,0 +1,5 @@
<% if !@writing_patent_category.blank? %>
$("#myModal1").modal('hide');
$('<%= j render :partial => 'list_writing_patent_category', :collection => [@writing_patent_category] %>').appendTo('#writing_patent_categorys').hide().fadeIn();
<% end %>

View File

@ -0,0 +1 @@
$("#<%= dom_id @writing_patent %>").remove();

View File

@ -0,0 +1,5 @@
<h1><%= t('personal_patent.editing_personal_patent') %></h1>
<%= form_for @writing_patent, :url => panel_personal_patent_back_end_writing_patent_path(@writing_patent), :html => {:class => 'clear'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>

View File

@ -0,0 +1,22 @@
<%= render 'filter' %>
<table class="table main-list">
<thead>
<tr>
<th class="span1"></th>
<th class="span1"></th>
<th class="span2"></th>
<th class="span3"></th>
<th class="span2"></th>
</tr>
</thead>
<tbody id="tbody_writing_patents" class="sort-holder">
<%= render :partial => 'writing_patent', :collection => @writing_patents %>
</tbody>
</table>
<div class="form-actions form-fixed pagination-right">
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('announcement.add_new'), new_panel_personal_patent_back_end_writing_patent_path, :class => 'btn btn-primary pull-right' %>
<div id="writing_patent_pagination" class="paginationFixed">
<%= paginate @writing_patents, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
</div>
</div>

View File

@ -0,0 +1,3 @@
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_writing_patents").html("<%= j render :partial => 'writing_patent', :collection => @writing_patents %>");
$("#writing_patent_pagination").html("<%= j paginate @writing_patents, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");

View File

@ -0,0 +1,10 @@
<%= flash_messages %>
<div id="poststuff">
<h1><%= t('writing_patent.new_personal_patent') %></h1>
<%= form_for @writing_patent, :url => panel_personal_patent_back_end_writing_patents_path, :html => {:class => 'clear'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>
<%#= link_back %>

View File

@ -0,0 +1,3 @@
$("#enable_<%= @bulletin.id %>").toggle();
$("#disable_<%= @bulletin.id %>").toggle();
$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');

View File

@ -0,0 +1,5 @@
<% if !@writing_patent_category.blank? %>
$("#myModal1").modal('hide');
$("#<%= dom_id @writing_patent_category %>").replaceWith("<%= j render :partial => 'list_writing_patent_category', :collection => [@writing_patent_category] %>");
<% end %>

View File

@ -0,0 +1 @@
$("#myModal1").html("<%= j render "writing_patent_category_qe" %>");

View File

@ -0,0 +1 @@
$("#myModal1").html("<%= j render "writing_patent_category_qe" %>");

View File

@ -0,0 +1,113 @@
<% # encoding: utf-8 %>
<div id="isotope">
<div class="item element">
<div class="detail w-a h-a">
<p class="totle">
<a class="btn btn-small btn-primary pull-right" href="<%= panel_personal_patent_back_end_writing_patent_writing_patent_category_quick_add_path('add') %>#myModal1" data-toggle="modal" data-remote="true"><i class="icon-plus"></i> <%= t('add')%></a>
<span>專利類別</span>
</p>
<div class="detal-list my_scroll">
<div class="scrollbar">
<div class="track">
<div class="thumb">
<div class="end"></div>
</div>
</div>
</div>
<div class="viewport">
<div class="overview">
<table id="writing_patent_categorys" class="table table-striped">
<tbody>
<%= render :partial => 'list_writing_patent_category', :collection => @writing_patent_categorys %>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="item element">
<div class="detail w-a h-a">
<p class="totle">
<button class="btn btn-small btn-primary pull-right" type="button" data-toggle="modal" data-target="#myModal4"><i class="icon-plus"></i> 新增</button>
<span>領域</span>
</p>
<ul class="nav nav-tabs">
<li class="active"><a href="#">中文</a></li>
<li><a href="#">English</a></li>
</ul>
<div class="detal-list my_scroll">
<div class="scrollbar">
<div class="track">
<div class="thumb">
<div class="end"></div>
</div>
</div>
</div>
<div class="viewport">
<div class="overview">
<table class="table table-striped">
<tbody>
<tr>
<td>Corresponding Author</td>
<td>編輯 刪除</td>
</tr>
<tr>
<td>First Author, Co- Authors</td>
<td>編輯 刪除</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-actions form-fixed pagination-right">
<a class="btn btn-primary pull-right" href><i class="icon-plus icon-white"></i> 匯出</a>&nbsp;
<a class="btn btn-primary pull-right" href><i class="icon-plus icon-white"></i> 匯入</a>&nbsp;
<a class="btn btn-primary pull-right" href><i class="icon-plus icon-white"></i> 新增</a>&nbsp;
<a class="btn btn-primary pull-right" href><i class="icon-plus icon-white"></i> 設定</a> 
</div>
<div id="writing_patent_category_qe">
<div style="display:none;" class="modal" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<%= render :partial => "writing_patent_category_qe" %>
</div>
</div>
<div style="display:none;" class="modal" id="myModal4" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">領域</h3>
</div>
<ul class="nav nav-tabs">
<li class="active"><a href="#">中文</a></li>
<li><a href="#">English</a></li>
</ul>
<div class="modal-body">
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="inputvalue">名稱</label>
<div class="controls">
<input type="text" id="inputvalue" placeholder="Value">
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "item" %>
<% end %>

View File

@ -0,0 +1,11 @@
<div id="filter" class="subnav">
<div class="filters">
<div id="sort_headers" class="table-label">
<%= render 'sort_headers' %>
</div>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "sort_header" %>
<% end %>

View File

@ -0,0 +1,209 @@
<% # encoding: utf-8 %>
<%= f.error_messages %>
<!--Widget start-->
<div id="sub-wiget">
<div id="widget-tags" class="widget-box widget-size-300">
<div class="widget-action clear">
<a class="action"><i title="Setting" class="icon-cog icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-tag icons-white"></i>Tags</h3>
<div class="widget-content clear form-horizontal">
<% @tags.each do |tag| %>
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= check_box_tag 'writing_patent[tag_ids][]', tag.id, @writing_patent.tag_ids.include?(tag.id)%>
<%= tag[I18n.locale] %>
<%= hidden_field_tag 'writing_patent[tag_ids][]', '' %>
<% end %>
<% end %>
</div>
</div>
</div>
<!--Wiget End-->
<!--Post Start-->
<div id="post-body">
<div id="post-body-content" class="clear">
<div class="title">
<%= f.label :year ,t("personal_patent.year")%>
<%= select_year((@writing_patent.year ? @writing_patent.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_patent[year]'} ) %>
</div>
<div class="title">
<%= f.label :writing_patent_category ,t("personal_patent.writing_patent_category")%>
<%= f.select :writing_patent_category_id, @writing_patent_categorys.collect {|t| [ t.title, t.id ]} %>
</div>
<div class="title">
<%= f.label :period_start_date ,t("personal_patent.period_start_date")%>
<%= f.date_select :period_start_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month], :discard_day => true }, {:class => 'span1'} %>
</div>
<div class="title">
<%= f.label :period_end_date ,t("personal_patent.period_end_date")%>
<%= f.date_select :period_end_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month], :discard_day => true }, {:class => 'span1'} %>
</div>
<ul class="nav nav-tabs">
<% @site_valid_locales.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? " class='active'" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<div class="title">
<%= f.label :writing_patent_title ,t("personal_patent.writing_patent_title")%>
<%= f.fields_for :writing_patent_title_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.writing_patent_title_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :job_title ,t("personal_patent.job_title")%>
<%= f.fields_for :job_title_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.job_title_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :participator ,t("personal_patent.participator")%>
<%= f.fields_for :participator_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.participator_translations[locale] rescue nil) %>
<% end %>
</div>
<div class="title">
<%= f.label :unit ,t("personal_patent.unit")%>
<%= f.fields_for :unit_translations do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title', :value => (@writing_patent.unit_translations[locale] rescue nil) %>
<% end %>
</div>
</div>
<% end %>
</div>
<div class="title">
<%= f.label :url, t("personal_patent.url") %>
<%= f.text_field :url %>
</div>
<div class="title">
<%= f.label :keywords, t("personal_patent.keywords") %>
<%= f.text_field :keywords %>
</div>
<div class="title">
<%= f.label :abstract, t("personal_patent.abstract") %>
<%= f.text_field :abstract %>
</div>
<div id="title">
<%= f.label :language, t("personal_patent.language") %>
<%= f.radio_button :language, "Chinese" %> <%= t("personal_patent.Chinese") %>
<%= f.radio_button :language, "English" %> <%= t("personal_patent.English") %>
</div>
<div class="title">
<%= f.label :note, t("personal_patent.note") %>
<%= f.text_area :note, :size => "60x3" %>
</div>
</div>
<div>
<div id='plugin_files' class="plugin_files_block">
<table class="table table-condensed">
<thead>
<tr>
<th>File</th>
<th>File Name</th>
<th class="span1"></th>
</tr>
</thead>
<tfoot>
<tr>
<td style="text-align:center" colspan="3">
<div id='add_plugin_file' class="info_input plugin_files_block">
<%= hidden_field_tag 'plugin_file_field_count', @writing_patent.writing_patent_files.count %>
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
</div>
</td>
</tr>
</tfoot>
<tbody>
<% @writing_patent.writing_patent_files.each_with_index do |writing_patent_file, i| %>
<%= f.fields_for :writing_patent_files, writing_patent_file do |f| %>
<%= render :partial => 'form_file', :object => writing_patent_file, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
<!--Post End-->
<div class="form-actions">
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "archive_plugin_form" %>
<script>
$('#add_plugin_file a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_add_plugin_files", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_file', f, :writing_patent_files) %>").replace(old_id, new_id));
});
$('.add_plugin_files_block a.delete').live('click', function(){
$(this).parents('.list_item').remove();
});
$('.action a.remove_existing_record').live('click', function(){
$(this).next('.should_destroy').attr('value', 1);
$("tr#add_plugin_file_" + $(this).prev().attr('value')).hide();
});
</script>
<% end %>

View File

@ -0,0 +1,50 @@
<% # encoding: utf-8 %>
<tr id="<%= "plugin_file_#{form_file.id}" if !form_file.new_record? %>" class='list_item'>
<td>
<div class="control-group">
<div class="controls">
<%= f.file_field :file %>
<%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
</div>
</div>
</td>
<td>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%#= f.fields_for :i18n_variable, (form_file.new_record? ? form_file.build_i18n_variable : form_file.i18n_variable ) do |f| %>
<%= f.fields_for :file_title_translations do |f| %>
<div class="control-group">
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.from_locale(locale) %></label>
<div class="controls">
<%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</td>
<td>
<span class="action">
<% if form_file.new_record? %>
<a class="delete"><i class="icon-remove"></i></a>
<% else %>
<%= f.hidden_field :id %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,7 @@
<%= render_sort_bar(true, delete_panel_personal_patent_back_end_writing_patents_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
['publish_date', 'publish_date', 'span1', 'writing_patent.publish_date'],
['patent_title', 'patent_title','span3', 'writing_patent.patent_title'],
['patent_no', 'patent_no','span3', 'writing_patent.patent_no'],
['patent_country', 'patent_country','span3', 'writing_patent.patent_country'],
['authors', 'authors','span3', 'writing_patent.authors'],
['url', 'url','span3', 'writing_patent.url']).html_safe %>

View File

@ -0,0 +1,24 @@
<tr id="<%= dom_id writing_patent %>" class="with_action">
<td>
<% if (writing_patent.create_user_id == current_user.id) || is_manager? %>
<%= check_box_tag 'to_delete[]', writing_patent.id, false, :class => "checkbox_in_list" %>
<% end -%>
</td>
<td><%= writing_patent.period_start_date.strftime("%Y.%m") %> ~ <%= writing_patent.period_end_date.strftime("%Y.%m") %></td>
<td>
<%= link_to writing_patent.writing_patent_title, panel_personal_patent_front_end_writing_patent_path(writing_patent) %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<%if at_least_module_manager || writing_patent.writing_patent_category.cur_user_is_sub_manager_of(:edit)%>
<li><%= link_to t('edit'), edit_panel_personal_patent_plugin_writing_patent_path(writing_patent) %></li>
<li><%= link_to t('delete'), panel_personal_patent_plugin_writing_patent_path(writing_patent), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
<% end -%>
</ul>
</div>
</td>
<td><%= writing_patent.participator %></td>
<td><%= writing_patent.job_title %></td>
<td><%= writing_patent.unit %></td>
<td><%= User.from_id(writing_patent.create_user_id).name rescue ''%></td>
</tr>

View File

@ -0,0 +1 @@
$("#<%= dom_id @writing_patent %>").remove();

View File

@ -0,0 +1,5 @@
<h1><%= t('personal_patent.editing_personal_patent') %></h1>
<%= form_for @writing_patent, :url => panel_personal_patent_plugin_writing_patent_path(@writing_patent), :html => {:class => 'clear'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>

View File

@ -0,0 +1,22 @@
<%= render 'filter' %>
<table class="table main-list">
<thead>
<tr>
<th class="span1"></th>
<th class="span1"></th>
<th class="span2"></th>
<th class="span3"></th>
<th class="span2"></th>
</tr>
</thead>
<tbody id="tbody_writing_patents" class="sort-holder">
<%= render :partial => 'writing_patent', :collection => @writing_patents %>
</tbody>
</table>
<div class="form-actions form-fixed pagination-right">
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('announcement.add_new'), new_panel_personal_patent_plugin_writing_patent_path, :class => 'btn btn-primary pull-right' %>
<div id="writing_patent_pagination" class="paginationFixed">
<%= paginate @writing_patents, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
</div>
</div>

View File

@ -0,0 +1,3 @@
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_writing_patents").html("<%= j render :partial => 'writing_patent', :collection => @writing_patents %>");
$("#writing_patent_pagination").html("<%= j paginate @writing_patents, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");

View File

@ -0,0 +1,10 @@
<%= flash_messages %>
<div id="poststuff">
<h1><%= t('writing_patent.new_personal_patent') %></h1>
<%= form_for @writing_patent, :url => panel_personal_patent_plugin_writing_patents_path, :html => {:class => 'clear'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>
<%#= link_back %>

View File

@ -0,0 +1,3 @@
$("#enable_<%= @bulletin.id %>").toggle();
$("#disable_<%= @bulletin.id %>").toggle();
$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');

View File

@ -0,0 +1,23 @@
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
# Set I18n.locale
def set_locale
# update session if passed
session[:locale] = params[:locale] if params[:locale]
# set locale based on session or default
begin
# check if locale is valid for non site pages
if !VALID_LOCALES.include?(session[:locale])
I18n.locale = I18n.default_locale
else
I18n.locale = session[:locale]
end
rescue
I18n.locale = I18n.default_locale
end
end
end

View File

@ -0,0 +1,8 @@
class Panel::PersonalPatent::BackEnd::TagsController < Admin::TagsController
def initialize
super
@app_title = 'personal_patent'
end
end

View File

@ -0,0 +1,123 @@
class Panel::PersonalPatent::BackEnd::WritingPatentCategorysController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
before_filter :for_app_manager,:except => [:index]
def index
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@url = panelpersonal_patent_back_end_writing_patent_categorys_path
respond_to do |format|
format.html # index.html.erb
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.js
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@verb = :post
respond_to do |format|
format.html # new.html.erb
format.js
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent_category = WritingPatentCategory.find(params[:id])
# @url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
# @url = eval("panel_personal_patent_back_end_#{@app_type}_path(@writing_patent_category)")
@url = polymorphic_path([:panel, :personal_patent, :back_end, @writing_patent_category])
@verb = :put
respond_to do |format|
format.html
format.js
end
end
# POST /writing_patents
# POST /writing_patents.xml
def create
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.create_writing_patent_category_success')) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
@writing_patent_category = WritingPatentCategory.find(params[:id])
# debugger
# @url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
# @url = eval("panel_personal_patent_back_end_#{@app_type}_path(#{@writing_patent_category})")
@url = polymorphic_path([:panel, :personal_patent, :back_end, @writing_patent_category])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.update_writing_patent_category_success')) }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent_category = WritingPatentCategory.find(params[:id])
@writing_patent_category.disable = @writing_patent_category.disable ? false : true
if @writing_patent_category.save!
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url) }
# format.xml { head :ok }
format.js
end
else
flash[:error] = t("writing_patent_category.update_failed")
format.html { render :action => "index" }
end
end
end

View File

@ -0,0 +1,242 @@
class Panel::PersonalPatent::BackEnd::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:edit,:update] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_category_ids])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids) : get_viewable("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
def writing_patent_setting
@patent_types = WritingPatentCategory.all
get_tags
@set_patent_type = WritingPatentCategory.new(:display => 'List')
@patent_type_url = panel_personal_patent_back_end_writing_patents_path
end
def writing_patent_category_quick_add
@set_patent_type = WritingPatentCategory.new(:display => 'List')
@patent_type_url = panel_personal_patent_back_end_writing_patents_path
@set_patent_type.id = params[:id]
respond_to do |format|
format.js
end
end
def writing_patent_category_quick_edit
@set_patent_type = WritingPatentCategory.find(params[:writing_patent_id])
@patent_type_url = panel_personal_patent_back_end_writing_patent_path(@set_patent_type)
respond_to do |format|
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = WritingPatent.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = WritingPatent.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = WritingPatent.find(params[:id])
@patent_types = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.js { render 'create_writing_patent_setting' }
end
end
else
@patent_types = WritingPatentCategory.all
get_tags
@writing_patent = WritingPatent.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.js { render 'update_writing_patent_setting' }
end
end
else
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = WritingPatent.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_back_end_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? WritingPatentCategory.admin_manager_all.find(id).to_a : WritingPatentCategory.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = WritingPatentCategory.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,181 @@
class Panel::PersonalPatent::Plugin::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:edit,:update] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:web_link_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:create_user_id => current_user.id) : get_viewable("writing_patent", :create_user_id => current_user.id)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = WritingPatent.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = WritingPatent.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = WritingPatent.find(params[:id])
@patent_types = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
@patent_types = WritingPatentCategory.all
get_tags
@writing_patent = WritingPatent.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_plugin_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_plugin_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_plugin_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = WritingPatent.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_plugin_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? WritingPatentCategory.admin_manager_all.find(id).to_a : WritingPatentCategory.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = WritingPatentCategory.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,8 @@
class Panel::PersonalPatent::BackEnd::TagsController < Admin::TagsController
def initialize
super
@app_title = 'personal_patent'
end
end

View File

@ -0,0 +1,119 @@
class Panel::PersonalPatent::BackEnd::WritingPatentCategorysController < OrbitBackendController
include OrbitControllerLib::DivisionForDisable
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
before_filter :for_app_manager,:except => [:index]
def index
@writing_patent_categorys = WritingPatentCategory.all
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@url = panel_personal_patent_back_end_writing_patent_categorys_path
respond_to do |format|
format.html # index.html.erb
format.js
end
end
# GET /projects/1
# GET /projects/1.xml
def show
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.js
end
end
# GET /projects/new
# GET /projects/new.xml
def new
@writing_patent_category = WritingPatentCategory.new(:display => 'List')
@verb = :post
respond_to do |format|
format.html # new.html.erb
format.js
end
end
# GET /projects/1/edit
def edit
@writing_patent_category = WritingPatentCategory.find(params[:id])
@url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
@verb = :put
respond_to do |format|
format.html
format.js
end
end
# POST /projects
# POST /projects.xml
def create
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.create_writing_patent_category_success')) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /projects/1
# PUT /projects/1.xml
def update
@writing_patent_category = WritingPatentCategory.find(params[:id])
# debugger
@url = panel_personal_patent_back_end_writing_patent_category_path(@writing_patent_category)
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url, :notice => t('writing_patent_category.update_writing_patent_category_success')) }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
# DELETE /projects/1
# DELETE /projects/1.xml
def destroy
@writing_patent_category = WritingPatentCategory.find(params[:id])
@writing_patent_category.disable = @writing_patent_category.disable ? false : true
if @writing_patent_category.save!
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patent_categorys_url) }
# format.xml { head :ok }
format.js
end
else
flash[:error] = t("writing_patent_category.update_failed")
format.html { render :action => "index" }
end
end
end

View File

@ -0,0 +1,244 @@
class Panel::PersonalPatent::BackEnd::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids) : get_viewable("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
def writing_patent_setting
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
end
def writing_patent_category_quick_add
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
@set_writing_patent_category.id = params[:id]
respond_to do |format|
format.js
end
end
def writing_patent_category_quick_edit
@set_writing_patent_category = WritingPatentCategory.find(params[:writing_patent_id])
@writing_patent_category_url = panel_personal_patent_back_end_writing_patent_path(@set_writing_patent_category)
respond_to do |format|
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = WritingPatent.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = WritingPatent.new
debugger
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = WritingPatent.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.js { render 'create_writing_patent_setting' }
end
end
else
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = WritingPatent.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.js { render 'update_writing_patent_setting' }
end
end
else
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = WritingPatent.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = WritingPatent.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_back_end_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? WritingPatent.admin_manager_all.find(id).to_a : WritingPatent.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = WritingPatent.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,244 @@
class Panel::PersonalPatent::BackEnd::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categorys.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids) : get_viewable("writing_patent",:writing_patent_category_id.in => @writing_patent_category_ids)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
def writing_patent_setting
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
end
def writing_patent_category_quick_add
@set_writing_patent_category = WritingPatentCategory.new(:display => 'List')
@writing_patent_category_url = panel_personal_patent_back_end_writing_patents_path
@set_writing_patent_category.id = params[:id]
respond_to do |format|
format.js
end
end
def writing_patent_category_quick_edit
@set_writing_patent_category = WritingPatentCategory.find(params[:writing_patent_id])
@writing_patent_category_url = panel_personal_patent_back_end_writing_patent_path(@set_writing_patent_category)
respond_to do |format|
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = Project.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = Project.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.new(params[:writing_patent_category])
respond_to do |format|
if @writing_patent_category.save
format.js { render 'create_writing_patent_setting' }
end
end
else
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = Project.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
if params[:writing_patent_category]
@writing_patent_category = WritingPatentCategory.find(params[:id])
respond_to do |format|
if @writing_patent_category.update_attributes(params[:writing_patent_category])
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.js { render 'update_writing_patent_setting' }
end
end
else
@writing_patent = Project.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = Project.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_patent_back_end_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = Project.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_patent_back_end_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? Project.admin_manager_all.find(id).to_a : Project.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = Project.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,181 @@
class Panel::PersonalPatent::Plugin::WritingPatentsController < OrbitBackendController
include AdminHelper
include OrbitControllerLib::DivisionForDisable
before_filter :authenticate_user!
before_filter :force_order_for_visitor,:only=>[:index,:show]
before_filter :force_order_for_user,:except => [:index,:show]
# before_filter :for_app_manager,:except => [:index,:show]
before_filter :only => [ :new,:create,:edit,:update,:create] do |controller|
controller.get_categorys('WritingPatentCategory')
end
def index
get_categorys("WritingPatentCategory",params[:writing_patent_writing_patent_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
@writing_patent_categorys = get_categories_for_index("WritingPatentCategory")
@writing_patent_category_ids = @writing_patent_categories.collect{|t| t.id.to_s} + [nil]
@writing_patents = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_patent",:create_user_id => current_user.id) : get_viewable("writing_patent", :create_user_id => current_user.id)
get_tags
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @writing_patents }
format.js
end
end
# GET /writing_patents/1
# GET /writing_patents/1.xml
def show
@writing_patent = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/new
# GET /writing_patents/new.xml
def new
@writing_patent = Project.new
@writing_patent_categorys = WritingPatentCategory.all
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @writing_patent }
end
end
# GET /writing_patents/1/edit
def edit
@writing_patent = Project.find(params[:id])
@writing_patent_categorys = WritingPatentCategory.all
get_tags
end
# POST /writing_patents
# POST /writing_patents.xml
def create
@writing_patent_categorys = WritingPatentCategory.all
get_tags
@writing_patent = Project.new(params[:writing_patent])
@writing_patent.create_user_id = current_user.id
@writing_patent.update_user_id = current_user.id
respond_to do |format|
if @writing_patent.save
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
format.xml { render :xml => @writing_patent, :status => :created, :location => @writing_patent }
else
format.html { render :action => "new" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# PUT /writing_patents/1
# PUT /writing_patents/1.xml
def update
@writing_patent = Project.find(params[:id])
@writing_patent.update_user_id = current_user.id
params[:writing_patent][:tag_ids] ||=[]
respond_to do |format|
if @writing_patent.update_attributes(params[:writing_patent])
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
# format.js { render 'toggle_enable' }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @writing_patent.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /writing_patents/1
# DELETE /writing_patents/1.xml
def destroy
@writing_patent = Project.find(params[:id])
@writing_patent.destroy
respond_to do |format|
format.html { redirect_to(panel_personal_writing_patent_plugin_writing_patents_url) }
# format.xml { head :ok }
format.js
end
end
def delete
if params[:ids]
writing_patents = Project.any_in(:_id => params[:ids]).delete_all
end
redirect_to panel_personal_writing_patent_plugin_writing_patents_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
# def get_index_categories(id = nil)
# @bulletin_categorys = []
# if(is_manager? || is_admin?)
# @bulletin_categorys = (id ? BulletinCategory.admin_manager_all.find(id).to_a : BulletinCategory.admin_manager_all)
# elsif is_sub_manager?
# @bulletin_categorys = BulletinCategory.all
# end
# @bulletin_categorys
# end
# def get_categorys(id = nil)
# @writing_patent_categorys = []
# if(is_manager? || is_admin?)
# @writing_patent_categorys = (id ? Project.admin_manager_all.find(id).to_a : Project.admin_manager_all))
# elsif is_sub_manager?
# @writing_patent_categorys = Project.all.authed_for_user(current_user,'edit')
# end
# if @writing_patent_categorys.empty? && params[:action] != "index"
# flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
# redirect_to :action => :index
# end
# end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'personal_patent'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end
end

View File

@ -0,0 +1,9 @@
class PersonalPatentTag < Tag
has_and_belongs_to_many :writing_patents
def get_visible_links(sort = :title)
self.writing_patents.where(:is_hidden => false).desc(:is_top, sort)
end
end

View File

@ -0,0 +1,108 @@
# encoding: utf-8
class WritingPatent
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
# scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
LANGUAGE_TYPES = [ "English", "Chinese" ]
field :patent_title, localize: true
field :authors, localize: true
has_and_belongs_to_many :tags, :class_name => "PersonalPatentTag"
belongs_to :writing_patent_category
field :year
field :language
field :keywords
field :patent_no
field :patent_country
field :publish_date , :type => Date
field :url
field :note
field :create_user_id
field :update_user_id
# field :is_top, :type => Boolean, :default => false
# field :is_hot, :type => Boolean, :default => false
# field :is_hidden, :type => Boolean, :default => false
has_many :writing_patent_files, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :writing_patent_files, :allow_destroy => true
# before_save :update_avliable_language, :clean_checkboxs
validates :patent_title, :at_least_one => true
before_validation :add_http
after_save :save_writing_patent_files
validates :url, :format => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix, :unless => Proc.new{self.url.blank?}
def self.search( category_id = nil )
if category_id.to_s.size > 0
find(:all, :conditions => {writing_patent_category_id: category_id}).desc( :is_top, :title )
else
find(:all).desc( :is_top, :title)
end
end
def self.widget_datas
where( :is_hidden => false ).desc(:is_top, :created_at)
end
def is_top?
self.is_top
end
def sorted_tags
tags.order_by(I18n.locale, :asc)
end
def update_avliable_language
VALID_LOCALES.each do |locale|
if (title_translations[locale].blank? rescue true)
self["available_for_#{locale}".to_sym] = false
else
self["available_for_#{locale}".to_sym] = true
end
end
end
def save_writing_patent_files
self.writing_patent_files.each do |t|
if t.should_destroy
t.destroy
end
end
end
protected
def add_http
unless self.url.blank? || self.url[/^http:\/\//] || self.url[/^https:\/\//]
self.url = 'http://' + self.url
end
end
def clean_checkboxs
self.tag_ids.delete('')
end
end

View File

@ -0,0 +1,24 @@
# encoding: utf-8
class WritingPatentCategory
include Mongoid::Document
include Mongoid::Timestamps
include OrbitCoreLib::ObjectAuthable
include OrbitCoreLib::ObjectDisable
# include Mongoid::MultiParameterAttributes
AfterObjectAuthUrl = '/panel/personal_patent/back_end/writing_patent_categorys'
APP_NAME = 'writing_patent'
# ObjectAuthTitlesOptions = %W{edit}
ObjectAuthTitlesOptions = %W{submit_new fact_check}
field :key
field :title, localize: true
has_many :writing_patents
def pp_object
title
end
end

View File

@ -0,0 +1,14 @@
class WritingPatentFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
# field :description, localize: true
field :should_destroy, :type => Boolean
field :title, localize: true
belongs_to :writing_patent
end

View File

@ -0,0 +1,30 @@
<% # encoding: utf-8 %>
<%= form_for(@writing_patent_category, :remote => true, :url => @url) do |f| %>
<h2><%= (@writing_patent_category.new_record? ? 'Add' : 'Edit') %></h2>
<div id="widget-title">
<%= f.label :key %>
<%= f.text_field :key %>
</div>
<div id="widget-title">
<%= f.fields_for :title_translations do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "name-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%= f.text_field locale, :class => 'input-xxlarge', :value => (@web_link_category.title_translations[locale] rescue nil) %>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="form-actions">
<%= f.submit 'Submit/送出', :class=>'btn btn-primary' %>
</div>
<% end %>

Some files were not shown because too many files have changed in this diff Show More