diff --git a/app/assets/javascripts/archive_plugin_form.js.erb b/app/assets/javascripts/archive_plugin_form.js.erb
new file mode 100644
index 00000000..873f42bf
--- /dev/null
+++ b/app/assets/javascripts/archive_plugin_form.js.erb
@@ -0,0 +1,9 @@
+$('.plugin_files_block a.delete').live('click', function(){
+ $(this).parents('.list_item').remove();
+});
+
+$(document).on('click', '.action a.remove_existing_record', function(){
+ $(this).next('.should_destroy').attr('value', 1);
+ $("tr#plugin_file_" + $(this).prev().attr('value')).hide();
+});
+
diff --git a/app/controllers/admin/plugins_controller.rb b/app/controllers/admin/plugins_controller.rb
new file mode 100644
index 00000000..cbc933ed
--- /dev/null
+++ b/app/controllers/admin/plugins_controller.rb
@@ -0,0 +1,11 @@
+class Admin::PluginsController < ApplicationController
+
+ layout "new_admin"
+
+ def index
+
+ @module_apps = ModuleApp.excludes(widgets: nil).where(has_plugin: true).order_by(:title, :asc)
+
+ end
+
+end
diff --git a/app/views/admin/plugins/_plugin.html.erb b/app/views/admin/plugins/_plugin.html.erb
new file mode 100644
index 00000000..b2f11ce1
--- /dev/null
+++ b/app/views/admin/plugins/_plugin.html.erb
@@ -0,0 +1,27 @@
+
+
<% flash.each do |key, msg| %>
<%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
diff --git a/vendor/built_in_modules/personal_book/.gitignore b/vendor/built_in_modules/personal_book/.gitignore
new file mode 100644
index 00000000..1463de6d
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/.gitignore
@@ -0,0 +1,6 @@
+.bundle/
+log/*.log
+pkg/
+test/dummy/db/*.sqlite3
+test/dummy/log/*.log
+test/dummy/tmp/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/Gemfile b/vendor/built_in_modules/personal_book/Gemfile
new file mode 100644
index 00000000..fe6b7aba
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/Gemfile
@@ -0,0 +1,17 @@
+source "http://rubygems.org"
+
+# Declare your gem's dependencies in personal_book.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'
diff --git a/vendor/built_in_modules/personal_book/MIT-LICENSE b/vendor/built_in_modules/personal_book/MIT-LICENSE
new file mode 100644
index 00000000..406f17b7
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/MIT-LICENSE
@@ -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.
diff --git a/vendor/built_in_modules/personal_book/README.rdoc b/vendor/built_in_modules/personal_book/README.rdoc
new file mode 100644
index 00000000..d51e43f0
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/README.rdoc
@@ -0,0 +1,3 @@
+= PersonalBook
+
+This project rocks and uses MIT-LICENSE.
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/Rakefile b/vendor/built_in_modules/personal_book/Rakefile
new file mode 100644
index 00000000..861d45f0
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/Rakefile
@@ -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 = 'PersonalBook'
+ 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
diff --git a/vendor/built_in_modules/personal_book/app/assets/images/personal_book/.gitkeep b/vendor/built_in_modules/personal_book/app/assets/images/personal_book/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/.gitkeep b/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/assets/stylesheets/personal_book/.gitkeep b/vendor/built_in_modules/personal_book/app/assets/stylesheets/personal_book/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/controllers/.gitkeep b/vendor/built_in_modules/personal_book/app/controllers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/application_controller.rb
new file mode 100644
index 00000000..307a4acd
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/application_controller.rb
@@ -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
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_author_types_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_author_types_controller.rb
new file mode 100644
index 00000000..34aa6bbb
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_author_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalBook::BackEnd::BookAuthorTypesController < Panel::PersonalBook::BackEnd::WritingBookCategorysController
+
+ def initialize
+ super
+ @app_type = 'book_author_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_paper_types_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_paper_types_controller.rb
new file mode 100644
index 00000000..4f0ba785
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/book_paper_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalBook::BackEnd::BookPaperTypesController < Panel::PersonalBook::BackEnd::WritingBookCategorysController
+
+ def initialize
+ super
+ @app_type = 'book_paper_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/tags_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/tags_controller.rb
new file mode 100644
index 00000000..b1aee251
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/tags_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalBook::BackEnd::TagsController < Admin::TagsController
+
+ def initialize
+ super
+ @app_title = 'personal_book'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_book_categorys_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_book_categorys_controller.rb
new file mode 100644
index 00000000..4eab19d5
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_book_categorys_controller.rb
@@ -0,0 +1,141 @@
+class Panel::PersonalBook::BackEnd::WritingBookCategorysController < OrbitBackendController
+ before_filter :for_app_manager,:except => [:index]
+ include OrbitControllerLib::DivisionForDisable
+
+ def index
+
+ get_types
+
+ @writing_book_categorys = @types.all
+ @writing_book_category = @types.new(:display => 'List')
+
+ # @url = panel_personal_book_back_end_writing_book_categorys_path
+ @url = eval("panel_personal_book_back_end_#{@app_type}s_path")
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_books/1
+ # GET /writing_books/1.xml
+ def show
+
+ get_types
+
+ @writing_book_category = @types.find(params[:id])
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_books/new
+ # GET /writing_books/new.xml
+ def new
+
+ get_types
+
+ @writing_book_category = @types.new(:display => 'List')
+
+ @verb = :post
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_books/1/edit
+ def edit
+
+ get_types
+
+ @writing_book_category = @types.find(params[:id])
+
+ # @url = panel_personal_book_back_end_writing_book_category_path(@writing_book_category)
+ # @url = eval("panel_personal_book_back_end_#{@app_type}_path(@writing_book_category)")
+ @url = polymorphic_path([:panel, :personal_book, :back_end, @writing_book_category])
+
+ @verb = :put
+
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # POST /writing_books
+ # POST /writing_books.xml
+ def create
+
+ get_types
+
+ @writing_book_category = @types.new(params[:writing_book_category])
+
+ respond_to do |format|
+ if @writing_book_category.save
+ format.html { redirect_to(panel_personal_book_back_end_writing_book_categorys_url, :notice => t('writing_book_category.create_writing_book_category_success')) }
+ format.js
+ else
+ format.html { render :action => "new" }
+ format.js { render action: "new" }
+ end
+ end
+ end
+
+ # PUT /writing_books/1
+ # PUT /writing_books/1.xml
+ def update
+
+ get_types
+
+ @writing_book_category = @types.find(params[:id])
+ # debugger
+ # @url = panel_personal_book_back_end_writing_book_category_path(@writing_book_category)
+ # @url = eval("panel_personal_book_back_end_#{@app_type}_path(#{@writing_book_category})")
+ @url = polymorphic_path([:panel, :personal_book, :back_end, @writing_book_category])
+
+ respond_to do |format|
+ if @writing_book_category.update_attributes(params[:writing_book_category])
+ format.html { redirect_to(panel_personal_book_back_end_writing_book_categorys_url, :notice => t('writing_book_category.update_writing_book_category_success')) }
+ # format.xml { head :ok }
+ format.js
+ else
+ format.html { render :action => "edit" }
+ format.js { render :action => "edit" }
+ end
+ end
+ end
+
+ # DELETE /writing_books/1
+ # DELETE /writing_books/1.xml
+ def destroy
+
+ get_types
+
+ @writing_book_category = @types.find(params[:id])
+ @writing_book_category.disable = @writing_book_category.disable ? false : true
+
+ if @writing_book_category.save!
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_book_back_end_writing_book_categorys_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ else
+ flash[:error] = t("writing_book_category.update_failed")
+ format.html { render :action => "index" }
+ end
+
+ end
+
+ protected
+
+ def get_types
+ @types = @app_type.classify.constantize
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_books_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_books_controller.rb
new file mode 100644
index 00000000..d02cb7d2
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/back_end/writing_books_controller.rb
@@ -0,0 +1,185 @@
+class Panel::PersonalBook::BackEnd::WritingBooksController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingBookCategory')
+ end
+
+ def index
+
+ get_categorys("BookPaperType",params[:book_paper_type_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
+
+ @paper_types = BookPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+
+ # @writing_books = WritingBook.search(params[:category_id])
+ #@writing_books = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_books : WritingBook.all.page(params[:page]).per(10)
+
+ @writing_books = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_book",:book_paper_type_id.in => @paper_type_ids) : get_viewable("writing_book",:book_paper_type_id.in => @paper_type_ids)
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_books }
+ format.js
+ end
+ end
+
+ # GET /writing_books/1
+ # GET /writing_books/1.xml
+ def show
+ @writing_book = WritingBook.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_book }
+ end
+ end
+
+ # GET /writing_books/new
+ # GET /writing_books/new.xml
+ def new
+
+ @writing_book = WritingBook.new
+ # @writing_book_files = WritingBookFile.all
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_book }
+ end
+ end
+
+ # GET /writing_books/1/edit
+ def edit
+ @writing_book = WritingBook.find(params[:id])
+
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_books
+ # POST /writing_books.xml
+ def create
+
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+ get_tags
+
+ @writing_book = WritingBook.new(params[:writing_book])
+
+ @writing_book.create_user_id = current_user.id
+ @writing_book.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_book.save
+ format.html { redirect_to(panel_personal_book_back_end_writing_books_url) }
+ format.xml { render :xml => @writing_book, :status => :created, :location => @writing_book }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_book.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_books/1
+ # PUT /writing_books/1.xml
+ def update
+ @writing_book = WritingBook.find(params[:id])
+
+ @writing_book.update_user_id = current_user.id
+
+ params[:writing_book][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_book.update_attributes(params[:writing_book])
+ format.html { redirect_to(panel_personal_book_back_end_writing_books_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_book.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_books/1
+ # DELETE /writing_books/1.xml
+ def destroy
+ @writing_book = WritingBook.find(params[:id])
+ @writing_book.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_book_back_end_writing_books_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_books = WritingBook.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_book_back_end_writing_books_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_book_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_book_categorys = (id ? WritingBookCategory.admin_manager_all.find(id).to_a : WritingBookCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_book_categorys = WritingBookCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_book_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_book'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/plugin/writing_books_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/plugin/writing_books_controller.rb
new file mode 100644
index 00000000..4d844181
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/plugin/writing_books_controller.rb
@@ -0,0 +1,183 @@
+class Panel::PersonalBook::Plugin::WritingBooksController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingBookCategory')
+ end
+
+ def index
+
+ get_categorys("BookPaperType",params[:book_paper_type_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
+ @paper_types = BookPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+
+ # @writing_books = WritingBook.search(params[:category_id])
+ #@writing_books = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_books : WritingBook.all.page(params[:page]).per(10)
+ @writing_books = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_book",:create_user_id => current_user.id) : get_viewable("writing_book", :create_user_id => current_user.id)
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_books }
+ format.js
+ end
+ end
+
+ # GET /writing_books/1
+ # GET /writing_books/1.xml
+ def show
+ @writing_book = WritingBook.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_book }
+ end
+ end
+
+ # GET /writing_books/new
+ # GET /writing_books/new.xml
+ def new
+
+ @writing_book = WritingBook.new
+ # @writing_book_files = WritingBookFile.all
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_book }
+ end
+ end
+
+ # GET /writing_books/1/edit
+ def edit
+ @writing_book = WritingBook.find(params[:id])
+
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_books
+ # POST /writing_books.xml
+ def create
+
+ # @level_types = BookLevelType.all
+ @author_types = BookAuthorType.all
+ @paper_types = BookPaperType.all
+ get_tags
+
+ @writing_book = WritingBook.new(params[:writing_book])
+
+ @writing_book.create_user_id = current_user.id
+ @writing_book.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_book.save
+ format.html { redirect_to(panel_personal_book_plugin_writing_books_url) }
+ format.xml { render :xml => @writing_book, :status => :created, :location => @writing_book }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_book.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_books/1
+ # PUT /writing_books/1.xml
+ def update
+ @writing_book = WritingBook.find(params[:id])
+
+ @writing_book.update_user_id = current_user.id
+
+ params[:writing_book][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_book.update_attributes(params[:writing_book])
+ format.html { redirect_to(panel_personal_book_plugin_writing_books_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_book.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_books/1
+ # DELETE /writing_books/1.xml
+ def destroy
+ @writing_book = WritingBook.find(params[:id])
+ @writing_book.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_book_plugin_writing_books_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_books = WritingBook.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_book_plugin_writing_books_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_book_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_book_categorys = (id ? WritingBookCategory.admin_manager_all.find(id).to_a : WritingBookCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_book_categorys = WritingBookCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_book_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_book'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/helpers/.gitkeep b/vendor/built_in_modules/personal_book/app/helpers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/mailers/.gitkeep b/vendor/built_in_modules/personal_book/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/models/.gitkeep b/vendor/built_in_modules/personal_book/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/models/book_author_type.rb b/vendor/built_in_modules/personal_book/app/models/book_author_type.rb
new file mode 100644
index 00000000..fae9be78
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/book_author_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class BookAuthorType < WritingBookCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_books
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/models/book_paper_type.rb b/vendor/built_in_modules/personal_book/app/models/book_paper_type.rb
new file mode 100644
index 00000000..e74b6392
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/book_paper_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class BookPaperType < WritingBookCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_books
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/models/personal_book_tag.rb b/vendor/built_in_modules/personal_book/app/models/personal_book_tag.rb
new file mode 100644
index 00000000..2b77f56e
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/personal_book_tag.rb
@@ -0,0 +1,9 @@
+class PersonalBookTag < Tag
+
+ has_and_belongs_to_many :writing_books
+
+ def get_visible_links(sort = :title)
+ self.writing_books.where(:is_hidden => false).desc(:is_top, sort)
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/models/writing_book.rb b/vendor/built_in_modules/personal_book/app/models/writing_book.rb
new file mode 100644
index 00000000..7547d0db
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/writing_book.rb
@@ -0,0 +1,126 @@
+# encoding: utf-8
+
+class WritingBook
+ 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 :paper_title, localize: true
+ field :book_title, localize: true
+ field :authors, localize: true
+ field :extracted_chapters, localize: true
+ field :publisher, localize: true
+ field :editor, localize: true
+
+ has_and_belongs_to_many :tags, :class_name => "PersonalBookTag"
+
+ has_and_belongs_to_many :book_author_types
+
+ belongs_to :book_paper_type
+
+ field :year
+ field :language
+ field :publish_date , :type => Date
+ field :pages
+ field :isbn
+ field :keywords
+ field :publication_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_book_files, :autosave => true, :dependent => :destroy
+
+ accepts_nested_attributes_for :writing_book_files, :allow_destroy => true
+
+ # before_save :update_avliable_language, :clean_checkboxs
+
+ validates :paper_title, :at_least_one => true
+
+ before_validation :add_http
+
+ after_save :save_writing_book_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_book_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_book_files
+ self.writing_book_files.each do |t|
+ if t.should_destroy
+ t.destroy
+ end
+ end
+ end
+
+ def create_link
+
+ title = ["\"#{self.extracted_chapters}\""]
+ title << self.book_title
+ title << self.publisher
+ title << self.pages
+ # title << "(#{self.journal_level_types.collect{|x| x.title}.join(', ')})"
+ title.join(', ')
+ 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('')
+ self.book_author_type_ids.delete('')
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/models/writing_book_category.rb b/vendor/built_in_modules/personal_book/app/models/writing_book_category.rb
new file mode 100644
index 00000000..1fdbaafa
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/writing_book_category.rb
@@ -0,0 +1,30 @@
+# encoding: utf-8
+
+class WritingBookCategory
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include OrbitCoreLib::ObjectAuthable
+ include OrbitCoreLib::ObjectDisable
+ # include Mongoid::MultiParameterAttributes
+ AfterObjectAuthUrl = '/panel/personal_book/back_end/writing_book_categorys'
+ APP_NAME = 'writing_book'
+ # ObjectAuthTitlesOptions = %W{edit}
+ ObjectAuthTitlesOptions = %W{submit_new fact_check}
+
+ field :key
+
+ has_many :writing_books
+
+ def pp_object
+ title
+ end
+
+ def self.from_id(id)
+ WritingBookCategory.find(id) rescue nil
+ end
+
+ def self.is_localized?(field_name)
+ self.fields[field_name.to_s].localized?
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/models/writing_book_file.rb b/vendor/built_in_modules/personal_book/app/models/writing_book_file.rb
new file mode 100644
index 00000000..c30cf8e9
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/models/writing_book_file.rb
@@ -0,0 +1,14 @@
+class WritingBookFile
+
+ 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_book
+
+end
diff --git a/vendor/built_in_modules/personal_book/app/views/.gitkeep b/vendor/built_in_modules/personal_book/app/views/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_form.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_form.html.erb
new file mode 100644
index 00000000..7394aff7
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_form.html.erb
@@ -0,0 +1,44 @@
+<% # encoding: utf-8 %>
+
+<%= form_for(:writing_book_category, :remote => true, :url => @url, :method => @verb, :html => { :id => 'form_writing_book_category' } ) do |f| %>
+
+
<%= (@writing_book_category.new_record? ? 'Add' : 'Edit') %>
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+
+ <%#= f.label :display %>
+ <%#= f.radio_button :display, "List" List%>
+ <%#= f.radio_button :display, "Picture" Picture%>
+ <%# 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘 %>
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+
+
+<% end %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_quick_edit_qe.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_quick_edit_qe.html.erb
new file mode 100644
index 00000000..005ae64e
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_quick_edit_qe.html.erb
@@ -0,0 +1,28 @@
+<% # encoding: utf-8 %>
+
+
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+ <%= f.label :display %>
+ <%= f.radio_button :display, "List" %>List
+ <%= f.radio_button :display, "Picture" %>Picture
+ 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_writing_book_category.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_writing_book_category.html.erb
new file mode 100644
index 00000000..9ccb7222
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/_writing_book_category.html.erb
@@ -0,0 +1,22 @@
+
+
+
+ <%= writing_book_category.key %>
+
+
+ <% if is_admin?%>
+ <%= link_to t('writing_book_category.edit'),
+ polymorphic_path([:panel, :personal_book, :back_end, writing_book_category], {:action => :edit}), :remote => true %>
+ <%= link_to show_toggle_archive_btn(writing_book_category), polymorphic_path([:panel, :personal_book, :back_end, writing_book_category]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %>
+ <% end %>
+
+
+
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= writing_book_category.title_translations[locale] rescue nil %>
+ <% end %>
+ <% else %>
+ <%= writing_book_category.title %>
+ <% end %>
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/create.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/create.js.erb
new file mode 100644
index 00000000..f4d09b48
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'writing_book_category', :collection => [@writing_book_category] %>').appendTo('#writing_book_categorys').hide().fadeIn();
+$("#form_writing_book_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/destroy.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/destroy.js.erb
new file mode 100644
index 00000000..f68fdd4a
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_book_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@writing_book_category) %> ");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.html.erb
new file mode 100644
index 00000000..3d28ceda
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.html.erb
@@ -0,0 +1,7 @@
+
<%= t('personal_book.editing_personal_book_class') %>
+
+<%= form_for @writing_book_category, :url => panel_personal_book_back_end_writing_book_category_path(@writing_book_category) do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.js.erb
new file mode 100644
index 00000000..eaff01fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/index.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/index.html.erb
new file mode 100644
index 00000000..92208be8
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/index.html.erb
@@ -0,0 +1,29 @@
+
+<%= flash_messages %>
+
+<%= @types %>
+
+
+
+
+ <%= t('writing_book_category.key') %>
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
+ <% end %>
+ <% else %>
+ <%= t('writing_book_category.title') %>
+ <% end %>
+
+
+
+
+ <%= render :partial => 'writing_book_category', :collection => @writing_book_categorys %>
+
+
+
+
+
<%= render :partial => "form" if is_manager? %>
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.html.erb
new file mode 100644
index 00000000..46d036bb
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.html.erb
@@ -0,0 +1,19 @@
+<% content_for :secondary do %>
+<%= render :partial => '/panel/personal_book/back_end/personal_book_secondary' %>
+<% end -%>
+
+<%= flash_messages %>
+
+
+
+
+
+
+
+
<%= t('writing_book_category.new_personal_book_class') %>
+<%= form_for @writing_book_category, :url => panel_personal_book_back_end_writing_book_categorys_path do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.js.erb
new file mode 100644
index 00000000..40061b9f
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/new.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/update.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/update.js.erb
new file mode 100644
index 00000000..eeb31070
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_book_categorys/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= dom_id @writing_book_category %>").replaceWith("<%= j render :partial => 'writing_book_category', :collection => [@writing_book_category] %>");
+<% @writing_book_category = @types.new(:display => 'List') # reset for new form %>
+$("#form_writing_book_category").replaceWith("<%= j render "form" %>")
+$("#form_writing_book_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_filter.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_filter.html.erb
new file mode 100644
index 00000000..63882b8f
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form.html.erb
new file mode 100644
index 00000000..f6488330
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form.html.erb
@@ -0,0 +1,246 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_book.year")%>
+ <%= select_year((@writing_book.year ? @writing_book.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_book[year]'} ) %>
+
+
+
+ <%= f.label :book_paper_type ,t("personal_book.book_paper_type")%>
+ <%= f.select :book_paper_type_id, @paper_types.collect {|t| [ t.title, t.id ]} %>
+
+
+
+
+
+ <%= f.label :publish_date ,t("personal_book.publish_date")%>
+ <%= f.date_select :publish_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_book.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :book_title ,t("personal_book.book_title")%>
+ <%= f.fields_for :book_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.book_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :extracted_chapters ,t("personal_book.extracted_chapters")%>
+ <%= f.fields_for :extracted_chapters_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.extracted_chapters_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :publisher ,t("personal_book.publisher")%>
+ <%= f.fields_for :publisher_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.publisher_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :editor ,t("personal_book.editor")%>
+ <%= f.fields_for :editor_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.editor_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_book.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_book.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :url, t("personal_book.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_book.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :pages, t("personal_book.pages") %>
+ <%= f.text_field :pages %>
+
+
+
+ <%= f.label :isbn, t("personal_book.isbn") %>
+ <%= f.text_field :isbn %>
+
+
+
+ <%= f.label :language, t("personal_book.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_book.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_book.English") %>
+
+
+
+ <%= f.label :note, t("personal_book.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_book.writing_book_files.each_with_index do |writing_book_file, i| %>
+ <%= f.fields_for :writing_book_files, writing_book_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_book_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form_file.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_sort_headers.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_sort_headers.html.erb
new file mode 100644
index 00000000..dcfb35c0
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_sort_headers.html.erb
@@ -0,0 +1,4 @@
+<%= render_sort_bar(true, delete_panel_personal_book_back_end_writing_books_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['year', 'year', 'span1', 'writing_book.year'],
+ ['title', 'title','span3', 'writing_book.title'],
+ ['create_modified', 'create_user_id','span1-3', 'writing_book.create_modified']).html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_writing_book.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_writing_book.html.erb
new file mode 100644
index 00000000..52bf1467
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/_writing_book.html.erb
@@ -0,0 +1,21 @@
+
+
+ <% if (writing_book.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_book.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_book.year %>
+
+ <%= link_to writing_book.create_link, panel_personal_book_front_end_writing_book_path(writing_book) %>
+
+
+ <%if at_least_module_manager || writing_book.writing_book_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_book_back_end_writing_book_path(writing_book) %>
+ <%= link_to t('delete'), panel_personal_book_back_end_writing_book_path(writing_book), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+ <%= User.from_id(writing_book.create_user_id).name rescue ''%>
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/destroy.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/destroy.js.erb
new file mode 100644
index 00000000..fa1af972
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_book %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/edit.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/edit.html.erb
new file mode 100644
index 00000000..716e3863
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_book.editing_personal_book') %>
+
+<%= form_for @writing_book, :url => panel_personal_book_back_end_writing_book_path(@writing_book), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.html.erb
new file mode 100644
index 00000000..83d7cff7
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_book', :collection => @writing_books %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.js.erb
new file mode 100644
index 00000000..12302893
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_books").html("<%= j render :partial => 'writing_book', :collection => @writing_books %>");
+$("#writing_book_pagination").html("<%= j paginate @writing_books, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/new.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/new.html.erb
new file mode 100644
index 00000000..07fb104a
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_book.new_personal_book') %>
+<%= form_for @writing_book, :url => panel_personal_book_back_end_writing_books_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/show.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/toggle_enable.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/back_end/writing_books/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_filter.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_filter.html.erb
new file mode 100644
index 00000000..63882b8f
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form.html.erb
new file mode 100644
index 00000000..f6488330
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form.html.erb
@@ -0,0 +1,246 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_book.year")%>
+ <%= select_year((@writing_book.year ? @writing_book.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_book[year]'} ) %>
+
+
+
+ <%= f.label :book_paper_type ,t("personal_book.book_paper_type")%>
+ <%= f.select :book_paper_type_id, @paper_types.collect {|t| [ t.title, t.id ]} %>
+
+
+
+
+
+ <%= f.label :publish_date ,t("personal_book.publish_date")%>
+ <%= f.date_select :publish_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_book.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :book_title ,t("personal_book.book_title")%>
+ <%= f.fields_for :book_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.book_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :extracted_chapters ,t("personal_book.extracted_chapters")%>
+ <%= f.fields_for :extracted_chapters_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.extracted_chapters_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :publisher ,t("personal_book.publisher")%>
+ <%= f.fields_for :publisher_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.publisher_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :editor ,t("personal_book.editor")%>
+ <%= f.fields_for :editor_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_book.editor_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_book.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_book.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :url, t("personal_book.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_book.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :pages, t("personal_book.pages") %>
+ <%= f.text_field :pages %>
+
+
+
+ <%= f.label :isbn, t("personal_book.isbn") %>
+ <%= f.text_field :isbn %>
+
+
+
+ <%= f.label :language, t("personal_book.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_book.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_book.English") %>
+
+
+
+ <%= f.label :note, t("personal_book.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_book.writing_book_files.each_with_index do |writing_book_file, i| %>
+ <%= f.fields_for :writing_book_files, writing_book_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_book_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form_file.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_sort_headers.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_sort_headers.html.erb
new file mode 100644
index 00000000..9f1aad8b
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_sort_headers.html.erb
@@ -0,0 +1,3 @@
+<%= render_sort_bar(true, delete_panel_personal_book_back_end_writing_books_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['year', 'year', 'span1', 'writing_book.year'],
+ ['title', 'title','span3', 'writing_book.title']).html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_writing_book.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_writing_book.html.erb
new file mode 100644
index 00000000..81c11fa7
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/_writing_book.html.erb
@@ -0,0 +1,20 @@
+
+
+ <% if (writing_book.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_book.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_book.year %>
+
+ <%= link_to writing_book.create_link, panel_personal_book_front_end_writing_book_path(writing_book) %>
+
+
+ <%if at_least_module_manager || writing_book.writing_book_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_book_plugin_writing_book_path(writing_book) %>
+ <%= link_to t('delete'), panel_personal_book_plugin_writing_book_path(writing_book), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/destroy.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/destroy.js.erb
new file mode 100644
index 00000000..fa1af972
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_book %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/edit.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/edit.html.erb
new file mode 100644
index 00000000..a1e1b1b0
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_book.editing_personal_book') %>
+
+<%= form_for @writing_book, :url => panel_personal_book_plugin_writing_book_path(@writing_book), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.html.erb
new file mode 100644
index 00000000..50ed9951
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_book', :collection => @writing_books %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.js.erb
new file mode 100644
index 00000000..12302893
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_books").html("<%= j render :partial => 'writing_book', :collection => @writing_books %>");
+$("#writing_book_pagination").html("<%= j paginate @writing_books, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/new.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/new.html.erb
new file mode 100644
index 00000000..0ada32ba
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_book.new_personal_book') %>
+<%= form_for @writing_book, :url => panel_personal_book_plugin_writing_books_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/show.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/toggle_enable.js.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/plugin/writing_books/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/config/locales/en.yml b/vendor/built_in_modules/personal_book/config/locales/en.yml
new file mode 100644
index 00000000..83dbd328
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/config/locales/en.yml
@@ -0,0 +1,135 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+
+ _locale: English
+
+ add: Add
+ back: Back
+ create: Create
+ delete: Delete
+ disable: Disable
+ downloaded: Downloaded
+ download: Download
+ edit: Edit
+ enable: Enable
+ hide: Hide
+ homepage: Homepage
+ no_: "No"
+ nothing: Nothing
+ show: Show
+ sure?: Are you sure?
+ update: Update
+ yes_: "Yes"
+
+ announcement:
+ sure?: Sure?
+
+
+ web_resource:
+ list_lower: list
+ list_link: Links list
+
+
+ # admin:
+ # action: Action
+ # add_language: Add language
+ # admin: Admin
+ # action: Action
+ # announcement: Announcement
+ # asset: Asset
+ # attributes: Attributes
+ # cant_delete_self: You can not delete yourself.
+ # cant_revoke_self_admin: You can not revoke your admin role yourself.
+ # class: Class
+ # content: Content
+ # create_error_link: Error when creating link.
+ # create_error_page: Error when creating page.
+ # create_success_home: Homepage was successfully created.
+ # create_success_layout: Layout was successfully created.
+ # create_success_link: Link was successfully created.
+ # create_success_page: Page was successfully created.
+ # create_success_snippet: Snippet was successfully created.
+ # create_success_user: User was successfully created.
+ # data: Data
+ # delete_language: Delete language
+ # description: Description
+ # design: Design
+ # disable_language: Disable language
+ # editing_home: Editing homepage
+ # editing_layout: Editing layout
+ # editing_link: Editing link
+ # editing_page: Editing page
+ # editing_snippet: Editing snippet
+ # editing_user_info: Editing user information
+ # editing_user_role: Editing user role
+ # email: Email
+ # enable_language: Enable language
+ # file_name: Filename
+ # file_size: File size
+ # format: Format
+ # home: Home
+ # id: ID
+ # info: Information
+ # is_published: Is published
+ # item: Item
+ # key: Key
+ # language: Language
+ # layout: Layout
+ # layout_name: Layout name
+ # list_assets: Assets list
+ # list_designs: Designs list
+ # list_items: Items list
+ # list_puchases: Purchases list
+ # list_snippets: Snippets list
+ # list_users: Users list
+ # list_user_infos: User information list
+ # list_user_roles: User roles list
+ # member: Member
+ # move_down: Move down
+ # move_up: Move up
+ # multilingual: Multilingual
+ # my_avatar: My Avatar
+ # no_home_page: You don't have a homepage
+ # no_layout: You don't have a layout
+ # name: Name
+ # new_asset: New asset
+ # new_component: New component
+ # new_home: New homepage
+ # new_layout: New layout
+ # new_link: New link
+ # new_page: New page
+ # new_snippet: New snippet
+ # new_user: New user
+ # new_user_info: New user information
+ # new_user_role: New user role
+ # non_multilingual: Non multilingual
+ # options: Options
+ # orig_upload_file: Original filename
+ # position: Position
+ # published?: Published?
+ # purchase: Purchase
+ # registered: Registered
+ # role: Role
+ # roles: Roles
+ # title: Title
+ # translation: Translation
+ # type: Type
+ # up_to_date: Up-to-date
+ # update_error_link: Error when updating link.
+ # update_error_page: Error when updating page.
+ # update_success_content: Content was successfully updated.
+ # update_success_home: Homepage was successfully updated.
+ # update_success_layout: Layout was successfully updated.
+ # update_success_link: Link was successfully updated.
+ # update_success_page: Page was successfully updated.
+ # update_success_snippet: Snippet was successfully updated.
+ # update_success_user: User was successfully updated.
+ # url: URL
+ # user: User
+ # user_info: User information
+ # user_panel: User panel
+ # user_role: User role
+
+ panel:
diff --git a/vendor/built_in_modules/personal_book/config/locales/zh_tw.yml b/vendor/built_in_modules/personal_book/config/locales/zh_tw.yml
new file mode 100644
index 00000000..a0104cbd
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/config/locales/zh_tw.yml
@@ -0,0 +1,243 @@
+zh_tw:
+
+ _locale: 銝剜
+
+ add: 啣
+ back:
+ create: 菟
+ delete: 芷
+ disable: 蝳
+ edit: 蝺刻摩
+ enable:
+ hide: 梯
+ homepage: 擐
+ no_: "No"
+ nothing:
+ show: 憿舐內
+ sure?: 刻臬?
+ update: 湔
+ yes_: "Yes"
+
+ web_resource:
+ list_lower: 銵
+ list_link: 亙銵
+ category: 憿
+ name: 蝔
+ describe: 餈
+ url: 頝臬
+ edit: 蝺刻摩
+ delete: 芷
+ cate_auth: 憿甈
+
+
+# Chinese (Taiwan) translations for Ruby on Rails
+# by tsechingho (http://github.com/tsechingho)
+ date:
+ formats:
+ default: "%Y-%m-%d"
+ short: "%b%d"
+ long: "%Y撟%b%d"
+ day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ abbr_day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ month_names: [~, 銝, 鈭, 銝, , 鈭, 剜, 銝, 急, 銋, , 銝, 鈭]
+ abbr_month_names: [~, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
+ order: [ :year, :month, :day ]
+
+ time:
+ formats:
+ default: "%Y撟%b%d %A %H:%M:%S %Z"
+ short: "%b%d %H:%M"
+ long: "%Y撟%b%d %H:%M"
+ am: "銝"
+ pm: "銝"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: ""
+ less_than_x_seconds:
+ one: "銝唬蝘"
+ other: "銝 %{count} 蝘"
+ x_seconds:
+ one: "銝蝘"
+ other: "%{count} 蝘"
+ less_than_x_minutes:
+ one: "銝唬"
+ other: "銝 %{count} "
+ x_minutes:
+ one: "銝"
+ other: "%{count} "
+ about_x_hours:
+ one: "憭抒銝撠"
+ other: "憭抒 %{count} 撠"
+ x_days:
+ one: "銝憭"
+ other: "%{count} 憭"
+ about_x_months:
+ one: "憭抒銝"
+ other: "憭抒 %{count} "
+ x_months:
+ one: "銝"
+ other: "%{count} "
+ about_x_years:
+ one: "憭抒銝撟"
+ other: "憭抒 %{count} 撟"
+ over_x_years:
+ one: "銝撟游"
+ other: "%{count} 撟游"
+ almost_x_years:
+ one: "亥銝撟"
+ other: "亥 %{count} 撟"
+ prompts:
+ year: "撟"
+ month: ""
+ day: ""
+ hour: ""
+ minute: ""
+ second: "蝘"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ","
+ precision: 3
+ significant: false
+ strip_insignificant_zeros: false
+ currency:
+ format:
+ format: "%u %n"
+ unit: "NT$"
+ separator: "."
+ delimiter: ","
+ precision: 2
+ significant: false
+ strip_insignificant_zeros: false
+ percentage:
+ format:
+ delimiter: ""
+ precision:
+ format:
+ delimiter: ""
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ significant: false
+ strip_insignificant_zeros: false
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Byte"
+ other: "Bytes"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+ decimal_units:
+ format: "%n %u"
+ units:
+ # 10^-21 zepto, 10^-24 yocto
+ atto: "皜" # 10^-18
+ femto: "憌" # 10^-15 瘥怠凝敺
+ pico: "瞍" # 10^-12 敺桀凝
+ nano: "憟" # 10^-9 瘥怠凝
+ micro: "敺" # 10^-6
+ mili: "瘥" # 10^-3 milli
+ centi: "" # 10^-2
+ deci: "" # 10^-1
+ unit: ""
+ ten:
+ one: ""
+ other: "" # 10^1
+ hundred: "" # 10^2
+ thousand: "" # 10^3 kilo
+ million: "曇" # 10^6 mega
+ billion: "" # 10^9 giga
+ trillion: "" # 10^12 tera
+ quadrillion: "" # 10^15 peta
+ # 10^18 exa, 10^21 zetta, 10^24 yotta
+
+ support:
+ array:
+ words_connector: ", "
+ two_words_connector: " "
+ last_word_connector: ", "
+ select:
+ prompt: "隢豢"
+
+ activerecord:
+ errors:
+ template: # ~ 2.3.5 backward compatible
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+ full_messages:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ taken: "撌脩鋡思蝙"
+ record_invalid: "⊿憭望: %{errors}"
+
+ activemodel:
+ errors:
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ errors:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ helpers:
+ select:
+ prompt: "隢豢"
+ submit:
+ create: "啣%{model}"
+ update: "湔%{model}"
+ submit: "脣%{model}"
+
diff --git a/vendor/built_in_modules/personal_book/config/routes.rb b/vendor/built_in_modules/personal_book/config/routes.rb
new file mode 100644
index 00000000..6e26ad91
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/config/routes.rb
@@ -0,0 +1,30 @@
+Rails.application.routes.draw do
+
+ namespace :panel do
+ namespace :personal_book do
+ namespace :back_end do
+ resources :writing_books do
+ collection do
+ get 'delete'
+ end
+ end
+ resources :book_paper_types
+ resources :book_author_types
+ resources :tags
+ end
+ namespace :front_end do
+ resources :writing_books
+ end
+ namespace :plugin do
+ resources :writing_books
+ end
+ namespace :widget do
+ match "writing_books" => "writing_books#index"
+ match "home_list" => "writing_books#home_list"
+ match "reload_writing_books" => "writing_books#reload_writing_books"
+ end
+ end
+ end
+ match "/appfront/*path" => redirect("/panel/*path")
+
+end
diff --git a/vendor/built_in_modules/personal_book/lib/personal_book.rb b/vendor/built_in_modules/personal_book/lib/personal_book.rb
new file mode 100644
index 00000000..223609f0
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/lib/personal_book.rb
@@ -0,0 +1,4 @@
+require "personal_book/engine"
+
+module PersonalBook
+end
diff --git a/vendor/built_in_modules/personal_book/lib/personal_book/engine.rb b/vendor/built_in_modules/personal_book/lib/personal_book/engine.rb
new file mode 100644
index 00000000..8150be14
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/lib/personal_book/engine.rb
@@ -0,0 +1,4 @@
+module PersonalBook
+ class Engine < Rails::Engine
+ end
+end
diff --git a/vendor/built_in_modules/personal_book/lib/personal_book/version.rb b/vendor/built_in_modules/personal_book/lib/personal_book/version.rb
new file mode 100644
index 00000000..584596d3
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/lib/personal_book/version.rb
@@ -0,0 +1,3 @@
+module PersonalBook
+ VERSION = "0.0.1"
+end
diff --git a/vendor/built_in_modules/personal_book/lib/tasks/personal_book_tasks.rake b/vendor/built_in_modules/personal_book/lib/tasks/personal_book_tasks.rake
new file mode 100644
index 00000000..bcd93d32
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/lib/tasks/personal_book_tasks.rake
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :personal_book do
+# # Task goes here
+# end
diff --git a/vendor/built_in_modules/personal_book/personal_book.gemspec b/vendor/built_in_modules/personal_book/personal_book.gemspec
new file mode 100644
index 00000000..5500bdcf
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/personal_book.gemspec
@@ -0,0 +1,23 @@
+$:.push File.expand_path("../lib", __FILE__)
+
+# Maintain your gem's version:
+require "personal_book/version"
+
+# Describe your gem and declare its dependencies:
+Gem::Specification.new do |s|
+ s.name = "personal_book"
+ s.version = PersonalBook::VERSION
+ s.authors = ["TODO: Your name"]
+ s.email = ["TODO: Your email"]
+ s.homepage = "TODO"
+ s.summary = "TODO: Summary of PersonalBook."
+ s.description = "TODO: Description of PersonalBook."
+
+ s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
+ s.test_files = Dir["test/**/*"]
+
+ s.add_dependency "rails", "~> 3.1.4"
+ # s.add_dependency "jquery-rails"
+
+ s.add_development_dependency "sqlite3"
+end
diff --git a/vendor/built_in_modules/personal_book/personal_book.json b/vendor/built_in_modules/personal_book/personal_book.json
new file mode 100644
index 00000000..00437fe4
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/personal_book.json
@@ -0,0 +1,13 @@
+{
+ "title": "personal_book",
+ "object": "writing_book",
+ "version": "0.1",
+ "organization": "Rulingcom",
+ "author": "RD dep",
+ "intro": "A simple blog色",
+ "update_info": "Some info",
+ "create_date": "09-08-2012",
+ "category": ["WritingBookCategory"],
+ "enable_frontend": true,
+ "has_plugin": true
+}
diff --git a/vendor/built_in_modules/personal_book/script/rails b/vendor/built_in_modules/personal_book/script/rails
new file mode 100644
index 00000000..23bd81fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+#!/usr/bin/env ruby
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+ENGINE_PATH = File.expand_path('../..', __FILE__)
+load File.expand_path('../../test/dummy/script/rails', __FILE__)
diff --git a/vendor/built_in_modules/personal_book/test/dummy/Rakefile b/vendor/built_in_modules/personal_book/test/dummy/Rakefile
new file mode 100644
index 00000000..36458522
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/Rakefile
@@ -0,0 +1,7 @@
+#!/usr/bin/env rake
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+
+Dummy::Application.load_tasks
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/assets/javascripts/application.js b/vendor/built_in_modules/personal_book/test/dummy/app/assets/javascripts/application.js
new file mode 100644
index 00000000..37c7bfcd
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/app/assets/javascripts/application.js
@@ -0,0 +1,9 @@
+// This is a manifest file that'll be compiled into including all the files listed below.
+// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
+// be included in the compiled file accessible from http://example.com/assets/application.js
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// the compiled file.
+//
+//= require jquery
+//= require jquery_ujs
+//= require_tree .
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/assets/stylesheets/application.css b/vendor/built_in_modules/personal_book/test/dummy/app/assets/stylesheets/application.css
new file mode 100644
index 00000000..fc25b572
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/app/assets/stylesheets/application.css
@@ -0,0 +1,7 @@
+/*
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
+ *= require_self
+ *= require_tree .
+*/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_book/test/dummy/app/controllers/application_controller.rb
new file mode 100644
index 00000000..e8065d95
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/app/controllers/application_controller.rb
@@ -0,0 +1,3 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/helpers/application_helper.rb b/vendor/built_in_modules/personal_book/test/dummy/app/helpers/application_helper.rb
new file mode 100644
index 00000000..de6be794
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/mailers/.gitkeep b/vendor/built_in_modules/personal_book/test/dummy/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/models/.gitkeep b/vendor/built_in_modules/personal_book/test/dummy/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/test/dummy/app/views/layouts/application.html.erb b/vendor/built_in_modules/personal_book/test/dummy/app/views/layouts/application.html.erb
new file mode 100644
index 00000000..9a8a761b
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+
+
+
+
Dummy
+ <%= stylesheet_link_tag "application" %>
+ <%= javascript_include_tag "application" %>
+ <%= csrf_meta_tags %>
+
+
+
+<%= yield %>
+
+
+
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config.ru b/vendor/built_in_modules/personal_book/test/dummy/config.ru
new file mode 100644
index 00000000..1989ed8d
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run Dummy::Application
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/application.rb b/vendor/built_in_modules/personal_book/test/dummy/config/application.rb
new file mode 100644
index 00000000..b070f847
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/application.rb
@@ -0,0 +1,45 @@
+require File.expand_path('../boot', __FILE__)
+
+require 'rails/all'
+
+Bundler.require
+require "personal_book"
+
+module Dummy
+ class Application < Rails::Application
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration should go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded.
+
+ # Custom directories with classes and modules you want to be autoloadable.
+ # config.autoload_paths += %W(#{config.root}/extras)
+
+ # Only load the plugins named here, in the order given (default is alphabetical).
+ # :all can be used as a placeholder for all plugins not explicitly named.
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+ # Activate observers that should always be running.
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
+
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+ # config.time_zone = 'Central Time (US & Canada)'
+
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+ # config.i18n.default_locale = :de
+
+ # Configure the default encoding used in templates for Ruby 1.9.
+ config.encoding = "utf-8"
+
+ # Configure sensitive parameters which will be filtered from the log file.
+ config.filter_parameters += [:password]
+
+ # Enable the asset pipeline
+ config.assets.enabled = true
+
+ # Version of your assets, change this if you want to expire all your assets
+ config.assets.version = '1.0'
+ end
+end
+
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/boot.rb b/vendor/built_in_modules/personal_book/test/dummy/config/boot.rb
new file mode 100644
index 00000000..eba06813
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/boot.rb
@@ -0,0 +1,10 @@
+require 'rubygems'
+gemfile = File.expand_path('../../../../Gemfile', __FILE__)
+
+if File.exist?(gemfile)
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ require 'bundler'
+ Bundler.setup
+end
+
+$:.unshift File.expand_path('../../../../lib', __FILE__)
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/database.yml b/vendor/built_in_modules/personal_book/test/dummy/config/database.yml
new file mode 100644
index 00000000..51a4dd45
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/database.yml
@@ -0,0 +1,25 @@
+# SQLite version 3.x
+# gem install sqlite3
+#
+# Ensure the SQLite 3 gem is defined in your Gemfile
+# gem 'sqlite3'
+development:
+ adapter: sqlite3
+ database: db/development.sqlite3
+ pool: 5
+ timeout: 5000
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3
+ pool: 5
+ timeout: 5000
+
+production:
+ adapter: sqlite3
+ database: db/production.sqlite3
+ pool: 5
+ timeout: 5000
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/environment.rb b/vendor/built_in_modules/personal_book/test/dummy/config/environment.rb
new file mode 100644
index 00000000..3da5eb91
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the rails application
+require File.expand_path('../application', __FILE__)
+
+# Initialize the rails application
+Dummy::Application.initialize!
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/environments/development.rb b/vendor/built_in_modules/personal_book/test/dummy/config/environments/development.rb
new file mode 100644
index 00000000..95a50b91
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/environments/development.rb
@@ -0,0 +1,30 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Don't care if the mailer can't send
+ config.action_mailer.raise_delivery_errors = false
+
+ # Print deprecation notices to the Rails logger
+ config.active_support.deprecation = :log
+
+ # Only use best-standards-support built into browsers
+ config.action_dispatch.best_standards_support = :builtin
+
+ # Do not compress assets
+ config.assets.compress = false
+
+ # Expands the lines which load the assets
+ config.assets.debug = true
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/environments/production.rb b/vendor/built_in_modules/personal_book/test/dummy/config/environments/production.rb
new file mode 100644
index 00000000..ca2c5888
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/environments/production.rb
@@ -0,0 +1,60 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # Code is not reloaded between requests
+ config.cache_classes = true
+
+ # Full error reports are disabled and caching is turned on
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Disable Rails's static asset server (Apache or nginx will already do this)
+ config.serve_static_assets = false
+
+ # Compress JavaScripts and CSS
+ config.assets.compress = true
+
+ # Don't fallback to assets pipeline if a precompiled asset is missed
+ config.assets.compile = false
+
+ # Generate digests for assets URLs
+ config.assets.digest = true
+
+ # Defaults to Rails.root.join("public/assets")
+ # config.assets.manifest = YOUR_PATH
+
+ # Specifies the header that your server uses for sending files
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # See everything in the log (default is :info)
+ # config.log_level = :debug
+
+ # Use a different logger for distributed setups
+ # config.logger = SyslogLogger.new
+
+ # Use a different cache store in production
+ # config.cache_store = :mem_cache_store
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server
+ # config.action_controller.asset_host = "http://assets.example.com"
+
+ # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
+ # config.assets.precompile += %w( search.js )
+
+ # Disable delivery errors, bad email addresses will be ignored
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable threaded mode
+ # config.threadsafe!
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation can not be found)
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners
+ config.active_support.deprecation = :notify
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/environments/test.rb b/vendor/built_in_modules/personal_book/test/dummy/config/environments/test.rb
new file mode 100644
index 00000000..6810c914
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/environments/test.rb
@@ -0,0 +1,39 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Configure static asset server for tests with Cache-Control for performance
+ config.serve_static_assets = true
+ config.static_cache_control = "public, max-age=3600"
+
+ # Log error messages when you accidentally call methods on nil
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/backtrace_silencers.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/backtrace_silencers.rb
new file mode 100644
index 00000000..59385cdf
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/inflections.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/inflections.rb
new file mode 100644
index 00000000..9e8b0131
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/inflections.rb
@@ -0,0 +1,10 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format
+# (all these examples are active by default):
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/mime_types.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/mime_types.rb
new file mode 100644
index 00000000..72aca7e4
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/secret_token.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/secret_token.rb
new file mode 100644
index 00000000..c1d83c9a
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/secret_token.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+Dummy::Application.config.secret_token = '96afb563c6c363c2fff742ec992448b20e628173a67f4b1ba34ba55addd9bd416055d42820706664d8cc4fe329e0cb1282e1b4de377c547fbed039853856b819'
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/session_store.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/session_store.rb
new file mode 100644
index 00000000..952473ff
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/session_store.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
+
+# Use the database for sessions instead of the cookie-based default,
+# which shouldn't be used to store highly confidential information
+# (create the session table with "rails generate session_migration")
+# Dummy::Application.config.session_store :active_record_store
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/initializers/wrap_parameters.rb b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/wrap_parameters.rb
new file mode 100644
index 00000000..999df201
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+ wrap_parameters format: [:json]
+end
+
+# Disable root element in JSON by default.
+ActiveSupport.on_load(:active_record) do
+ self.include_root_in_json = false
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/locales/en.yml b/vendor/built_in_modules/personal_book/test/dummy/config/locales/en.yml
new file mode 100644
index 00000000..179c14ca
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/locales/en.yml
@@ -0,0 +1,5 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+ hello: "Hello world"
diff --git a/vendor/built_in_modules/personal_book/test/dummy/config/routes.rb b/vendor/built_in_modules/personal_book/test/dummy/config/routes.rb
new file mode 100644
index 00000000..bb509f27
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/config/routes.rb
@@ -0,0 +1,58 @@
+Dummy::Application.routes.draw do
+ # The priority is based upon order of creation:
+ # first created -> highest priority.
+
+ # Sample of regular route:
+ # match 'products/:id' => 'catalog#view'
+ # Keep in mind you can assign values other than :controller and :action
+
+ # Sample of named route:
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
+ # This route can be invoked with purchase_url(:id => product.id)
+
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
+ # resources :products
+
+ # Sample resource route with options:
+ # resources :products do
+ # member do
+ # get 'short'
+ # post 'toggle'
+ # end
+ #
+ # collection do
+ # get 'sold'
+ # end
+ # end
+
+ # Sample resource route with sub-resources:
+ # resources :products do
+ # resources :comments, :sales
+ # resource :seller
+ # end
+
+ # Sample resource route with more complex sub-resources
+ # resources :products do
+ # resources :comments
+ # resources :sales do
+ # get 'recent', :on => :collection
+ # end
+ # end
+
+ # Sample resource route within a namespace:
+ # namespace :admin do
+ # # Directs /admin/products/* to Admin::ProductsController
+ # # (app/controllers/admin/products_controller.rb)
+ # resources :products
+ # end
+
+ # You can have the root of your site routed with "root"
+ # just remember to delete public/index.html.
+ # root :to => 'welcome#index'
+
+ # See how all your routes lay out with "rake routes"
+
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
+ # Note: This route will make all actions in every controller accessible via GET requests.
+ # match ':controller(/:action(/:id(.:format)))'
+end
diff --git a/vendor/built_in_modules/personal_book/test/dummy/lib/assets/.gitkeep b/vendor/built_in_modules/personal_book/test/dummy/lib/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/test/dummy/log/.gitkeep b/vendor/built_in_modules/personal_book/test/dummy/log/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/test/dummy/public/404.html b/vendor/built_in_modules/personal_book/test/dummy/public/404.html
new file mode 100644
index 00000000..9a48320a
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/public/404.html
@@ -0,0 +1,26 @@
+
+
+
+
The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
+
diff --git a/vendor/built_in_modules/personal_book/test/dummy/public/422.html b/vendor/built_in_modules/personal_book/test/dummy/public/422.html
new file mode 100644
index 00000000..83660ab1
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/public/422.html
@@ -0,0 +1,26 @@
+
+
+
+
The change you wanted was rejected (422)
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
+
diff --git a/vendor/built_in_modules/personal_book/test/dummy/public/500.html b/vendor/built_in_modules/personal_book/test/dummy/public/500.html
new file mode 100644
index 00000000..b80307fc
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/public/500.html
@@ -0,0 +1,26 @@
+
+
+
+
We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
We've been notified about this issue and we'll take a look at it shortly.
+
+
+
diff --git a/vendor/built_in_modules/personal_book/test/dummy/public/favicon.ico b/vendor/built_in_modules/personal_book/test/dummy/public/favicon.ico
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_book/test/dummy/script/rails b/vendor/built_in_modules/personal_book/test/dummy/script/rails
new file mode 100644
index 00000000..81eab02f
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/dummy/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
+require 'rails/commands'
diff --git a/vendor/built_in_modules/personal_book/test/integration/navigation_test.rb b/vendor/built_in_modules/personal_book/test/integration/navigation_test.rb
new file mode 100644
index 00000000..97a94c9b
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/integration/navigation_test.rb
@@ -0,0 +1,10 @@
+require 'test_helper'
+
+class NavigationTest < ActionDispatch::IntegrationTest
+ fixtures :all
+
+ # test "the truth" do
+ # assert true
+ # end
+end
+
diff --git a/vendor/built_in_modules/personal_book/test/personal_book_test.rb b/vendor/built_in_modules/personal_book/test/personal_book_test.rb
new file mode 100644
index 00000000..4cb0ce54
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/personal_book_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PersonalBookTest < ActiveSupport::TestCase
+ test "truth" do
+ assert_kind_of Module, PersonalBook
+ end
+end
diff --git a/vendor/built_in_modules/personal_book/test/test_helper.rb b/vendor/built_in_modules/personal_book/test/test_helper.rb
new file mode 100644
index 00000000..dcd3b276
--- /dev/null
+++ b/vendor/built_in_modules/personal_book/test/test_helper.rb
@@ -0,0 +1,10 @@
+# Configure Rails Environment
+ENV["RAILS_ENV"] = "test"
+
+require File.expand_path("../dummy/config/environment.rb", __FILE__)
+require "rails/test_help"
+
+Rails.backtrace_cleaner.remove_silencers!
+
+# Load support files
+Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
diff --git a/vendor/built_in_modules/personal_journal/.gitignore b/vendor/built_in_modules/personal_journal/.gitignore
new file mode 100644
index 00000000..1463de6d
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/.gitignore
@@ -0,0 +1,6 @@
+.bundle/
+log/*.log
+pkg/
+test/dummy/db/*.sqlite3
+test/dummy/log/*.log
+test/dummy/tmp/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/Gemfile b/vendor/built_in_modules/personal_journal/Gemfile
new file mode 100644
index 00000000..ee154b1b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/Gemfile
@@ -0,0 +1,17 @@
+source "http://rubygems.org"
+
+# Declare your gem's dependencies in personal_journal.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'
diff --git a/vendor/built_in_modules/personal_journal/MIT-LICENSE b/vendor/built_in_modules/personal_journal/MIT-LICENSE
new file mode 100644
index 00000000..406f17b7
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/MIT-LICENSE
@@ -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.
diff --git a/vendor/built_in_modules/personal_journal/README.rdoc b/vendor/built_in_modules/personal_journal/README.rdoc
new file mode 100644
index 00000000..16a320b3
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/README.rdoc
@@ -0,0 +1,3 @@
+= PersonalJournal
+
+This project rocks and uses MIT-LICENSE.
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/Rakefile b/vendor/built_in_modules/personal_journal/Rakefile
new file mode 100644
index 00000000..6ded2a16
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/Rakefile
@@ -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 = 'PersonalJournal'
+ 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
diff --git a/vendor/built_in_modules/personal_journal/app/assets/images/personal_journal/.gitkeep b/vendor/built_in_modules/personal_journal/app/assets/images/personal_journal/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/assets/javascripts/personal_journal/.gitkeep b/vendor/built_in_modules/personal_journal/app/assets/javascripts/personal_journal/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/assets/stylesheets/personal_journal/.gitkeep b/vendor/built_in_modules/personal_journal/app/assets/stylesheets/personal_journal/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/.gitkeep b/vendor/built_in_modules/personal_journal/app/controllers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/application_controller.rb
new file mode 100644
index 00000000..307a4acd
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/application_controller.rb
@@ -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
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_author_types_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_author_types_controller.rb
new file mode 100644
index 00000000..0d138cab
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_author_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalJournal::BackEnd::JournalAuthorTypesController < Panel::PersonalJournal::BackEnd::WritingJournalCategorysController
+
+ def initialize
+ super
+ @app_type = 'journal_author_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_level_types_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_level_types_controller.rb
new file mode 100644
index 00000000..f04f1cb7
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_level_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalJournal::BackEnd::JournalLevelTypesController < Panel::PersonalJournal::BackEnd::WritingJournalCategorysController
+
+ def initialize
+ super
+ @app_type = 'journal_level_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_paper_types_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_paper_types_controller.rb
new file mode 100644
index 00000000..83e15935
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/journal_paper_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalJournal::BackEnd::JournalPaperTypesController < Panel::PersonalJournal::BackEnd::WritingJournalCategorysController
+
+ def initialize
+ super
+ @app_type = 'journal_paper_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/tags_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/tags_controller.rb
new file mode 100644
index 00000000..a3ae6055
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/tags_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalJournal::BackEnd::TagsController < Admin::TagsController
+
+ def initialize
+ super
+ @app_title = 'personal_journal'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journal_categorys_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journal_categorys_controller.rb
new file mode 100644
index 00000000..a9b7ebc2
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journal_categorys_controller.rb
@@ -0,0 +1,141 @@
+class Panel::PersonalJournal::BackEnd::WritingJournalCategorysController < OrbitBackendController
+ before_filter :for_app_manager,:except => [:index]
+ include OrbitControllerLib::DivisionForDisable
+
+ def index
+
+ get_types
+
+ @writing_journal_categorys = @types.all
+ @writing_journal_category = @types.new(:display => 'List')
+
+ # @url = panel_personal_journal_back_end_writing_journal_categorys_path
+ @url = eval("panel_personal_journal_back_end_#{@app_type}s_path")
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_journals/1
+ # GET /writing_journals/1.xml
+ def show
+
+ get_types
+
+ @writing_journal_category = @types.find(params[:id])
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_journals/new
+ # GET /writing_journals/new.xml
+ def new
+
+ get_types
+
+ @writing_journal_category = @types.new(:display => 'List')
+
+ @verb = :post
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_journals/1/edit
+ def edit
+
+ get_types
+
+ @writing_journal_category = @types.find(params[:id])
+
+ # @url = panel_personal_journal_back_end_writing_journal_category_path(@writing_journal_category)
+ # @url = eval("panel_personal_journal_back_end_#{@app_type}_path(@writing_journal_category)")
+ @url = polymorphic_path([:panel, :personal_journal, :back_end, @writing_journal_category])
+
+ @verb = :put
+
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # POST /writing_journals
+ # POST /writing_journals.xml
+ def create
+
+ get_types
+
+ @writing_journal_category = @types.new(params[:writing_journal_category])
+
+ respond_to do |format|
+ if @writing_journal_category.save
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journal_categorys_url, :notice => t('writing_journal_category.create_writing_journal_category_success')) }
+ format.js
+ else
+ format.html { render :action => "new" }
+ format.js { render action: "new" }
+ end
+ end
+ end
+
+ # PUT /writing_journals/1
+ # PUT /writing_journals/1.xml
+ def update
+
+ get_types
+
+ @writing_journal_category = @types.find(params[:id])
+ # debugger
+ # @url = panel_personal_journal_back_end_writing_journal_category_path(@writing_journal_category)
+ # @url = eval("panel_personal_journal_back_end_#{@app_type}_path(#{@writing_journal_category})")
+ @url = polymorphic_path([:panel, :personal_journal, :back_end, @writing_journal_category])
+
+ respond_to do |format|
+ if @writing_journal_category.update_attributes(params[:writing_journal_category])
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journal_categorys_url, :notice => t('writing_journal_category.update_writing_journal_category_success')) }
+ # format.xml { head :ok }
+ format.js
+ else
+ format.html { render :action => "edit" }
+ format.js { render :action => "edit" }
+ end
+ end
+ end
+
+ # DELETE /writing_journals/1
+ # DELETE /writing_journals/1.xml
+ def destroy
+
+ get_types
+
+ @writing_journal_category = @types.find(params[:id])
+ @writing_journal_category.disable = @writing_journal_category.disable ? false : true
+
+ if @writing_journal_category.save!
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journal_categorys_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ else
+ flash[:error] = t("writing_journal_category.update_failed")
+ format.html { render :action => "index" }
+ end
+
+ end
+
+ protected
+
+ def get_types
+ @types = @app_type.classify.constantize
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journals_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journals_controller.rb
new file mode 100644
index 00000000..0d7d855b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/back_end/writing_journals_controller.rb
@@ -0,0 +1,185 @@
+class Panel::PersonalJournal::BackEnd::WritingJournalsController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingJournalCategory')
+ end
+
+ def index
+
+ get_categorys("JournalPaperType",params[:journal_paper_type_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
+
+ @paper_types = JournalPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+ @level_types = JournalLevelType.all
+
+ # @writing_journals = WritingJournal.search(params[:category_id])
+ #@writing_journals = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_journals : WritingJournal.all.page(params[:page]).per(10)
+ @writing_journals = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_journal",:journal_paper_type_id.in => @paper_type_ids) : get_viewable("writing_journal",:journal_paper_type_id.in => @paper_type_ids)
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_journals }
+ format.js
+ end
+ end
+
+ # GET /writing_journals/1
+ # GET /writing_journals/1.xml
+ def show
+ @writing_journal = WritingJournal.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_journal }
+ end
+ end
+
+ # GET /writing_journals/new
+ # GET /writing_journals/new.xml
+ def new
+
+ @writing_journal = WritingJournal.new
+ # @writing_journal_files = WritingJournalFile.all
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_journal }
+ end
+ end
+
+ # GET /writing_journals/1/edit
+ def edit
+ @writing_journal = WritingJournal.find(params[:id])
+
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_journals
+ # POST /writing_journals.xml
+ def create
+
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+ get_tags
+
+ @writing_journal = WritingJournal.new(params[:writing_journal])
+
+ @writing_journal.create_user_id = current_user.id
+ @writing_journal.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_journal.save
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journals_url) }
+ format.xml { render :xml => @writing_journal, :status => :created, :location => @writing_journal }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_journal.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_journals/1
+ # PUT /writing_journals/1.xml
+ def update
+ @writing_journal = WritingJournal.find(params[:id])
+
+ @writing_journal.update_user_id = current_user.id
+
+ params[:writing_journal][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_journal.update_attributes(params[:writing_journal])
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journals_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_journal.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_journals/1
+ # DELETE /writing_journals/1.xml
+ def destroy
+ @writing_journal = WritingJournal.find(params[:id])
+ @writing_journal.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_journal_back_end_writing_journals_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_journals = WritingJournal.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_journal_back_end_writing_journals_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_journal_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_journal_categorys = (id ? WritingJournalCategory.admin_manager_all.find(id).to_a : WritingJournalCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_journal_categorys = WritingJournalCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_journal_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_journal'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/plugin/writing_journals_controller.rb b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/plugin/writing_journals_controller.rb
new file mode 100644
index 00000000..788fb513
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/controllers/panel/personal_journal/plugin/writing_journals_controller.rb
@@ -0,0 +1,184 @@
+class Panel::PersonalJournal::Plugin::WritingJournalsController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingJournalCategory')
+ end
+
+ def index
+
+ get_categorys("JournalPaperType",params[:journal_paper_type_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
+ @paper_types = JournalPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+ @level_types = JournalLevelType.all
+
+ # @writing_journals = WritingJournal.search(params[:category_id])
+ #@writing_journals = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_journals : WritingJournal.all.page(params[:page]).per(10)
+ @writing_journals = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_journal",:create_user_id => current_user.id) : get_viewable("writing_journal",:create_user_id => current_user.id)
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_journals }
+ format.js
+ end
+ end
+
+ # GET /writing_journals/1
+ # GET /writing_journals/1.xml
+ def show
+ @writing_journal = WritingJournal.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_journal }
+ end
+ end
+
+ # GET /writing_journals/new
+ # GET /writing_journals/new.xml
+ def new
+
+ @writing_journal = WritingJournal.new
+ # @writing_journal_files = WritingJournalFile.all
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_journal }
+ end
+ end
+
+ # GET /writing_journals/1/edit
+ def edit
+ @writing_journal = WritingJournal.find(params[:id])
+
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_journals
+ # POST /writing_journals.xml
+ def create
+
+ @level_types = JournalLevelType.all
+ @author_types = JournalAuthorType.all
+ @paper_types = JournalPaperType.all
+ get_tags
+
+ @writing_journal = WritingJournal.new(params[:writing_journal])
+
+ @writing_journal.create_user_id = current_user.id
+ @writing_journal.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_journal.save
+ format.html { redirect_to(panel_personal_journal_plugin_writing_journals_url) }
+ format.xml { render :xml => @writing_journal, :status => :created, :location => @writing_journal }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_journal.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_journals/1
+ # PUT /writing_journals/1.xml
+ def update
+ @writing_journal = WritingJournal.find(params[:id])
+
+ @writing_journal.update_user_id = current_user.id
+
+ params[:writing_journal][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_journal.update_attributes(params[:writing_journal])
+ format.html { redirect_to(panel_personal_journal_plugin_writing_journals_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_journal.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_journals/1
+ # DELETE /writing_journals/1.xml
+ def destroy
+ @writing_journal = WritingJournal.find(params[:id])
+ @writing_journal.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_journal_plugin_writing_journals_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_journals = WritingJournal.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_journal_plugin_writing_journals_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_journal_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_journal_categorys = (id ? WritingJournalCategory.admin_manager_all.find(id).to_a : WritingJournalCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_journal_categorys = WritingJournalCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_journal_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_journal'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/helpers/.gitkeep b/vendor/built_in_modules/personal_journal/app/helpers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/mailers/.gitkeep b/vendor/built_in_modules/personal_journal/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/models/.gitkeep b/vendor/built_in_modules/personal_journal/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/models/journal_author_type.rb b/vendor/built_in_modules/personal_journal/app/models/journal_author_type.rb
new file mode 100644
index 00000000..8fe9f963
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/journal_author_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class JournalAuthorType < WritingJournalCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_journals
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/journal_level_type.rb b/vendor/built_in_modules/personal_journal/app/models/journal_level_type.rb
new file mode 100644
index 00000000..98ef6017
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/journal_level_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class JournalLevelType < WritingJournalCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_journals
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/journal_paper_type.rb b/vendor/built_in_modules/personal_journal/app/models/journal_paper_type.rb
new file mode 100644
index 00000000..5758c8d5
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/journal_paper_type.rb
@@ -0,0 +1,7 @@
+# encoding: utf-8
+
+class JournalPaperType < WritingJournalCategory
+
+ field :title
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/personal_journal_tag.rb b/vendor/built_in_modules/personal_journal/app/models/personal_journal_tag.rb
new file mode 100644
index 00000000..c88207dc
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/personal_journal_tag.rb
@@ -0,0 +1,9 @@
+class PersonalJournalTag < Tag
+
+ has_and_belongs_to_many :writing_journals
+
+ def get_visible_links(sort = :title)
+ self.writing_journals.where(:is_hidden => false).desc(:is_top, sort)
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb
new file mode 100644
index 00000000..22edfb30
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb
@@ -0,0 +1,126 @@
+# encoding: utf-8
+
+class WritingJournal
+ 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 :paper_title, localize: true
+ field :journal_title, localize: true
+ field :authors, localize: true
+
+ has_and_belongs_to_many :tags, :class_name => "PersonalJournalTag"
+
+ has_and_belongs_to_many :journal_author_types
+ has_and_belongs_to_many :journal_level_types
+
+ belongs_to :journal_paper_type
+
+ field :year
+ field :language
+ field :isbn
+ field :vol_no
+ field :issue_no
+ field :form_to
+ field :total_pages
+ field :keywords
+ field :abstract
+ field :publication_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_journal_files, :autosave => true, :dependent => :destroy
+
+ accepts_nested_attributes_for :writing_journal_files, :allow_destroy => true
+
+ # before_save :update_avliable_language, :clean_checkboxs
+
+ validates :paper_title, :at_least_one => true
+
+ before_validation :add_http
+
+ after_save :save_writing_journal_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_journal_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_journal_files
+ self.writing_journal_files.each do |t|
+ if t.should_destroy
+ t.destroy
+ end
+ end
+ end
+
+ def create_link
+
+ title = ["\"#{self.paper_title}\""]
+ title << self.journal_title
+ title << "(#{self.journal_level_types.collect{|x| x.title}.join(', ')})"
+ title.join(', ')
+ 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('')
+ self.journal_author_type_ids.delete('')
+ self.journal_level_type_ids.delete('')
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/writing_journal_category.rb b/vendor/built_in_modules/personal_journal/app/models/writing_journal_category.rb
new file mode 100644
index 00000000..fa4f967b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/writing_journal_category.rb
@@ -0,0 +1,30 @@
+# encoding: utf-8
+
+class WritingJournalCategory
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include OrbitCoreLib::ObjectAuthable
+ include OrbitCoreLib::ObjectDisable
+ # include Mongoid::MultiParameterAttributes
+ AfterObjectAuthUrl = '/panel/personal_journal/back_end/writing_journal_categorys'
+ APP_NAME = 'writing_journal'
+ # ObjectAuthTitlesOptions = %W{edit}
+ ObjectAuthTitlesOptions = %W{submit_new fact_check}
+
+ field :key
+
+ has_many :writing_journals
+
+ def pp_object
+ title
+ end
+
+ def self.from_id(id)
+ WritingJournalCategory.find(id) rescue nil
+ end
+
+ def self.is_localized?(field_name)
+ self.fields[field_name.to_s].localized?
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/models/writing_journal_file.rb b/vendor/built_in_modules/personal_journal/app/models/writing_journal_file.rb
new file mode 100644
index 00000000..39d159fc
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/models/writing_journal_file.rb
@@ -0,0 +1,14 @@
+class WritingJournalFile
+
+ 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_journal
+
+end
diff --git a/vendor/built_in_modules/personal_journal/app/views/.gitkeep b/vendor/built_in_modules/personal_journal/app/views/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_form.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_form.html.erb
new file mode 100644
index 00000000..0a9263d3
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_form.html.erb
@@ -0,0 +1,44 @@
+<% # encoding: utf-8 %>
+
+<%= form_for(:writing_journal_category, :remote => true, :url => @url, :method => @verb, :html => { :id => 'form_writing_journal_category' } ) do |f| %>
+
+
<%= (@writing_journal_category.new_record? ? 'Add' : 'Edit') %>
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+
+ <%#= f.label :display %>
+ <%#= f.radio_button :display, "List" List%>
+ <%#= f.radio_button :display, "Picture" Picture%>
+ <%# 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘 %>
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+
+
+<% end %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_quick_edit_qe.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_quick_edit_qe.html.erb
new file mode 100644
index 00000000..005ae64e
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_quick_edit_qe.html.erb
@@ -0,0 +1,28 @@
+<% # encoding: utf-8 %>
+
+
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+ <%= f.label :display %>
+ <%= f.radio_button :display, "List" %>List
+ <%= f.radio_button :display, "Picture" %>Picture
+ 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_writing_journal_category.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_writing_journal_category.html.erb
new file mode 100644
index 00000000..b4dc4b70
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/_writing_journal_category.html.erb
@@ -0,0 +1,23 @@
+
+
+
+ <%= writing_journal_category.key %>
+
+
+ <% if is_admin?%>
+ <%= link_to t('writing_journal_category.edit'),
+ polymorphic_path([:panel, :personal_journal, :back_end, writing_journal_category], {:action => :edit}), :remote => true %>
+ <%= link_to show_toggle_archive_btn(writing_journal_category),
+ polymorphic_path([:panel, :personal_journal, :back_end, writing_journal_category]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %>
+ <% end %>
+
+
+
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= writing_journal_category.title_translations[locale] rescue nil %>
+ <% end %>
+ <% else %>
+ <%= writing_journal_category.title %>
+ <% end %>
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/create.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/create.js.erb
new file mode 100644
index 00000000..b2d0567a
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'writing_journal_category', :collection => [@writing_journal_category] %>').appendTo('#writing_journal_categorys').hide().fadeIn();
+$("#form_writing_journal_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/destroy.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/destroy.js.erb
new file mode 100644
index 00000000..19b329f8
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_journal_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@writing_journal_category) %> ");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.html.erb
new file mode 100644
index 00000000..8510eac8
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.html.erb
@@ -0,0 +1,7 @@
+
<%= t('personal_journal.editing_personal_journal_class') %>
+
+<%= form_for @writing_journal_category, :url => panel_personal_journal_back_end_writing_journal_category_path(@writing_journal_category) do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.js.erb
new file mode 100644
index 00000000..eaff01fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/index.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/index.html.erb
new file mode 100644
index 00000000..66abbf4c
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/index.html.erb
@@ -0,0 +1,29 @@
+
+<%= flash_messages %>
+
+<%= @types %>
+
+
+
+
+ <%= t('writing_journal_category.key') %>
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
+ <% end %>
+ <% else %>
+ <%= t('writing_journal_category.title') %>
+ <% end %>
+
+
+
+
+ <%= render :partial => 'writing_journal_category', :collection => @writing_journal_categorys %>
+
+
+
+
+
<%= render :partial => "form" if is_manager? %>
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.html.erb
new file mode 100644
index 00000000..9214f9f4
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.html.erb
@@ -0,0 +1,19 @@
+<% content_for :secondary do %>
+<%= render :partial => '/panel/personal_journal/back_end/personal_journal_secondary' %>
+<% end -%>
+
+<%= flash_messages %>
+
+
+
+
+
+
+
+
<%= t('writing_journal_category.new_personal_journal_class') %>
+<%= form_for @writing_journal_category, :url => panel_personal_journal_back_end_writing_journal_categorys_path do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.js.erb
new file mode 100644
index 00000000..40061b9f
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/new.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/update.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/update.js.erb
new file mode 100644
index 00000000..6dd87c53
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journal_categorys/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= dom_id @writing_journal_category %>").replaceWith("<%= j render :partial => 'writing_journal_category', :collection => [@writing_journal_category] %>");
+<% @writing_journal_category = @types.new(:display => 'List') # reset for new form %>
+$("#form_writing_journal_category").replaceWith("<%= j render "form" %>")
+$("#form_writing_journal_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_clear_filters.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_clear_filters.html.erb
new file mode 100644
index 00000000..2966f827
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_clear_filters.html.erb
@@ -0,0 +1,3 @@
+
+ <%= link_to content_tag(:i, nil, :class => 'icons-brush-large') + t(:clear), panel_personal_journal_back_end_writing_journals_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn js_history" %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter.html.erb
new file mode 100644
index 00000000..c09fed14
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter.html.erb
@@ -0,0 +1,37 @@
+
+
+
+
+ <%#= render 'filter_status' %>
+
+
+ <%= render 'filter_categories' %>
+
+
+ <%= render 'filter_tags' %>
+
+
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_categories.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_categories.html.erb
new file mode 100644
index 00000000..d471bb9f
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_categories.html.erb
@@ -0,0 +1,6 @@
+
+ <% @level_types.each do |category| -%>
+ <%= link_to category.title, panel_personal_journal_back_end_writing_journals_path(:filter => @filter, :new_filter => {:type => 'categories', :id => category.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('categories', category.id)}" %>
+ <% end -%>
+
+<%= render :partial => 'clear_filters', :locals => {:type => 'categories'} %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_tags.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_tags.html.erb
new file mode 100644
index 00000000..283a19ff
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_filter_tags.html.erb
@@ -0,0 +1,6 @@
+
+ <% @tags.each do |tag| -%>
+ <%= link_to tag[I18n.locale], panel_personal_journal_back_end_writing_journals_path(:filter => @filter, :new_filter => {:type => 'tags', :id => tag.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('tags', tag.id)}" %>
+ <% end -%>
+
+<%= render :partial => 'clear_filters', :locals => {:type => 'tags'} %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form.html.erb
new file mode 100644
index 00000000..8b7c9be3
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form.html.erb
@@ -0,0 +1,253 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_journal.year")%>
+ <%= select_year((@writing_journal.year ? @writing_journal.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_journal[year]'} ) %>
+
+
+
+ <%= f.label :paper_type ,t("personal_journal.paper_type")%>
+ <%= f.select :journal_paper_type_id, @paper_types.collect {|t| [ t.title, t.id ]} %>
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_journal.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_journal.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :journal_title ,t("personal_journal.journal_title")%>
+ <%= f.fields_for :journal_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_journal.journal_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_journal.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_journal.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :isbn, t("personal_journal.isbn") %>
+ <%= f.text_field :isbn %>
+
+
+
+ <%= f.label :vol_no, t("personal_journal.vol_no") %>
+ <%= f.text_field :vol_no %>
+
+
+
+ <%= f.label :issue_no, t("personal_journal.issue_no") %>
+ <%= f.text_field :issue_no %>
+
+
+
+ <%= f.label :form_to, t("personal_journal.form_to") %>
+ <%= f.text_field :form_to %>
+
+
+
+ <%= f.label :total_pages, t("personal_journal.total_pages") %>
+ <%= f.text_field :total_pages %>
+
+
+
+ <%= f.label :url, t("personal_journal.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_journal.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :abstract, t("personal_journal.abstract") %>
+ <%= f.text_field :abstract %>
+
+
+
+ <%= f.label :language, t("personal_journal.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_journal.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_journal.English") %>
+
+
+
+ <%= f.label :note, t("personal_journal.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_journal.writing_journal_files.each_with_index do |writing_journal_file, i| %>
+ <%= f.fields_for :writing_journal_files, writing_journal_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_journal_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form_file.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_sort_headers.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_sort_headers.html.erb
new file mode 100644
index 00000000..39722fc2
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_sort_headers.html.erb
@@ -0,0 +1,5 @@
+<%= render_sort_bar(true, delete_panel_personal_journal_back_end_writing_journals_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['publication_date', 'publication_date', 'span1', 'writing_journal.publication_date'],
+ ['paper_title', 'paper_title','span3', 'writing_journal.paper_title'],
+ ['create_modified', 'create_user_id','span1-3', 'writing_journal.create_modified']).html_safe %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_writing_journal.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_writing_journal.html.erb
new file mode 100644
index 00000000..13382cc3
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/_writing_journal.html.erb
@@ -0,0 +1,21 @@
+
+
+ <% if (writing_journal.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_journal.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_journal.publication_date %>
+
+ <%= link_to writing_journal.create_link , panel_personal_journal_front_end_writing_journal_path(writing_journal) %>
+
+
+ <%if at_least_module_manager || writing_journal.writing_journal_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_journal_back_end_writing_journal_path(writing_journal) %>
+ <%= link_to t('delete'), panel_personal_journal_back_end_writing_journal_path(writing_journal), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+ <%= User.from_id(writing_journal.create_user_id).name rescue ''%>
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/destroy.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/destroy.js.erb
new file mode 100644
index 00000000..40a513b0
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_journal %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/edit.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/edit.html.erb
new file mode 100644
index 00000000..a7d08c08
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_journal.editing_personal_journal') %>
+
+<%= form_for @writing_journal, :url => panel_personal_journal_back_end_writing_journal_path(@writing_journal), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.html.erb
new file mode 100644
index 00000000..1cb2e879
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_journal', :collection => @writing_journals %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.js.erb
new file mode 100644
index 00000000..62186731
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_journals").html("<%= j render :partial => 'writing_journal', :collection => @writing_journals %>");
+$("#writing_journal_pagination").html("<%= j paginate @writing_journals, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/new.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/new.html.erb
new file mode 100644
index 00000000..669770c4
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_journal.new_personal_journal') %>
+<%= form_for @writing_journal, :url => panel_personal_journal_back_end_writing_journals_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/show.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/toggle_enable.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/back_end/writing_journals/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_filter.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_filter.html.erb
new file mode 100644
index 00000000..63882b8f
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form.html.erb
new file mode 100644
index 00000000..8b7c9be3
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form.html.erb
@@ -0,0 +1,253 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_journal.year")%>
+ <%= select_year((@writing_journal.year ? @writing_journal.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_journal[year]'} ) %>
+
+
+
+ <%= f.label :paper_type ,t("personal_journal.paper_type")%>
+ <%= f.select :journal_paper_type_id, @paper_types.collect {|t| [ t.title, t.id ]} %>
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_journal.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_journal.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :journal_title ,t("personal_journal.journal_title")%>
+ <%= f.fields_for :journal_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_journal.journal_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_journal.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_journal.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :isbn, t("personal_journal.isbn") %>
+ <%= f.text_field :isbn %>
+
+
+
+ <%= f.label :vol_no, t("personal_journal.vol_no") %>
+ <%= f.text_field :vol_no %>
+
+
+
+ <%= f.label :issue_no, t("personal_journal.issue_no") %>
+ <%= f.text_field :issue_no %>
+
+
+
+ <%= f.label :form_to, t("personal_journal.form_to") %>
+ <%= f.text_field :form_to %>
+
+
+
+ <%= f.label :total_pages, t("personal_journal.total_pages") %>
+ <%= f.text_field :total_pages %>
+
+
+
+ <%= f.label :url, t("personal_journal.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_journal.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :abstract, t("personal_journal.abstract") %>
+ <%= f.text_field :abstract %>
+
+
+
+ <%= f.label :language, t("personal_journal.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_journal.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_journal.English") %>
+
+
+
+ <%= f.label :note, t("personal_journal.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_journal.writing_journal_files.each_with_index do |writing_journal_file, i| %>
+ <%= f.fields_for :writing_journal_files, writing_journal_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_journal_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form_file.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_sort_headers.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_sort_headers.html.erb
new file mode 100644
index 00000000..ee2f17f7
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_sort_headers.html.erb
@@ -0,0 +1,3 @@
+<%= render_sort_bar(true, delete_panel_personal_journal_back_end_writing_journals_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['year', 'year', 'span1', 'writing_journal.year'],
+ ['title', 'title','span3', 'writing_journal.title']).html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_writing_journal.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_writing_journal.html.erb
new file mode 100644
index 00000000..7af8f37b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/_writing_journal.html.erb
@@ -0,0 +1,20 @@
+
+
+ <% if (writing_journal.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_journal.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_journal.year %>
+
+ <%= link_to writing_journal.create_link, panel_personal_journal_front_end_writing_journal_path(writing_journal) %>
+
+
+ <%if at_least_module_manager || writing_journal.writing_journal_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_journal_plugin_writing_journal_path(writing_journal) %>
+ <%= link_to t('delete'), panel_personal_journal_plugin_writing_journal_path(writing_journal), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/destroy.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/destroy.js.erb
new file mode 100644
index 00000000..40a513b0
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_journal %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/edit.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/edit.html.erb
new file mode 100644
index 00000000..7157f1ce
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_journal.editing_personal_journal') %>
+
+<%= form_for @writing_journal, :url => panel_personal_journal_plugin_writing_journal_path(@writing_journal), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.html.erb
new file mode 100644
index 00000000..bf5fe8b4
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_journal', :collection => @writing_journals %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.js.erb
new file mode 100644
index 00000000..62186731
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_journals").html("<%= j render :partial => 'writing_journal', :collection => @writing_journals %>");
+$("#writing_journal_pagination").html("<%= j paginate @writing_journals, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/new.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/new.html.erb
new file mode 100644
index 00000000..1763f248
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_journal.new_personal_journal') %>
+<%= form_for @writing_journal, :url => panel_personal_journal_plugin_writing_journals_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/show.html.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/toggle_enable.js.erb b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/app/views/panel/personal_journal/plugin/writing_journals/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/config/locales/en.yml b/vendor/built_in_modules/personal_journal/config/locales/en.yml
new file mode 100644
index 00000000..83dbd328
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/config/locales/en.yml
@@ -0,0 +1,135 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+
+ _locale: English
+
+ add: Add
+ back: Back
+ create: Create
+ delete: Delete
+ disable: Disable
+ downloaded: Downloaded
+ download: Download
+ edit: Edit
+ enable: Enable
+ hide: Hide
+ homepage: Homepage
+ no_: "No"
+ nothing: Nothing
+ show: Show
+ sure?: Are you sure?
+ update: Update
+ yes_: "Yes"
+
+ announcement:
+ sure?: Sure?
+
+
+ web_resource:
+ list_lower: list
+ list_link: Links list
+
+
+ # admin:
+ # action: Action
+ # add_language: Add language
+ # admin: Admin
+ # action: Action
+ # announcement: Announcement
+ # asset: Asset
+ # attributes: Attributes
+ # cant_delete_self: You can not delete yourself.
+ # cant_revoke_self_admin: You can not revoke your admin role yourself.
+ # class: Class
+ # content: Content
+ # create_error_link: Error when creating link.
+ # create_error_page: Error when creating page.
+ # create_success_home: Homepage was successfully created.
+ # create_success_layout: Layout was successfully created.
+ # create_success_link: Link was successfully created.
+ # create_success_page: Page was successfully created.
+ # create_success_snippet: Snippet was successfully created.
+ # create_success_user: User was successfully created.
+ # data: Data
+ # delete_language: Delete language
+ # description: Description
+ # design: Design
+ # disable_language: Disable language
+ # editing_home: Editing homepage
+ # editing_layout: Editing layout
+ # editing_link: Editing link
+ # editing_page: Editing page
+ # editing_snippet: Editing snippet
+ # editing_user_info: Editing user information
+ # editing_user_role: Editing user role
+ # email: Email
+ # enable_language: Enable language
+ # file_name: Filename
+ # file_size: File size
+ # format: Format
+ # home: Home
+ # id: ID
+ # info: Information
+ # is_published: Is published
+ # item: Item
+ # key: Key
+ # language: Language
+ # layout: Layout
+ # layout_name: Layout name
+ # list_assets: Assets list
+ # list_designs: Designs list
+ # list_items: Items list
+ # list_puchases: Purchases list
+ # list_snippets: Snippets list
+ # list_users: Users list
+ # list_user_infos: User information list
+ # list_user_roles: User roles list
+ # member: Member
+ # move_down: Move down
+ # move_up: Move up
+ # multilingual: Multilingual
+ # my_avatar: My Avatar
+ # no_home_page: You don't have a homepage
+ # no_layout: You don't have a layout
+ # name: Name
+ # new_asset: New asset
+ # new_component: New component
+ # new_home: New homepage
+ # new_layout: New layout
+ # new_link: New link
+ # new_page: New page
+ # new_snippet: New snippet
+ # new_user: New user
+ # new_user_info: New user information
+ # new_user_role: New user role
+ # non_multilingual: Non multilingual
+ # options: Options
+ # orig_upload_file: Original filename
+ # position: Position
+ # published?: Published?
+ # purchase: Purchase
+ # registered: Registered
+ # role: Role
+ # roles: Roles
+ # title: Title
+ # translation: Translation
+ # type: Type
+ # up_to_date: Up-to-date
+ # update_error_link: Error when updating link.
+ # update_error_page: Error when updating page.
+ # update_success_content: Content was successfully updated.
+ # update_success_home: Homepage was successfully updated.
+ # update_success_layout: Layout was successfully updated.
+ # update_success_link: Link was successfully updated.
+ # update_success_page: Page was successfully updated.
+ # update_success_snippet: Snippet was successfully updated.
+ # update_success_user: User was successfully updated.
+ # url: URL
+ # user: User
+ # user_info: User information
+ # user_panel: User panel
+ # user_role: User role
+
+ panel:
diff --git a/vendor/built_in_modules/personal_journal/config/locales/zh_tw.yml b/vendor/built_in_modules/personal_journal/config/locales/zh_tw.yml
new file mode 100644
index 00000000..a0104cbd
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/config/locales/zh_tw.yml
@@ -0,0 +1,243 @@
+zh_tw:
+
+ _locale: 銝剜
+
+ add: 啣
+ back:
+ create: 菟
+ delete: 芷
+ disable: 蝳
+ edit: 蝺刻摩
+ enable:
+ hide: 梯
+ homepage: 擐
+ no_: "No"
+ nothing:
+ show: 憿舐內
+ sure?: 刻臬?
+ update: 湔
+ yes_: "Yes"
+
+ web_resource:
+ list_lower: 銵
+ list_link: 亙銵
+ category: 憿
+ name: 蝔
+ describe: 餈
+ url: 頝臬
+ edit: 蝺刻摩
+ delete: 芷
+ cate_auth: 憿甈
+
+
+# Chinese (Taiwan) translations for Ruby on Rails
+# by tsechingho (http://github.com/tsechingho)
+ date:
+ formats:
+ default: "%Y-%m-%d"
+ short: "%b%d"
+ long: "%Y撟%b%d"
+ day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ abbr_day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ month_names: [~, 銝, 鈭, 銝, , 鈭, 剜, 銝, 急, 銋, , 銝, 鈭]
+ abbr_month_names: [~, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
+ order: [ :year, :month, :day ]
+
+ time:
+ formats:
+ default: "%Y撟%b%d %A %H:%M:%S %Z"
+ short: "%b%d %H:%M"
+ long: "%Y撟%b%d %H:%M"
+ am: "銝"
+ pm: "銝"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: ""
+ less_than_x_seconds:
+ one: "銝唬蝘"
+ other: "銝 %{count} 蝘"
+ x_seconds:
+ one: "銝蝘"
+ other: "%{count} 蝘"
+ less_than_x_minutes:
+ one: "銝唬"
+ other: "銝 %{count} "
+ x_minutes:
+ one: "銝"
+ other: "%{count} "
+ about_x_hours:
+ one: "憭抒銝撠"
+ other: "憭抒 %{count} 撠"
+ x_days:
+ one: "銝憭"
+ other: "%{count} 憭"
+ about_x_months:
+ one: "憭抒銝"
+ other: "憭抒 %{count} "
+ x_months:
+ one: "銝"
+ other: "%{count} "
+ about_x_years:
+ one: "憭抒銝撟"
+ other: "憭抒 %{count} 撟"
+ over_x_years:
+ one: "銝撟游"
+ other: "%{count} 撟游"
+ almost_x_years:
+ one: "亥銝撟"
+ other: "亥 %{count} 撟"
+ prompts:
+ year: "撟"
+ month: ""
+ day: ""
+ hour: ""
+ minute: ""
+ second: "蝘"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ","
+ precision: 3
+ significant: false
+ strip_insignificant_zeros: false
+ currency:
+ format:
+ format: "%u %n"
+ unit: "NT$"
+ separator: "."
+ delimiter: ","
+ precision: 2
+ significant: false
+ strip_insignificant_zeros: false
+ percentage:
+ format:
+ delimiter: ""
+ precision:
+ format:
+ delimiter: ""
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ significant: false
+ strip_insignificant_zeros: false
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Byte"
+ other: "Bytes"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+ decimal_units:
+ format: "%n %u"
+ units:
+ # 10^-21 zepto, 10^-24 yocto
+ atto: "皜" # 10^-18
+ femto: "憌" # 10^-15 瘥怠凝敺
+ pico: "瞍" # 10^-12 敺桀凝
+ nano: "憟" # 10^-9 瘥怠凝
+ micro: "敺" # 10^-6
+ mili: "瘥" # 10^-3 milli
+ centi: "" # 10^-2
+ deci: "" # 10^-1
+ unit: ""
+ ten:
+ one: ""
+ other: "" # 10^1
+ hundred: "" # 10^2
+ thousand: "" # 10^3 kilo
+ million: "曇" # 10^6 mega
+ billion: "" # 10^9 giga
+ trillion: "" # 10^12 tera
+ quadrillion: "" # 10^15 peta
+ # 10^18 exa, 10^21 zetta, 10^24 yotta
+
+ support:
+ array:
+ words_connector: ", "
+ two_words_connector: " "
+ last_word_connector: ", "
+ select:
+ prompt: "隢豢"
+
+ activerecord:
+ errors:
+ template: # ~ 2.3.5 backward compatible
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+ full_messages:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ taken: "撌脩鋡思蝙"
+ record_invalid: "⊿憭望: %{errors}"
+
+ activemodel:
+ errors:
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ errors:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ helpers:
+ select:
+ prompt: "隢豢"
+ submit:
+ create: "啣%{model}"
+ update: "湔%{model}"
+ submit: "脣%{model}"
+
diff --git a/vendor/built_in_modules/personal_journal/config/routes.rb b/vendor/built_in_modules/personal_journal/config/routes.rb
new file mode 100644
index 00000000..8c3b065e
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/config/routes.rb
@@ -0,0 +1,31 @@
+Rails.application.routes.draw do
+
+ namespace :panel do
+ namespace :personal_journal do
+ namespace :back_end do
+ resources :writing_journals do
+ collection do
+ get 'delete'
+ end
+ end
+ resources :journal_paper_types
+ resources :journal_author_types
+ resources :journal_level_types
+ resources :tags
+ end
+ namespace :front_end do
+ resources :writing_journals
+ end
+ namespace :plugin do
+ resources :writing_journals
+ end
+ namespace :widget do
+ match "writing_journals" => "writing_journals#index"
+ match "home_list" => "writing_journals#home_list"
+ match "reload_writing_journals" => "writing_journals#reload_writing_journals"
+ end
+ end
+ end
+ match "/appfront/*path" => redirect("/panel/*path")
+
+end
diff --git a/vendor/built_in_modules/personal_journal/lib/personal_journal.rb b/vendor/built_in_modules/personal_journal/lib/personal_journal.rb
new file mode 100644
index 00000000..0749b4ce
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/lib/personal_journal.rb
@@ -0,0 +1,4 @@
+require "personal_journal/engine"
+
+module PersonalJournal
+end
diff --git a/vendor/built_in_modules/personal_journal/lib/personal_journal/engine.rb b/vendor/built_in_modules/personal_journal/lib/personal_journal/engine.rb
new file mode 100644
index 00000000..f839338a
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/lib/personal_journal/engine.rb
@@ -0,0 +1,4 @@
+module PersonalJournal
+ class Engine < Rails::Engine
+ end
+end
diff --git a/vendor/built_in_modules/personal_journal/lib/personal_journal/version.rb b/vendor/built_in_modules/personal_journal/lib/personal_journal/version.rb
new file mode 100644
index 00000000..f8617a33
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/lib/personal_journal/version.rb
@@ -0,0 +1,3 @@
+module PersonalJournal
+ VERSION = "0.0.1"
+end
diff --git a/vendor/built_in_modules/personal_journal/lib/tasks/personal_journal_tasks.rake b/vendor/built_in_modules/personal_journal/lib/tasks/personal_journal_tasks.rake
new file mode 100644
index 00000000..62993057
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/lib/tasks/personal_journal_tasks.rake
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :personal_journal do
+# # Task goes here
+# end
diff --git a/vendor/built_in_modules/personal_journal/personal_journal.gemspec b/vendor/built_in_modules/personal_journal/personal_journal.gemspec
new file mode 100644
index 00000000..156f2a14
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/personal_journal.gemspec
@@ -0,0 +1,23 @@
+$:.push File.expand_path("../lib", __FILE__)
+
+# Maintain your gem's version:
+require "personal_journal/version"
+
+# Describe your gem and declare its dependencies:
+Gem::Specification.new do |s|
+ s.name = "personal_journal"
+ s.version = PersonalJournal::VERSION
+ s.authors = ["TODO: Your name"]
+ s.email = ["TODO: Your email"]
+ s.homepage = "TODO"
+ s.summary = "TODO: Summary of PersonalJournal."
+ s.description = "TODO: Description of PersonalJournal."
+
+ s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
+ s.test_files = Dir["test/**/*"]
+
+ s.add_dependency "rails", "~> 3.1.4"
+ # s.add_dependency "jquery-rails"
+
+ s.add_development_dependency "sqlite3"
+end
diff --git a/vendor/built_in_modules/personal_journal/personal_journal.json b/vendor/built_in_modules/personal_journal/personal_journal.json
new file mode 100644
index 00000000..f10036e1
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/personal_journal.json
@@ -0,0 +1,13 @@
+{
+ "title": "personal_journal",
+ "object": "writing_journal",
+ "version": "0.1",
+ "organization": "Rulingcom",
+ "author": "RD dep",
+ "intro": "A simple blog色",
+ "update_info": "Some info",
+ "create_date": "09-05-2012",
+ "category": ["WritingJournalCategory"],
+ "enable_frontend": true,
+ "has_plugin": true
+}
diff --git a/vendor/built_in_modules/personal_journal/script/rails b/vendor/built_in_modules/personal_journal/script/rails
new file mode 100644
index 00000000..23bd81fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+#!/usr/bin/env ruby
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+ENGINE_PATH = File.expand_path('../..', __FILE__)
+load File.expand_path('../../test/dummy/script/rails', __FILE__)
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/Rakefile b/vendor/built_in_modules/personal_journal/test/dummy/Rakefile
new file mode 100644
index 00000000..36458522
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/Rakefile
@@ -0,0 +1,7 @@
+#!/usr/bin/env rake
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+
+Dummy::Application.load_tasks
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/assets/javascripts/application.js b/vendor/built_in_modules/personal_journal/test/dummy/app/assets/javascripts/application.js
new file mode 100644
index 00000000..37c7bfcd
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/app/assets/javascripts/application.js
@@ -0,0 +1,9 @@
+// This is a manifest file that'll be compiled into including all the files listed below.
+// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
+// be included in the compiled file accessible from http://example.com/assets/application.js
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// the compiled file.
+//
+//= require jquery
+//= require jquery_ujs
+//= require_tree .
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/assets/stylesheets/application.css b/vendor/built_in_modules/personal_journal/test/dummy/app/assets/stylesheets/application.css
new file mode 100644
index 00000000..fc25b572
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/app/assets/stylesheets/application.css
@@ -0,0 +1,7 @@
+/*
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
+ *= require_self
+ *= require_tree .
+*/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_journal/test/dummy/app/controllers/application_controller.rb
new file mode 100644
index 00000000..e8065d95
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/app/controllers/application_controller.rb
@@ -0,0 +1,3 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/helpers/application_helper.rb b/vendor/built_in_modules/personal_journal/test/dummy/app/helpers/application_helper.rb
new file mode 100644
index 00000000..de6be794
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/mailers/.gitkeep b/vendor/built_in_modules/personal_journal/test/dummy/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/models/.gitkeep b/vendor/built_in_modules/personal_journal/test/dummy/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/app/views/layouts/application.html.erb b/vendor/built_in_modules/personal_journal/test/dummy/app/views/layouts/application.html.erb
new file mode 100644
index 00000000..9a8a761b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+
+
+
+
Dummy
+ <%= stylesheet_link_tag "application" %>
+ <%= javascript_include_tag "application" %>
+ <%= csrf_meta_tags %>
+
+
+
+<%= yield %>
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config.ru b/vendor/built_in_modules/personal_journal/test/dummy/config.ru
new file mode 100644
index 00000000..1989ed8d
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run Dummy::Application
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/application.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/application.rb
new file mode 100644
index 00000000..199d6dd1
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/application.rb
@@ -0,0 +1,45 @@
+require File.expand_path('../boot', __FILE__)
+
+require 'rails/all'
+
+Bundler.require
+require "personal_journal"
+
+module Dummy
+ class Application < Rails::Application
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration should go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded.
+
+ # Custom directories with classes and modules you want to be autoloadable.
+ # config.autoload_paths += %W(#{config.root}/extras)
+
+ # Only load the plugins named here, in the order given (default is alphabetical).
+ # :all can be used as a placeholder for all plugins not explicitly named.
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+ # Activate observers that should always be running.
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
+
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+ # config.time_zone = 'Central Time (US & Canada)'
+
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+ # config.i18n.default_locale = :de
+
+ # Configure the default encoding used in templates for Ruby 1.9.
+ config.encoding = "utf-8"
+
+ # Configure sensitive parameters which will be filtered from the log file.
+ config.filter_parameters += [:password]
+
+ # Enable the asset pipeline
+ config.assets.enabled = true
+
+ # Version of your assets, change this if you want to expire all your assets
+ config.assets.version = '1.0'
+ end
+end
+
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/boot.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/boot.rb
new file mode 100644
index 00000000..eba06813
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/boot.rb
@@ -0,0 +1,10 @@
+require 'rubygems'
+gemfile = File.expand_path('../../../../Gemfile', __FILE__)
+
+if File.exist?(gemfile)
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ require 'bundler'
+ Bundler.setup
+end
+
+$:.unshift File.expand_path('../../../../lib', __FILE__)
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/database.yml b/vendor/built_in_modules/personal_journal/test/dummy/config/database.yml
new file mode 100644
index 00000000..51a4dd45
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/database.yml
@@ -0,0 +1,25 @@
+# SQLite version 3.x
+# gem install sqlite3
+#
+# Ensure the SQLite 3 gem is defined in your Gemfile
+# gem 'sqlite3'
+development:
+ adapter: sqlite3
+ database: db/development.sqlite3
+ pool: 5
+ timeout: 5000
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3
+ pool: 5
+ timeout: 5000
+
+production:
+ adapter: sqlite3
+ database: db/production.sqlite3
+ pool: 5
+ timeout: 5000
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/environment.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/environment.rb
new file mode 100644
index 00000000..3da5eb91
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the rails application
+require File.expand_path('../application', __FILE__)
+
+# Initialize the rails application
+Dummy::Application.initialize!
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/environments/development.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/development.rb
new file mode 100644
index 00000000..95a50b91
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/development.rb
@@ -0,0 +1,30 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Don't care if the mailer can't send
+ config.action_mailer.raise_delivery_errors = false
+
+ # Print deprecation notices to the Rails logger
+ config.active_support.deprecation = :log
+
+ # Only use best-standards-support built into browsers
+ config.action_dispatch.best_standards_support = :builtin
+
+ # Do not compress assets
+ config.assets.compress = false
+
+ # Expands the lines which load the assets
+ config.assets.debug = true
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/environments/production.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/production.rb
new file mode 100644
index 00000000..ca2c5888
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/production.rb
@@ -0,0 +1,60 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # Code is not reloaded between requests
+ config.cache_classes = true
+
+ # Full error reports are disabled and caching is turned on
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Disable Rails's static asset server (Apache or nginx will already do this)
+ config.serve_static_assets = false
+
+ # Compress JavaScripts and CSS
+ config.assets.compress = true
+
+ # Don't fallback to assets pipeline if a precompiled asset is missed
+ config.assets.compile = false
+
+ # Generate digests for assets URLs
+ config.assets.digest = true
+
+ # Defaults to Rails.root.join("public/assets")
+ # config.assets.manifest = YOUR_PATH
+
+ # Specifies the header that your server uses for sending files
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # See everything in the log (default is :info)
+ # config.log_level = :debug
+
+ # Use a different logger for distributed setups
+ # config.logger = SyslogLogger.new
+
+ # Use a different cache store in production
+ # config.cache_store = :mem_cache_store
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server
+ # config.action_controller.asset_host = "http://assets.example.com"
+
+ # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
+ # config.assets.precompile += %w( search.js )
+
+ # Disable delivery errors, bad email addresses will be ignored
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable threaded mode
+ # config.threadsafe!
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation can not be found)
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners
+ config.active_support.deprecation = :notify
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/environments/test.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/test.rb
new file mode 100644
index 00000000..6810c914
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/environments/test.rb
@@ -0,0 +1,39 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Configure static asset server for tests with Cache-Control for performance
+ config.serve_static_assets = true
+ config.static_cache_control = "public, max-age=3600"
+
+ # Log error messages when you accidentally call methods on nil
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/backtrace_silencers.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/backtrace_silencers.rb
new file mode 100644
index 00000000..59385cdf
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/inflections.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/inflections.rb
new file mode 100644
index 00000000..9e8b0131
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/inflections.rb
@@ -0,0 +1,10 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format
+# (all these examples are active by default):
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/mime_types.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/mime_types.rb
new file mode 100644
index 00000000..72aca7e4
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/secret_token.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/secret_token.rb
new file mode 100644
index 00000000..1f100e16
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/secret_token.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+Dummy::Application.config.secret_token = '539d170d8c46717c4d043a4871697d29fbca0bc843a159a087a2ee14b0b6ba189bf8723c916593261c5bf39a52aad6b42b9d75a64ba922fcb6eb4f4c61c63688'
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/session_store.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/session_store.rb
new file mode 100644
index 00000000..952473ff
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/session_store.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
+
+# Use the database for sessions instead of the cookie-based default,
+# which shouldn't be used to store highly confidential information
+# (create the session table with "rails generate session_migration")
+# Dummy::Application.config.session_store :active_record_store
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/wrap_parameters.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/wrap_parameters.rb
new file mode 100644
index 00000000..999df201
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+ wrap_parameters format: [:json]
+end
+
+# Disable root element in JSON by default.
+ActiveSupport.on_load(:active_record) do
+ self.include_root_in_json = false
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/locales/en.yml b/vendor/built_in_modules/personal_journal/test/dummy/config/locales/en.yml
new file mode 100644
index 00000000..179c14ca
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/locales/en.yml
@@ -0,0 +1,5 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+ hello: "Hello world"
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/config/routes.rb b/vendor/built_in_modules/personal_journal/test/dummy/config/routes.rb
new file mode 100644
index 00000000..bb509f27
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/config/routes.rb
@@ -0,0 +1,58 @@
+Dummy::Application.routes.draw do
+ # The priority is based upon order of creation:
+ # first created -> highest priority.
+
+ # Sample of regular route:
+ # match 'products/:id' => 'catalog#view'
+ # Keep in mind you can assign values other than :controller and :action
+
+ # Sample of named route:
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
+ # This route can be invoked with purchase_url(:id => product.id)
+
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
+ # resources :products
+
+ # Sample resource route with options:
+ # resources :products do
+ # member do
+ # get 'short'
+ # post 'toggle'
+ # end
+ #
+ # collection do
+ # get 'sold'
+ # end
+ # end
+
+ # Sample resource route with sub-resources:
+ # resources :products do
+ # resources :comments, :sales
+ # resource :seller
+ # end
+
+ # Sample resource route with more complex sub-resources
+ # resources :products do
+ # resources :comments
+ # resources :sales do
+ # get 'recent', :on => :collection
+ # end
+ # end
+
+ # Sample resource route within a namespace:
+ # namespace :admin do
+ # # Directs /admin/products/* to Admin::ProductsController
+ # # (app/controllers/admin/products_controller.rb)
+ # resources :products
+ # end
+
+ # You can have the root of your site routed with "root"
+ # just remember to delete public/index.html.
+ # root :to => 'welcome#index'
+
+ # See how all your routes lay out with "rake routes"
+
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
+ # Note: This route will make all actions in every controller accessible via GET requests.
+ # match ':controller(/:action(/:id(.:format)))'
+end
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/lib/assets/.gitkeep b/vendor/built_in_modules/personal_journal/test/dummy/lib/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/log/.gitkeep b/vendor/built_in_modules/personal_journal/test/dummy/log/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/public/404.html b/vendor/built_in_modules/personal_journal/test/dummy/public/404.html
new file mode 100644
index 00000000..9a48320a
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/public/404.html
@@ -0,0 +1,26 @@
+
+
+
+
The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/public/422.html b/vendor/built_in_modules/personal_journal/test/dummy/public/422.html
new file mode 100644
index 00000000..83660ab1
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/public/422.html
@@ -0,0 +1,26 @@
+
+
+
+
The change you wanted was rejected (422)
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/public/500.html b/vendor/built_in_modules/personal_journal/test/dummy/public/500.html
new file mode 100644
index 00000000..b80307fc
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/public/500.html
@@ -0,0 +1,26 @@
+
+
+
+
We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
We've been notified about this issue and we'll take a look at it shortly.
+
+
+
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/public/favicon.ico b/vendor/built_in_modules/personal_journal/test/dummy/public/favicon.ico
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_journal/test/dummy/script/rails b/vendor/built_in_modules/personal_journal/test/dummy/script/rails
new file mode 100644
index 00000000..81eab02f
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/dummy/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
+require 'rails/commands'
diff --git a/vendor/built_in_modules/personal_journal/test/integration/navigation_test.rb b/vendor/built_in_modules/personal_journal/test/integration/navigation_test.rb
new file mode 100644
index 00000000..97a94c9b
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/integration/navigation_test.rb
@@ -0,0 +1,10 @@
+require 'test_helper'
+
+class NavigationTest < ActionDispatch::IntegrationTest
+ fixtures :all
+
+ # test "the truth" do
+ # assert true
+ # end
+end
+
diff --git a/vendor/built_in_modules/personal_journal/test/personal_journal_test.rb b/vendor/built_in_modules/personal_journal/test/personal_journal_test.rb
new file mode 100644
index 00000000..40bc1af8
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/personal_journal_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PersonalJournalTest < ActiveSupport::TestCase
+ test "truth" do
+ assert_kind_of Module, PersonalJournal
+ end
+end
diff --git a/vendor/built_in_modules/personal_journal/test/test_helper.rb b/vendor/built_in_modules/personal_journal/test/test_helper.rb
new file mode 100644
index 00000000..dcd3b276
--- /dev/null
+++ b/vendor/built_in_modules/personal_journal/test/test_helper.rb
@@ -0,0 +1,10 @@
+# Configure Rails Environment
+ENV["RAILS_ENV"] = "test"
+
+require File.expand_path("../dummy/config/environment.rb", __FILE__)
+require "rails/test_help"
+
+Rails.backtrace_cleaner.remove_silencers!
+
+# Load support files
+Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
diff --git a/vendor/built_in_modules/personal_seminar/.gitignore b/vendor/built_in_modules/personal_seminar/.gitignore
new file mode 100644
index 00000000..1463de6d
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/.gitignore
@@ -0,0 +1,6 @@
+.bundle/
+log/*.log
+pkg/
+test/dummy/db/*.sqlite3
+test/dummy/log/*.log
+test/dummy/tmp/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/Gemfile b/vendor/built_in_modules/personal_seminar/Gemfile
new file mode 100644
index 00000000..2491fccd
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/Gemfile
@@ -0,0 +1,17 @@
+source "http://rubygems.org"
+
+# Declare your gem's dependencies in personal_seminar.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'
diff --git a/vendor/built_in_modules/personal_seminar/MIT-LICENSE b/vendor/built_in_modules/personal_seminar/MIT-LICENSE
new file mode 100644
index 00000000..406f17b7
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/MIT-LICENSE
@@ -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.
diff --git a/vendor/built_in_modules/personal_seminar/README.rdoc b/vendor/built_in_modules/personal_seminar/README.rdoc
new file mode 100644
index 00000000..d918a8fe
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/README.rdoc
@@ -0,0 +1,3 @@
+= PersonalSeminar
+
+This project rocks and uses MIT-LICENSE.
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/Rakefile b/vendor/built_in_modules/personal_seminar/Rakefile
new file mode 100644
index 00000000..651670ac
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/Rakefile
@@ -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 = 'PersonalSeminar'
+ 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
diff --git a/vendor/built_in_modules/personal_seminar/app/assets/images/personal_seminar/.gitkeep b/vendor/built_in_modules/personal_seminar/app/assets/images/personal_seminar/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/assets/javascripts/personal_seminar/.gitkeep b/vendor/built_in_modules/personal_seminar/app/assets/javascripts/personal_seminar/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/assets/stylesheets/personal_seminar/.gitkeep b/vendor/built_in_modules/personal_seminar/app/assets/stylesheets/personal_seminar/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/.gitkeep b/vendor/built_in_modules/personal_seminar/app/controllers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/application_controller.rb
new file mode 100644
index 00000000..307a4acd
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/application_controller.rb
@@ -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
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_author_types_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_author_types_controller.rb
new file mode 100644
index 00000000..b9bc5adf
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_author_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalSeminar::BackEnd::SeminarAuthorTypesController < Panel::PersonalSeminar::BackEnd::WritingSeminarCategorysController
+
+ def initialize
+ super
+ @app_type = 'seminar_author_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_paper_types_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_paper_types_controller.rb
new file mode 100644
index 00000000..ad01abb9
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/seminar_paper_types_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalSeminar::BackEnd::SeminarPaperTypesController < Panel::PersonalSeminar::BackEnd::WritingSeminarCategorysController
+
+ def initialize
+ super
+ @app_type = 'seminar_paper_type'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/tags_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/tags_controller.rb
new file mode 100644
index 00000000..d42ac3b1
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/tags_controller.rb
@@ -0,0 +1,8 @@
+class Panel::PersonalSeminar::BackEnd::TagsController < Admin::TagsController
+
+ def initialize
+ super
+ @app_title = 'personal_seminar'
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminar_categorys_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminar_categorys_controller.rb
new file mode 100644
index 00000000..37798b56
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminar_categorys_controller.rb
@@ -0,0 +1,141 @@
+class Panel::PersonalSeminar::BackEnd::WritingSeminarCategorysController < OrbitBackendController
+ before_filter :for_app_manager,:except => [:index]
+ include OrbitControllerLib::DivisionForDisable
+
+ def index
+
+ get_types
+
+ @writing_seminar_categorys = @types.all
+ @writing_seminar_category = @types.new(:display => 'List')
+
+ # @url = panel_personal_seminar_back_end_writing_seminar_categorys_path
+ @url = eval("panel_personal_seminar_back_end_#{@app_type}s_path")
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_seminars/1
+ # GET /writing_seminars/1.xml
+ def show
+
+ get_types
+
+ @writing_seminar_category = @types.find(params[:id])
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_seminars/new
+ # GET /writing_seminars/new.xml
+ def new
+
+ get_types
+
+ @writing_seminar_category = @types.new(:display => 'List')
+
+ @verb = :post
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.js
+ end
+ end
+
+ # GET /writing_seminars/1/edit
+ def edit
+
+ get_types
+
+ @writing_seminar_category = @types.find(params[:id])
+
+ # @url = panel_personal_seminar_back_end_writing_seminar_category_path(@writing_seminar_category)
+ # @url = eval("panel_personal_seminar_back_end_#{@app_type}_path(@writing_seminar_category)")
+ @url = polymorphic_path([:panel, :personal_seminar, :back_end, @writing_seminar_category])
+
+ @verb = :put
+
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # POST /writing_seminars
+ # POST /writing_seminars.xml
+ def create
+
+ get_types
+
+ @writing_seminar_category = @types.new(params[:writing_seminar_category])
+
+ respond_to do |format|
+ if @writing_seminar_category.save
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminar_categorys_url, :notice => t('writing_seminar_category.create_writing_seminar_category_success')) }
+ format.js
+ else
+ format.html { render :action => "new" }
+ format.js { render action: "new" }
+ end
+ end
+ end
+
+ # PUT /writing_seminars/1
+ # PUT /writing_seminars/1.xml
+ def update
+
+ get_types
+
+ @writing_seminar_category = @types.find(params[:id])
+ # debugger
+ # @url = panel_personal_seminar_back_end_writing_seminar_category_path(@writing_seminar_category)
+ # @url = eval("panel_personal_seminar_back_end_#{@app_type}_path(#{@writing_seminar_category})")
+ @url = polymorphic_path([:panel, :personal_seminar, :back_end, @writing_seminar_category])
+
+ respond_to do |format|
+ if @writing_seminar_category.update_attributes(params[:writing_seminar_category])
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminar_categorys_url, :notice => t('writing_seminar_category.update_writing_seminar_category_success')) }
+ # format.xml { head :ok }
+ format.js
+ else
+ format.html { render :action => "edit" }
+ format.js { render :action => "edit" }
+ end
+ end
+ end
+
+ # DELETE /writing_seminars/1
+ # DELETE /writing_seminars/1.xml
+ def destroy
+
+ get_types
+
+ @writing_seminar_category = @types.find(params[:id])
+ @writing_seminar_category.disable = @writing_seminar_category.disable ? false : true
+
+ if @writing_seminar_category.save!
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminar_categorys_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ else
+ flash[:error] = t("writing_seminar_category.update_failed")
+ format.html { render :action => "index" }
+ end
+
+ end
+
+ protected
+
+ def get_types
+ @types = @app_type.classify.constantize
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminars_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminars_controller.rb
new file mode 100644
index 00000000..dfd3626a
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/back_end/writing_seminars_controller.rb
@@ -0,0 +1,186 @@
+class Panel::PersonalSeminar::BackEnd::WritingSeminarsController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingSeminarCategory')
+ end
+
+ def index
+
+ get_categorys("SeminarPaperType",params[:seminar_paper_type_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
+
+ @paper_types = SeminarPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+
+ # @writing_seminars = WritingSeminar.search(params[:category_id])
+ #@writing_seminars = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_seminars : WritingSeminar.all.page(params[:page]).per(10)
+
+ @writing_seminars = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_seminar",:seminar_paper_type_id.in => @paper_type_ids) : get_viewable("writing_seminar",:seminar_paper_type_id.in => @paper_type_ids)
+
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_seminars }
+ format.js
+ end
+ end
+
+ # GET /writing_seminars/1
+ # GET /writing_seminars/1.xml
+ def show
+ @writing_seminar = WritingSeminar.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_seminar }
+ end
+ end
+
+ # GET /writing_seminars/new
+ # GET /writing_seminars/new.xml
+ def new
+
+ @writing_seminar = WritingSeminar.new
+ # @writing_seminar_files = WritingSeminarFile.all
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_seminar }
+ end
+ end
+
+ # GET /writing_seminars/1/edit
+ def edit
+ @writing_seminar = WritingSeminar.find(params[:id])
+
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_seminars
+ # POST /writing_seminars.xml
+ def create
+
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+ get_tags
+
+ @writing_seminar = WritingSeminar.new(params[:writing_seminar])
+
+ @writing_seminar.create_user_id = current_user.id
+ @writing_seminar.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_seminar.save
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminars_url) }
+ format.xml { render :xml => @writing_seminar, :status => :created, :location => @writing_seminar }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_seminar.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_seminars/1
+ # PUT /writing_seminars/1.xml
+ def update
+ @writing_seminar = WritingSeminar.find(params[:id])
+
+ @writing_seminar.update_user_id = current_user.id
+
+ params[:writing_seminar][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_seminar.update_attributes(params[:writing_seminar])
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminars_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_seminar.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_seminars/1
+ # DELETE /writing_seminars/1.xml
+ def destroy
+ @writing_seminar = WritingSeminar.find(params[:id])
+ @writing_seminar.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_seminar_back_end_writing_seminars_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_seminars = WritingSeminar.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_seminar_back_end_writing_seminars_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_seminar_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_seminar_categorys = (id ? WritingSeminarCategory.admin_manager_all.find(id).to_a : WritingSeminarCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_seminar_categorys = WritingSeminarCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_seminar_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_seminar'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/plugin/writing_seminars_controller.rb b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/plugin/writing_seminars_controller.rb
new file mode 100644
index 00000000..223b985d
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/controllers/panel/personal_seminar/plugin/writing_seminars_controller.rb
@@ -0,0 +1,183 @@
+class Panel::PersonalSeminar::Plugin::WritingSeminarsController < OrbitBackendController
+ include OrbitControllerLib::DivisionForDisable
+ before_filter :authenticate_user!
+ # before_filter :for_app_manager,:except => [:index,:show]
+ before_filter :for_app_sub_manager,:except => [:index]
+ before_filter :only => [ :new,:edit,:update] do |controller|
+ controller.get_categorys('WritingSeminarCategory')
+ end
+
+ def index
+
+ get_categorys("SeminarPaperType",params[:seminar_paper_type_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
+ @paper_types = SeminarPaperType.all
+ @paper_type_ids = @paper_types.collect{|t| t.id.to_s} + [nil]
+
+
+ # @writing_seminars = WritingSeminar.search(params[:category_id])
+ #@writing_seminars = (params[:sort] || @filter) ? get_sorted_and_filtered_writing_seminars : WritingSeminar.all.page(params[:page]).per(10)
+ @writing_seminars = (params[:sort] || @filter) ? get_sorted_and_filtered("writing_seminar",:create_user_id => current_user.id) : get_viewable("writing_seminar", :create_user_id => current_user.id)
+
+ get_tags
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @writing_seminars }
+ format.js
+ end
+ end
+
+ # GET /writing_seminars/1
+ # GET /writing_seminars/1.xml
+ def show
+ @writing_seminar = WritingSeminar.find(params[:id])
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @writing_seminar }
+ end
+ end
+
+ # GET /writing_seminars/new
+ # GET /writing_seminars/new.xml
+ def new
+
+ @writing_seminar = WritingSeminar.new
+ # @writing_seminar_files = WritingSeminarFile.all
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+
+ get_tags
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @writing_seminar }
+ end
+ end
+
+ # GET /writing_seminars/1/edit
+ def edit
+ @writing_seminar = WritingSeminar.find(params[:id])
+
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+
+ get_tags
+ end
+
+ # POST /writing_seminars
+ # POST /writing_seminars.xml
+ def create
+
+ # @level_types = SeminarLevelType.all
+ @author_types = SeminarAuthorType.all
+ @paper_types = SeminarPaperType.all
+ get_tags
+
+ @writing_seminar = WritingSeminar.new(params[:writing_seminar])
+
+ @writing_seminar.create_user_id = current_user.id
+ @writing_seminar.update_user_id = current_user.id
+
+ respond_to do |format|
+ if @writing_seminar.save
+ format.html { redirect_to(panel_personal_seminar_plugin_writing_seminars_url) }
+ format.xml { render :xml => @writing_seminar, :status => :created, :location => @writing_seminar }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @writing_seminar.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /writing_seminars/1
+ # PUT /writing_seminars/1.xml
+ def update
+ @writing_seminar = WritingSeminar.find(params[:id])
+
+ @writing_seminar.update_user_id = current_user.id
+
+ params[:writing_seminar][:tag_ids] ||=[]
+
+ respond_to do |format|
+ if @writing_seminar.update_attributes(params[:writing_seminar])
+ format.html { redirect_to(panel_personal_seminar_plugin_writing_seminars_url) }
+ # format.js { render 'toggle_enable' }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @writing_seminar.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /writing_seminars/1
+ # DELETE /writing_seminars/1.xml
+ def destroy
+ @writing_seminar = WritingSeminar.find(params[:id])
+ @writing_seminar.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(panel_personal_seminar_plugin_writing_seminars_url) }
+ # format.xml { head :ok }
+ format.js
+ end
+ end
+
+ def delete
+ if params[:ids]
+ writing_seminars = WritingSeminar.any_in(:_id => params[:ids]).delete_all
+ end
+ redirect_to panel_personal_seminar_plugin_writing_seminars_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_seminar_categorys = []
+ # if(is_manager? || is_admin?)
+ # @writing_seminar_categorys = (id ? WritingSeminarCategory.admin_manager_all.find(id).to_a : WritingSeminarCategory.admin_manager_all))
+ # elsif is_sub_manager?
+ # @writing_seminar_categorys = WritingSeminarCategory.all.authed_for_user(current_user,'edit')
+ # end
+ # if @writing_seminar_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_seminar'})
+ @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
+ end
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/helpers/.gitkeep b/vendor/built_in_modules/personal_seminar/app/helpers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/mailers/.gitkeep b/vendor/built_in_modules/personal_seminar/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/models/.gitkeep b/vendor/built_in_modules/personal_seminar/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/models/personal_seminar_tag.rb b/vendor/built_in_modules/personal_seminar/app/models/personal_seminar_tag.rb
new file mode 100644
index 00000000..3054f245
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/personal_seminar_tag.rb
@@ -0,0 +1,9 @@
+class PersonalSeminarTag < Tag
+
+ has_and_belongs_to_many :writing_seminars
+
+ def get_visible_links(sort = :title)
+ self.writing_seminars.where(:is_hidden => false).desc(:is_top, sort)
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/models/seminar_author_type.rb b/vendor/built_in_modules/personal_seminar/app/models/seminar_author_type.rb
new file mode 100644
index 00000000..c32a1842
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/seminar_author_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class SeminarAuthorType < WritingSeminarCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_seminars
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/models/seminar_paper_type.rb b/vendor/built_in_modules/personal_seminar/app/models/seminar_paper_type.rb
new file mode 100644
index 00000000..50b8bc0c
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/seminar_paper_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+
+class SeminarPaperType < WritingSeminarCategory
+
+ field :title, localize: true
+
+ has_and_belongs_to_many :writing_seminars
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/models/writing_seminar.rb b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar.rb
new file mode 100644
index 00000000..ae2048f9
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar.rb
@@ -0,0 +1,128 @@
+# encoding: utf-8
+
+class WritingSeminar
+ 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 :paper_title, localize: true
+ field :seminar_title, localize: true
+ field :authors, localize: true
+ field :location, localize: true
+ field :sponsor, localize: true
+
+ has_and_belongs_to_many :tags, :class_name => "PersonalSeminarTag"
+
+ has_and_belongs_to_many :seminar_author_types
+ has_and_belongs_to_many :seminar_paper_types
+
+
+ field :year
+ field :language
+ field :period_start_date, :type => Date
+ field :period_end_date, :type => Date
+ field :keywords
+ field :abstract
+ field :publication_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_seminar_files, :autosave => true, :dependent => :destroy
+
+ accepts_nested_attributes_for :writing_seminar_files, :allow_destroy => true
+
+ # before_save :update_avliable_language, :clean_checkboxs
+
+ validates :paper_title, :at_least_one => true
+
+ before_validation :add_http
+
+ after_save :save_writing_seminar_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_seminar_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_seminar_files
+ self.writing_seminar_files.each do |t|
+ if t.should_destroy
+ t.destroy
+ end
+ end
+ end
+
+ def create_link
+
+ title = ["\"#{self.paper_title}\""]
+ title << self.seminar_title
+ title << self.sponsor
+ title << self.location
+ title << "#{period_start_date}-#{period_end_date}"
+ # title << "(#{self.seminar_paper_types.collect{|x| x.title}.join(', ')})"
+ title.join(', ')
+
+ 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('')
+ self.seminar_author_type_ids.delete('')
+ self.seminar_level_type_ids.delete('')
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_category.rb b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_category.rb
new file mode 100644
index 00000000..9bd69430
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_category.rb
@@ -0,0 +1,30 @@
+# encoding: utf-8
+
+class WritingSeminarCategory
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include OrbitCoreLib::ObjectAuthable
+ include OrbitCoreLib::ObjectDisable
+ # include Mongoid::MultiParameterAttributes
+ AfterObjectAuthUrl = '/panel/personal_seminar/back_end/writing_seminar_categorys'
+ APP_NAME = 'writing_seminar'
+ # ObjectAuthTitlesOptions = %W{edit}
+ ObjectAuthTitlesOptions = %W{submit_new fact_check}
+
+ field :key
+
+ has_many :writing_seminars
+
+ def pp_object
+ title
+ end
+
+ def self.from_id(id)
+ WritingSeminarCategory.find(id) rescue nil
+ end
+
+ def self.is_localized?(field_name)
+ self.fields[field_name.to_s].localized?
+ end
+
+end
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_file.rb b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_file.rb
new file mode 100644
index 00000000..e8673019
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/models/writing_seminar_file.rb
@@ -0,0 +1,14 @@
+class WritingSeminarFile
+
+ 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_seminar
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/app/views/.gitkeep b/vendor/built_in_modules/personal_seminar/app/views/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_form.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_form.html.erb
new file mode 100644
index 00000000..94d168b8
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_form.html.erb
@@ -0,0 +1,44 @@
+<% # encoding: utf-8 %>
+
+<%= form_for(:writing_seminar_category, :remote => true, :url => @url, :method => @verb, :html => { :id => 'form_writing_seminar_category' } ) do |f| %>
+
+
<%= (@writing_seminar_category.new_record? ? 'Add' : 'Edit') %>
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+
+ <%#= f.label :display %>
+ <%#= f.radio_button :display, "List" List%>
+ <%#= f.radio_button :display, "Picture" Picture%>
+ <%# 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘 %>
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+
+
+<% end %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_quick_edit_qe.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_quick_edit_qe.html.erb
new file mode 100644
index 00000000..005ae64e
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_quick_edit_qe.html.erb
@@ -0,0 +1,28 @@
+<% # encoding: utf-8 %>
+
+
+
+
+ <%= f.label :key %>
+ <%= f.text_field :key %>
+
+
+
+
+ <%= f.label :display %>
+ <%= f.radio_button :display, "List" %>List
+ <%= f.radio_button :display, "Picture" %>Picture
+ 憿舐內孵航身摰典圈X嚗鞈閮曄璅撘
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_writing_seminar_category.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_writing_seminar_category.html.erb
new file mode 100644
index 00000000..af477f32
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/_writing_seminar_category.html.erb
@@ -0,0 +1,22 @@
+
+
+
+ <%= writing_seminar_category.key %>
+
+
+ <% if is_admin?%>
+ <%= link_to t('writing_seminar_category.edit'),
+ polymorphic_path([:panel, :personal_seminar, :back_end, writing_seminar_category], {:action => :edit}), :remote => true %>
+ <%= link_to show_toggle_archive_btn(writing_seminar_category), polymorphic_path([:panel, :personal_seminar, :back_end, writing_seminar_category]), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=>"archive_toggle" %>
+ <% end %>
+
+
+
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= writing_seminar_category.title_translations[locale] rescue nil %>
+ <% end %>
+ <% else %>
+ <%= writing_seminar_category.title %>
+ <% end %>
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/create.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/create.js.erb
new file mode 100644
index 00000000..796935a7
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'writing_seminar_category', :collection => [@writing_seminar_category] %>').appendTo('#writing_seminar_categorys').hide().fadeIn();
+$("#form_writing_seminar_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/destroy.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/destroy.js.erb
new file mode 100644
index 00000000..0387e8e2
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_seminar_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@writing_seminar_category) %> ");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.html.erb
new file mode 100644
index 00000000..0dd54059
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.html.erb
@@ -0,0 +1,7 @@
+
<%= t('personal_seminar.editing_personal_seminar_class') %>
+
+<%= form_for @writing_seminar_category, :url => panel_personal_seminar_back_end_writing_seminar_category_path(@writing_seminar_category) do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.js.erb
new file mode 100644
index 00000000..eaff01fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/index.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/index.html.erb
new file mode 100644
index 00000000..3b29d1c8
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/index.html.erb
@@ -0,0 +1,29 @@
+
+<%= flash_messages %>
+
+<%= @types %>
+
+
+
+
+ <%= t('writing_seminar_category.key') %>
+ <% if @types.is_localized?(:title) %>
+ <% @site_valid_locales.each do |locale| %>
+ <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
+ <% end %>
+ <% else %>
+ <%= t('writing_seminar_category.title') %>
+ <% end %>
+
+
+
+
+ <%= render :partial => 'writing_seminar_category', :collection => @writing_seminar_categorys %>
+
+
+
+
+
<%= render :partial => "form" if is_manager? %>
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.html.erb
new file mode 100644
index 00000000..52ca2d51
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.html.erb
@@ -0,0 +1,19 @@
+<% content_for :secondary do %>
+<%= render :partial => '/panel/personal_seminar/back_end/personal_seminar_secondary' %>
+<% end -%>
+
+<%= flash_messages %>
+
+
+
+
+
+
+
+
<%= t('writing_seminar_category.new_personal_seminar_class') %>
+<%= form_for @writing_seminar_category, :url => panel_personal_seminar_back_end_writing_seminar_categorys_path do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%= link_back %>
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.js.erb
new file mode 100644
index 00000000..40061b9f
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/new.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/update.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/update.js.erb
new file mode 100644
index 00000000..217e760e
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminar_categorys/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= dom_id @writing_seminar_category %>").replaceWith("<%= j render :partial => 'writing_seminar_category', :collection => [@writing_seminar_category] %>");
+<% @writing_seminar_category = @types.new(:display => 'List') # reset for new form %>
+$("#form_writing_seminar_category").replaceWith("<%= j render "form" %>")
+$("#form_writing_seminar_category")[0].reset();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_filter.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_filter.html.erb
new file mode 100644
index 00000000..63882b8f
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form.html.erb
new file mode 100644
index 00000000..b4417935
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form.html.erb
@@ -0,0 +1,249 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_seminar.year")%>
+ <%= select_year((@writing_seminar.year ? @writing_seminar.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_seminar[year]'} ) %>
+
+
+
+
+
+ <%= f.label :period_start_date ,t("personal_seminar.period_start_date")%>
+ <%= f.date_select :period_start_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :period_end_date ,t("personal_seminar.period_end_date")%>
+ <%= f.date_select :period_end_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_seminar.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :seminar_title ,t("personal_seminar.seminar_title")%>
+ <%= f.fields_for :seminar_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.seminar_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :location ,t("personal_seminar.location")%>
+ <%= f.fields_for :location_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.location_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :sponsor ,t("personal_seminar.sponsor")%>
+ <%= f.fields_for :sponsor_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.sponsor_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_seminar.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_seminar.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :url, t("personal_seminar.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_seminar.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :abstract, t("personal_seminar.abstract") %>
+ <%= f.text_field :abstract %>
+
+
+
+ <%= f.label :language, t("personal_seminar.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_seminar.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_seminar.English") %>
+
+
+
+ <%= f.label :note, t("personal_seminar.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_seminar.writing_seminar_files.each_with_index do |writing_seminar_file, i| %>
+ <%= f.fields_for :writing_seminar_files, writing_seminar_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_seminar_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form_file.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_sort_headers.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_sort_headers.html.erb
new file mode 100644
index 00000000..0addfce3
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_sort_headers.html.erb
@@ -0,0 +1,4 @@
+<%= render_sort_bar(true, delete_panel_personal_seminar_back_end_writing_seminars_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['year', 'year', 'span1', 'writing_seminar.year'],
+ ['title', 'title','span3', 'writing_seminar.title'],
+ ['create_modified', 'create_user_id','span1-3', 'writing_seminar.create_modified']).html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_writing_seminar.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_writing_seminar.html.erb
new file mode 100644
index 00000000..0814f76d
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/_writing_seminar.html.erb
@@ -0,0 +1,21 @@
+
+
+ <% if (writing_seminar.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_seminar.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_seminar.year %>
+
+ <%= link_to writing_seminar.create_link, panel_personal_seminar_front_end_writing_seminar_path(writing_seminar) %>
+
+
+ <%if at_least_module_manager || writing_seminar.writing_seminar_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_seminar_back_end_writing_seminar_path(writing_seminar) %>
+ <%= link_to t('delete'), panel_personal_seminar_back_end_writing_seminar_path(writing_seminar), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+ <%= User.from_id(writing_seminar.create_user_id).name rescue ''%>
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/destroy.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/destroy.js.erb
new file mode 100644
index 00000000..71681388
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_seminar %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/edit.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/edit.html.erb
new file mode 100644
index 00000000..da8b2e25
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_seminar.editing_personal_seminar') %>
+
+<%= form_for @writing_seminar, :url => panel_personal_seminar_back_end_writing_seminar_path(@writing_seminar), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.html.erb
new file mode 100644
index 00000000..bf170f01
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_seminar', :collection => @writing_seminars %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.js.erb
new file mode 100644
index 00000000..4c4caaf0
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_seminars").html("<%= j render :partial => 'writing_seminar', :collection => @writing_seminars %>");
+$("#writing_seminar_pagination").html("<%= j paginate @writing_seminars, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/new.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/new.html.erb
new file mode 100644
index 00000000..920067f0
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_seminar.new_personal_seminar') %>
+<%= form_for @writing_seminar, :url => panel_personal_seminar_back_end_writing_seminars_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/show.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/toggle_enable.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/back_end/writing_seminars/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_filter.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_filter.html.erb
new file mode 100644
index 00000000..63882b8f
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form.html.erb
new file mode 100644
index 00000000..b4417935
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form.html.erb
@@ -0,0 +1,249 @@
+<% # encoding: utf-8 %>
+
+ <%= f.error_messages %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.label :year ,t("personal_seminar.year")%>
+ <%= select_year((@writing_seminar.year ? @writing_seminar.year.to_i : DateTime.now.year), {:start_year => DateTime.now.year, :end_year => 1930}, {:name => 'writing_seminar[year]'} ) %>
+
+
+
+
+
+ <%= f.label :period_start_date ,t("personal_seminar.period_start_date")%>
+ <%= f.date_select :period_start_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :period_end_date ,t("personal_seminar.period_end_date")%>
+ <%= f.date_select :period_end_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1930, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+
+ <%= f.label :paper_title ,t("personal_seminar.paper_title")%>
+ <%= f.fields_for :paper_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.paper_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :seminar_title ,t("personal_seminar.seminar_title")%>
+ <%= f.fields_for :seminar_title_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.seminar_title_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :location ,t("personal_seminar.location")%>
+ <%= f.fields_for :location_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.location_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :sponsor ,t("personal_seminar.sponsor")%>
+ <%= f.fields_for :sponsor_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_field locale, :class=>'post-title', :value => (@writing_seminar.sponsor_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+ <%= f.label :authors,t("web_resource.authors") %>
+ <%= f.fields_for :authors_translations do |f| %>
+ <%= I18nVariable.from_locale(locale) %>
+ <%= f.text_area locale, :size => "60x3", :value => (@writing_seminar.authors_translations[locale] rescue nil) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+
+
+ <%= f.label :publication_date ,t("personal_seminar.publication_date")%>
+ <%= f.date_select :publication_date, {:use_month_numbers => true, :start_year => Time.now.year, :end_year => 1890, :order => [:year, :month, :day] }, {:class => 'span1'} %>
+
+
+
+ <%= f.label :url, t("personal_seminar.url") %>
+ <%= f.text_field :url %>
+
+
+
+ <%= f.label :keywords, t("personal_seminar.keywords") %>
+ <%= f.text_field :keywords %>
+
+
+
+ <%= f.label :abstract, t("personal_seminar.abstract") %>
+ <%= f.text_field :abstract %>
+
+
+
+ <%= f.label :language, t("personal_seminar.language") %>
+ <%= f.radio_button :language, "Chinese" %> <%= t("personal_seminar.Chinese") %>
+ <%= f.radio_button :language, "English" %> <%= t("personal_seminar.English") %>
+
+
+
+ <%= f.label :note, t("personal_seminar.note") %>
+ <%= f.text_area :note, :size => "60x3" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ File
+ File Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <% @writing_seminar.writing_seminar_files.each_with_index do |writing_seminar_file, i| %>
+ <%= f.fields_for :writing_seminar_files, writing_seminar_file do |f| %>
+ <%= render :partial => 'form_file', :object => writing_seminar_file, :locals => {:f => f, :i => i} %>
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= f.submit t('submit'), :class=>'btn btn-primary' %>
+ <%= link_to t('cancel'), get_go_back, :class=>"btn" %>
+
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "archive_plugin_form" %>
+
+<% end %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form_file.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form_file.html.erb
new file mode 100644
index 00000000..a91d6a85
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_form_file.html.erb
@@ -0,0 +1,50 @@
+<% # encoding: utf-8 %>
+
+
" class='list_item'>
+
+
+
+ <%= f.file_field :file %>
+ <%= form_file.file.file ? ( link_to t(:view), form_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
+
+
+
+
+
+
+
+ <% @site_valid_locales.each_with_index do |locale, i| %>
+
+
">
+ <%#= 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| %>
+
+
<%= I18nVariable.from_locale(locale) %>
+
+ <%= f.text_field locale, :class=>'post-file_title', :value => (form_file.file_title_translations[locale] rescue nil) %>
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+ <% if form_file.new_record? %>
+
+ <% else %>
+ <%= f.hidden_field :id %>
+
+ <%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
+ <% end %>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_sort_headers.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_sort_headers.html.erb
new file mode 100644
index 00000000..39a77825
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_sort_headers.html.erb
@@ -0,0 +1,3 @@
+<%= render_sort_bar(true, delete_panel_personal_seminar_back_end_writing_seminars_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
+ ['year', 'year', 'span1', 'writing_seminar.year'],
+ ['title', 'title','span3', 'writing_seminar.title']).html_safe %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_writing_seminar.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_writing_seminar.html.erb
new file mode 100644
index 00000000..be2d983d
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/_writing_seminar.html.erb
@@ -0,0 +1,20 @@
+
+
+ <% if (writing_seminar.create_user_id == current_user.id) || is_manager? %>
+ <%= check_box_tag 'to_delete[]', writing_seminar.id, false, :class => "checkbox_in_list" %>
+ <% end -%>
+
+ <%= writing_seminar.year %>
+
+ <%= link_to writing_seminar.create_link, panel_personal_seminar_front_end_writing_seminar_path(writing_seminar) %>
+
+
+ <%if at_least_module_manager || writing_seminar.writing_seminar_category.cur_user_is_sub_manager_of(:edit)%>
+ <%= link_to t('edit'), edit_panel_personal_seminar_plugin_writing_seminar_path(writing_seminar) %>
+ <%= link_to t('delete'), panel_personal_seminar_plugin_writing_seminar_path(writing_seminar), :confirm => t('sure?'), :method => :delete, :remote => true %>
+ <% end -%>
+
+
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/destroy.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/destroy.js.erb
new file mode 100644
index 00000000..71681388
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @writing_seminar %>").remove();
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/edit.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/edit.html.erb
new file mode 100644
index 00000000..79118270
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/edit.html.erb
@@ -0,0 +1,5 @@
+
<%= t('personal_seminar.editing_personal_seminar') %>
+
+<%= form_for @writing_seminar, :url => panel_personal_seminar_plugin_writing_seminar_path(@writing_seminar), :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.html.erb
new file mode 100644
index 00000000..a9c4bfe8
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.html.erb
@@ -0,0 +1,22 @@
+<%= render 'filter' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => 'writing_seminar', :collection => @writing_seminars %>
+
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.js.erb
new file mode 100644
index 00000000..4c4caaf0
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_writing_seminars").html("<%= j render :partial => 'writing_seminar', :collection => @writing_seminars %>");
+$("#writing_seminar_pagination").html("<%= j paginate @writing_seminars, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/new.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/new.html.erb
new file mode 100644
index 00000000..a4c8cae2
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/new.html.erb
@@ -0,0 +1,10 @@
+
+<%= flash_messages %>
+
+
<%= t('writing_seminar.new_personal_seminar') %>
+<%= form_for @writing_seminar, :url => panel_personal_seminar_plugin_writing_seminars_path, :html => {:class => 'clear'} do |f| %>
+ <%= render :partial => 'form', :locals => {:f => f} %>
+<% end %>
+
+<%#= link_back %>
+
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/show.html.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/show.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/toggle_enable.js.erb b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/toggle_enable.js.erb
new file mode 100644
index 00000000..b00cfa07
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/app/views/panel/personal_seminar/plugin/writing_seminars/toggle_enable.js.erb
@@ -0,0 +1,3 @@
+$("#enable_<%= @bulletin.id %>").toggle();
+$("#disable_<%= @bulletin.id %>").toggle();
+$("#bulletin_<%= @bulletin.id %>").toggleClass('disable');
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/config/locales/en.yml b/vendor/built_in_modules/personal_seminar/config/locales/en.yml
new file mode 100644
index 00000000..83dbd328
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/config/locales/en.yml
@@ -0,0 +1,135 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+
+ _locale: English
+
+ add: Add
+ back: Back
+ create: Create
+ delete: Delete
+ disable: Disable
+ downloaded: Downloaded
+ download: Download
+ edit: Edit
+ enable: Enable
+ hide: Hide
+ homepage: Homepage
+ no_: "No"
+ nothing: Nothing
+ show: Show
+ sure?: Are you sure?
+ update: Update
+ yes_: "Yes"
+
+ announcement:
+ sure?: Sure?
+
+
+ web_resource:
+ list_lower: list
+ list_link: Links list
+
+
+ # admin:
+ # action: Action
+ # add_language: Add language
+ # admin: Admin
+ # action: Action
+ # announcement: Announcement
+ # asset: Asset
+ # attributes: Attributes
+ # cant_delete_self: You can not delete yourself.
+ # cant_revoke_self_admin: You can not revoke your admin role yourself.
+ # class: Class
+ # content: Content
+ # create_error_link: Error when creating link.
+ # create_error_page: Error when creating page.
+ # create_success_home: Homepage was successfully created.
+ # create_success_layout: Layout was successfully created.
+ # create_success_link: Link was successfully created.
+ # create_success_page: Page was successfully created.
+ # create_success_snippet: Snippet was successfully created.
+ # create_success_user: User was successfully created.
+ # data: Data
+ # delete_language: Delete language
+ # description: Description
+ # design: Design
+ # disable_language: Disable language
+ # editing_home: Editing homepage
+ # editing_layout: Editing layout
+ # editing_link: Editing link
+ # editing_page: Editing page
+ # editing_snippet: Editing snippet
+ # editing_user_info: Editing user information
+ # editing_user_role: Editing user role
+ # email: Email
+ # enable_language: Enable language
+ # file_name: Filename
+ # file_size: File size
+ # format: Format
+ # home: Home
+ # id: ID
+ # info: Information
+ # is_published: Is published
+ # item: Item
+ # key: Key
+ # language: Language
+ # layout: Layout
+ # layout_name: Layout name
+ # list_assets: Assets list
+ # list_designs: Designs list
+ # list_items: Items list
+ # list_puchases: Purchases list
+ # list_snippets: Snippets list
+ # list_users: Users list
+ # list_user_infos: User information list
+ # list_user_roles: User roles list
+ # member: Member
+ # move_down: Move down
+ # move_up: Move up
+ # multilingual: Multilingual
+ # my_avatar: My Avatar
+ # no_home_page: You don't have a homepage
+ # no_layout: You don't have a layout
+ # name: Name
+ # new_asset: New asset
+ # new_component: New component
+ # new_home: New homepage
+ # new_layout: New layout
+ # new_link: New link
+ # new_page: New page
+ # new_snippet: New snippet
+ # new_user: New user
+ # new_user_info: New user information
+ # new_user_role: New user role
+ # non_multilingual: Non multilingual
+ # options: Options
+ # orig_upload_file: Original filename
+ # position: Position
+ # published?: Published?
+ # purchase: Purchase
+ # registered: Registered
+ # role: Role
+ # roles: Roles
+ # title: Title
+ # translation: Translation
+ # type: Type
+ # up_to_date: Up-to-date
+ # update_error_link: Error when updating link.
+ # update_error_page: Error when updating page.
+ # update_success_content: Content was successfully updated.
+ # update_success_home: Homepage was successfully updated.
+ # update_success_layout: Layout was successfully updated.
+ # update_success_link: Link was successfully updated.
+ # update_success_page: Page was successfully updated.
+ # update_success_snippet: Snippet was successfully updated.
+ # update_success_user: User was successfully updated.
+ # url: URL
+ # user: User
+ # user_info: User information
+ # user_panel: User panel
+ # user_role: User role
+
+ panel:
diff --git a/vendor/built_in_modules/personal_seminar/config/locales/zh_tw.yml b/vendor/built_in_modules/personal_seminar/config/locales/zh_tw.yml
new file mode 100644
index 00000000..a0104cbd
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/config/locales/zh_tw.yml
@@ -0,0 +1,243 @@
+zh_tw:
+
+ _locale: 銝剜
+
+ add: 啣
+ back:
+ create: 菟
+ delete: 芷
+ disable: 蝳
+ edit: 蝺刻摩
+ enable:
+ hide: 梯
+ homepage: 擐
+ no_: "No"
+ nothing:
+ show: 憿舐內
+ sure?: 刻臬?
+ update: 湔
+ yes_: "Yes"
+
+ web_resource:
+ list_lower: 銵
+ list_link: 亙銵
+ category: 憿
+ name: 蝔
+ describe: 餈
+ url: 頝臬
+ edit: 蝺刻摩
+ delete: 芷
+ cate_auth: 憿甈
+
+
+# Chinese (Taiwan) translations for Ruby on Rails
+# by tsechingho (http://github.com/tsechingho)
+ date:
+ formats:
+ default: "%Y-%m-%d"
+ short: "%b%d"
+ long: "%Y撟%b%d"
+ day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ abbr_day_names: [, 銝, 鈭, 銝, , 鈭, 苗
+ month_names: [~, 銝, 鈭, 銝, , 鈭, 剜, 銝, 急, 銋, , 銝, 鈭]
+ abbr_month_names: [~, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
+ order: [ :year, :month, :day ]
+
+ time:
+ formats:
+ default: "%Y撟%b%d %A %H:%M:%S %Z"
+ short: "%b%d %H:%M"
+ long: "%Y撟%b%d %H:%M"
+ am: "銝"
+ pm: "銝"
+
+ datetime:
+ distance_in_words:
+ half_a_minute: ""
+ less_than_x_seconds:
+ one: "銝唬蝘"
+ other: "銝 %{count} 蝘"
+ x_seconds:
+ one: "銝蝘"
+ other: "%{count} 蝘"
+ less_than_x_minutes:
+ one: "銝唬"
+ other: "銝 %{count} "
+ x_minutes:
+ one: "銝"
+ other: "%{count} "
+ about_x_hours:
+ one: "憭抒銝撠"
+ other: "憭抒 %{count} 撠"
+ x_days:
+ one: "銝憭"
+ other: "%{count} 憭"
+ about_x_months:
+ one: "憭抒銝"
+ other: "憭抒 %{count} "
+ x_months:
+ one: "銝"
+ other: "%{count} "
+ about_x_years:
+ one: "憭抒銝撟"
+ other: "憭抒 %{count} 撟"
+ over_x_years:
+ one: "銝撟游"
+ other: "%{count} 撟游"
+ almost_x_years:
+ one: "亥銝撟"
+ other: "亥 %{count} 撟"
+ prompts:
+ year: "撟"
+ month: ""
+ day: ""
+ hour: ""
+ minute: ""
+ second: "蝘"
+
+ number:
+ format:
+ separator: "."
+ delimiter: ","
+ precision: 3
+ significant: false
+ strip_insignificant_zeros: false
+ currency:
+ format:
+ format: "%u %n"
+ unit: "NT$"
+ separator: "."
+ delimiter: ","
+ precision: 2
+ significant: false
+ strip_insignificant_zeros: false
+ percentage:
+ format:
+ delimiter: ""
+ precision:
+ format:
+ delimiter: ""
+ human:
+ format:
+ delimiter: ""
+ precision: 1
+ significant: false
+ strip_insignificant_zeros: false
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Byte"
+ other: "Bytes"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
+ decimal_units:
+ format: "%n %u"
+ units:
+ # 10^-21 zepto, 10^-24 yocto
+ atto: "皜" # 10^-18
+ femto: "憌" # 10^-15 瘥怠凝敺
+ pico: "瞍" # 10^-12 敺桀凝
+ nano: "憟" # 10^-9 瘥怠凝
+ micro: "敺" # 10^-6
+ mili: "瘥" # 10^-3 milli
+ centi: "" # 10^-2
+ deci: "" # 10^-1
+ unit: ""
+ ten:
+ one: ""
+ other: "" # 10^1
+ hundred: "" # 10^2
+ thousand: "" # 10^3 kilo
+ million: "曇" # 10^6 mega
+ billion: "" # 10^9 giga
+ trillion: "" # 10^12 tera
+ quadrillion: "" # 10^15 peta
+ # 10^18 exa, 10^21 zetta, 10^24 yotta
+
+ support:
+ array:
+ words_connector: ", "
+ two_words_connector: " "
+ last_word_connector: ", "
+ select:
+ prompt: "隢豢"
+
+ activerecord:
+ errors:
+ template: # ~ 2.3.5 backward compatible
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+ full_messages:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ taken: "撌脩鋡思蝙"
+ record_invalid: "⊿憭望: %{errors}"
+
+ activemodel:
+ errors:
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ errors:
+ format: "%{attribute} %{message}"
+ messages:
+ inclusion: "瘝怠典銵其葉"
+ exclusion: "航◤靽萄"
+ invalid: "舐⊥"
+ confirmation: "銝蝚血蝣箄"
+ accepted: "敹臬航◤亙"
+ empty: "銝賜蝛"
+ blank: "銝賣舐征賢"
+ too_long: "瘀瑟 %{count} 摮嚗"
+ too_short: "哨剜 %{count} 摮嚗"
+ wrong_length: "摮賊航炊嚗敹 %{count} 摮嚗"
+ not_a_number: "銝舀詨"
+ not_an_integer: "敹舀湔"
+ greater_than: "敹憭扳 %{count}"
+ greater_than_or_equal_to: "敹憭扳潭蝑 %{count}"
+ equal_to: "敹蝑 %{count}"
+ less_than: "敹撠 %{count}"
+ less_than_or_equal_to: "敹撠潭蝑 %{count}"
+ odd: "敹臬"
+ even: "敹臬嗆"
+ template:
+ header:
+ one: " 1 航炊潛雿踹%{model}⊥鋡怠脣"
+ other: " %{count} 航炊潛雿踹%{model}⊥鋡怠脣"
+ body: "隞乩甈雿潛憿嚗"
+
+ helpers:
+ select:
+ prompt: "隢豢"
+ submit:
+ create: "啣%{model}"
+ update: "湔%{model}"
+ submit: "脣%{model}"
+
diff --git a/vendor/built_in_modules/personal_seminar/config/routes.rb b/vendor/built_in_modules/personal_seminar/config/routes.rb
new file mode 100644
index 00000000..e77f2a5f
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/config/routes.rb
@@ -0,0 +1,31 @@
+Rails.application.routes.draw do
+
+ namespace :panel do
+ namespace :personal_seminar do
+ namespace :back_end do
+ resources :writing_seminars do
+ collection do
+ get 'delete'
+ end
+ end
+ resources :seminar_paper_types
+ resources :seminar_author_types
+ # resources :seminar_level_types
+ resources :tags
+ end
+ namespace :front_end do
+ resources :writing_seminars
+ end
+ namespace :plugin do
+ resources :writing_seminars
+ end
+ namespace :widget do
+ match "writing_seminars" => "writing_seminars#index"
+ match "home_list" => "writing_seminars#home_list"
+ match "reload_writing_seminars" => "writing_seminars#reload_writing_seminars"
+ end
+ end
+ end
+ match "/appfront/*path" => redirect("/panel/*path")
+
+end
diff --git a/vendor/built_in_modules/personal_seminar/lib/personal_seminar.rb b/vendor/built_in_modules/personal_seminar/lib/personal_seminar.rb
new file mode 100644
index 00000000..62d873f8
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/lib/personal_seminar.rb
@@ -0,0 +1,4 @@
+require "personal_seminar/engine"
+
+module PersonalSeminar
+end
diff --git a/vendor/built_in_modules/personal_seminar/lib/personal_seminar/engine.rb b/vendor/built_in_modules/personal_seminar/lib/personal_seminar/engine.rb
new file mode 100644
index 00000000..9aa97dbc
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/lib/personal_seminar/engine.rb
@@ -0,0 +1,4 @@
+module PersonalSeminar
+ class Engine < Rails::Engine
+ end
+end
diff --git a/vendor/built_in_modules/personal_seminar/lib/personal_seminar/version.rb b/vendor/built_in_modules/personal_seminar/lib/personal_seminar/version.rb
new file mode 100644
index 00000000..eb05e148
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/lib/personal_seminar/version.rb
@@ -0,0 +1,3 @@
+module PersonalSeminar
+ VERSION = "0.0.1"
+end
diff --git a/vendor/built_in_modules/personal_seminar/lib/tasks/personal_seminar_tasks.rake b/vendor/built_in_modules/personal_seminar/lib/tasks/personal_seminar_tasks.rake
new file mode 100644
index 00000000..bbeac326
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/lib/tasks/personal_seminar_tasks.rake
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :personal_seminar do
+# # Task goes here
+# end
diff --git a/vendor/built_in_modules/personal_seminar/personal_seminar.gemspec b/vendor/built_in_modules/personal_seminar/personal_seminar.gemspec
new file mode 100644
index 00000000..d3b872dc
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/personal_seminar.gemspec
@@ -0,0 +1,23 @@
+$:.push File.expand_path("../lib", __FILE__)
+
+# Maintain your gem's version:
+require "personal_seminar/version"
+
+# Describe your gem and declare its dependencies:
+Gem::Specification.new do |s|
+ s.name = "personal_seminar"
+ s.version = PersonalSeminar::VERSION
+ s.authors = ["TODO: Your name"]
+ s.email = ["TODO: Your email"]
+ s.homepage = "TODO"
+ s.summary = "TODO: Summary of PersonalSeminar."
+ s.description = "TODO: Description of PersonalSeminar."
+
+ s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
+ s.test_files = Dir["test/**/*"]
+
+ s.add_dependency "rails", "~> 3.1.4"
+ # s.add_dependency "jquery-rails"
+
+ s.add_development_dependency "sqlite3"
+end
diff --git a/vendor/built_in_modules/personal_seminar/personal_seminar.json b/vendor/built_in_modules/personal_seminar/personal_seminar.json
new file mode 100644
index 00000000..1209f34e
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/personal_seminar.json
@@ -0,0 +1,13 @@
+{
+ "title": "personal_seminar",
+ "object": "writing_seminar",
+ "version": "0.1",
+ "organization": "Rulingcom",
+ "author": "RD dep",
+ "intro": "A simple blog色",
+ "update_info": "Some info",
+ "create_date": "09-08-2012",
+ "category": ["WritingSeminarCategory"],
+ "enable_frontend": true,
+ "has_plugin": true
+}
diff --git a/vendor/built_in_modules/personal_seminar/script/rails b/vendor/built_in_modules/personal_seminar/script/rails
new file mode 100644
index 00000000..23bd81fa
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+#!/usr/bin/env ruby
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+ENGINE_PATH = File.expand_path('../..', __FILE__)
+load File.expand_path('../../test/dummy/script/rails', __FILE__)
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/Rakefile b/vendor/built_in_modules/personal_seminar/test/dummy/Rakefile
new file mode 100644
index 00000000..36458522
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/Rakefile
@@ -0,0 +1,7 @@
+#!/usr/bin/env rake
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+
+Dummy::Application.load_tasks
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/javascripts/application.js b/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/javascripts/application.js
new file mode 100644
index 00000000..37c7bfcd
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/javascripts/application.js
@@ -0,0 +1,9 @@
+// This is a manifest file that'll be compiled into including all the files listed below.
+// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
+// be included in the compiled file accessible from http://example.com/assets/application.js
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// the compiled file.
+//
+//= require jquery
+//= require jquery_ujs
+//= require_tree .
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/stylesheets/application.css b/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/stylesheets/application.css
new file mode 100644
index 00000000..fc25b572
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/app/assets/stylesheets/application.css
@@ -0,0 +1,7 @@
+/*
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
+ *= require_self
+ *= require_tree .
+*/
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/controllers/application_controller.rb b/vendor/built_in_modules/personal_seminar/test/dummy/app/controllers/application_controller.rb
new file mode 100644
index 00000000..e8065d95
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/app/controllers/application_controller.rb
@@ -0,0 +1,3 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/helpers/application_helper.rb b/vendor/built_in_modules/personal_seminar/test/dummy/app/helpers/application_helper.rb
new file mode 100644
index 00000000..de6be794
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/mailers/.gitkeep b/vendor/built_in_modules/personal_seminar/test/dummy/app/mailers/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/models/.gitkeep b/vendor/built_in_modules/personal_seminar/test/dummy/app/models/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/app/views/layouts/application.html.erb b/vendor/built_in_modules/personal_seminar/test/dummy/app/views/layouts/application.html.erb
new file mode 100644
index 00000000..9a8a761b
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+
+
+
+
Dummy
+ <%= stylesheet_link_tag "application" %>
+ <%= javascript_include_tag "application" %>
+ <%= csrf_meta_tags %>
+
+
+
+<%= yield %>
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config.ru b/vendor/built_in_modules/personal_seminar/test/dummy/config.ru
new file mode 100644
index 00000000..1989ed8d
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run Dummy::Application
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/application.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/application.rb
new file mode 100644
index 00000000..a6aa4a77
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/application.rb
@@ -0,0 +1,45 @@
+require File.expand_path('../boot', __FILE__)
+
+require 'rails/all'
+
+Bundler.require
+require "personal_seminar"
+
+module Dummy
+ class Application < Rails::Application
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration should go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded.
+
+ # Custom directories with classes and modules you want to be autoloadable.
+ # config.autoload_paths += %W(#{config.root}/extras)
+
+ # Only load the plugins named here, in the order given (default is alphabetical).
+ # :all can be used as a placeholder for all plugins not explicitly named.
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+ # Activate observers that should always be running.
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
+
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+ # config.time_zone = 'Central Time (US & Canada)'
+
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+ # config.i18n.default_locale = :de
+
+ # Configure the default encoding used in templates for Ruby 1.9.
+ config.encoding = "utf-8"
+
+ # Configure sensitive parameters which will be filtered from the log file.
+ config.filter_parameters += [:password]
+
+ # Enable the asset pipeline
+ config.assets.enabled = true
+
+ # Version of your assets, change this if you want to expire all your assets
+ config.assets.version = '1.0'
+ end
+end
+
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/boot.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/boot.rb
new file mode 100644
index 00000000..eba06813
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/boot.rb
@@ -0,0 +1,10 @@
+require 'rubygems'
+gemfile = File.expand_path('../../../../Gemfile', __FILE__)
+
+if File.exist?(gemfile)
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ require 'bundler'
+ Bundler.setup
+end
+
+$:.unshift File.expand_path('../../../../lib', __FILE__)
\ No newline at end of file
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/database.yml b/vendor/built_in_modules/personal_seminar/test/dummy/config/database.yml
new file mode 100644
index 00000000..51a4dd45
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/database.yml
@@ -0,0 +1,25 @@
+# SQLite version 3.x
+# gem install sqlite3
+#
+# Ensure the SQLite 3 gem is defined in your Gemfile
+# gem 'sqlite3'
+development:
+ adapter: sqlite3
+ database: db/development.sqlite3
+ pool: 5
+ timeout: 5000
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3
+ pool: 5
+ timeout: 5000
+
+production:
+ adapter: sqlite3
+ database: db/production.sqlite3
+ pool: 5
+ timeout: 5000
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/environment.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/environment.rb
new file mode 100644
index 00000000..3da5eb91
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the rails application
+require File.expand_path('../application', __FILE__)
+
+# Initialize the rails application
+Dummy::Application.initialize!
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/development.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/development.rb
new file mode 100644
index 00000000..95a50b91
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/development.rb
@@ -0,0 +1,30 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the web server when you make code changes.
+ config.cache_classes = false
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Don't care if the mailer can't send
+ config.action_mailer.raise_delivery_errors = false
+
+ # Print deprecation notices to the Rails logger
+ config.active_support.deprecation = :log
+
+ # Only use best-standards-support built into browsers
+ config.action_dispatch.best_standards_support = :builtin
+
+ # Do not compress assets
+ config.assets.compress = false
+
+ # Expands the lines which load the assets
+ config.assets.debug = true
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/production.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/production.rb
new file mode 100644
index 00000000..ca2c5888
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/production.rb
@@ -0,0 +1,60 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # Code is not reloaded between requests
+ config.cache_classes = true
+
+ # Full error reports are disabled and caching is turned on
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Disable Rails's static asset server (Apache or nginx will already do this)
+ config.serve_static_assets = false
+
+ # Compress JavaScripts and CSS
+ config.assets.compress = true
+
+ # Don't fallback to assets pipeline if a precompiled asset is missed
+ config.assets.compile = false
+
+ # Generate digests for assets URLs
+ config.assets.digest = true
+
+ # Defaults to Rails.root.join("public/assets")
+ # config.assets.manifest = YOUR_PATH
+
+ # Specifies the header that your server uses for sending files
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
+
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+ # config.force_ssl = true
+
+ # See everything in the log (default is :info)
+ # config.log_level = :debug
+
+ # Use a different logger for distributed setups
+ # config.logger = SyslogLogger.new
+
+ # Use a different cache store in production
+ # config.cache_store = :mem_cache_store
+
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server
+ # config.action_controller.asset_host = "http://assets.example.com"
+
+ # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
+ # config.assets.precompile += %w( search.js )
+
+ # Disable delivery errors, bad email addresses will be ignored
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable threaded mode
+ # config.threadsafe!
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation can not be found)
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners
+ config.active_support.deprecation = :notify
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/test.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/test.rb
new file mode 100644
index 00000000..6810c914
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/environments/test.rb
@@ -0,0 +1,39 @@
+Dummy::Application.configure do
+ # Settings specified here will take precedence over those in config/application.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Configure static asset server for tests with Cache-Control for performance
+ config.serve_static_assets = true
+ config.static_cache_control = "public, max-age=3600"
+
+ # Log error messages when you accidentally call methods on nil
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/backtrace_silencers.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/backtrace_silencers.rb
new file mode 100644
index 00000000..59385cdf
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/inflections.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/inflections.rb
new file mode 100644
index 00000000..9e8b0131
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/inflections.rb
@@ -0,0 +1,10 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format
+# (all these examples are active by default):
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/mime_types.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/mime_types.rb
new file mode 100644
index 00000000..72aca7e4
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/secret_token.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/secret_token.rb
new file mode 100644
index 00000000..87c0a946
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/secret_token.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+Dummy::Application.config.secret_token = '08ae1abb617d588b6d3b9c5453dd61ec5560d0cba784ab4a4ac34a99f233c36b5bf7857b8a1bab5b5f5423cf87c9ac7bcc45c62290916c0e870a23a1c69ed273'
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/session_store.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/session_store.rb
new file mode 100644
index 00000000..952473ff
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/session_store.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
+
+# Use the database for sessions instead of the cookie-based default,
+# which shouldn't be used to store highly confidential information
+# (create the session table with "rails generate session_migration")
+# Dummy::Application.config.session_store :active_record_store
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/wrap_parameters.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/wrap_parameters.rb
new file mode 100644
index 00000000..999df201
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+ wrap_parameters format: [:json]
+end
+
+# Disable root element in JSON by default.
+ActiveSupport.on_load(:active_record) do
+ self.include_root_in_json = false
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/locales/en.yml b/vendor/built_in_modules/personal_seminar/test/dummy/config/locales/en.yml
new file mode 100644
index 00000000..179c14ca
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/locales/en.yml
@@ -0,0 +1,5 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+ hello: "Hello world"
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/config/routes.rb b/vendor/built_in_modules/personal_seminar/test/dummy/config/routes.rb
new file mode 100644
index 00000000..bb509f27
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/config/routes.rb
@@ -0,0 +1,58 @@
+Dummy::Application.routes.draw do
+ # The priority is based upon order of creation:
+ # first created -> highest priority.
+
+ # Sample of regular route:
+ # match 'products/:id' => 'catalog#view'
+ # Keep in mind you can assign values other than :controller and :action
+
+ # Sample of named route:
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
+ # This route can be invoked with purchase_url(:id => product.id)
+
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
+ # resources :products
+
+ # Sample resource route with options:
+ # resources :products do
+ # member do
+ # get 'short'
+ # post 'toggle'
+ # end
+ #
+ # collection do
+ # get 'sold'
+ # end
+ # end
+
+ # Sample resource route with sub-resources:
+ # resources :products do
+ # resources :comments, :sales
+ # resource :seller
+ # end
+
+ # Sample resource route with more complex sub-resources
+ # resources :products do
+ # resources :comments
+ # resources :sales do
+ # get 'recent', :on => :collection
+ # end
+ # end
+
+ # Sample resource route within a namespace:
+ # namespace :admin do
+ # # Directs /admin/products/* to Admin::ProductsController
+ # # (app/controllers/admin/products_controller.rb)
+ # resources :products
+ # end
+
+ # You can have the root of your site routed with "root"
+ # just remember to delete public/index.html.
+ # root :to => 'welcome#index'
+
+ # See how all your routes lay out with "rake routes"
+
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
+ # Note: This route will make all actions in every controller accessible via GET requests.
+ # match ':controller(/:action(/:id(.:format)))'
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/lib/assets/.gitkeep b/vendor/built_in_modules/personal_seminar/test/dummy/lib/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/log/.gitkeep b/vendor/built_in_modules/personal_seminar/test/dummy/log/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/public/404.html b/vendor/built_in_modules/personal_seminar/test/dummy/public/404.html
new file mode 100644
index 00000000..9a48320a
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/public/404.html
@@ -0,0 +1,26 @@
+
+
+
+
The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/public/422.html b/vendor/built_in_modules/personal_seminar/test/dummy/public/422.html
new file mode 100644
index 00000000..83660ab1
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/public/422.html
@@ -0,0 +1,26 @@
+
+
+
+
The change you wanted was rejected (422)
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/public/500.html b/vendor/built_in_modules/personal_seminar/test/dummy/public/500.html
new file mode 100644
index 00000000..b80307fc
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/public/500.html
@@ -0,0 +1,26 @@
+
+
+
+
We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
We've been notified about this issue and we'll take a look at it shortly.
+
+
+
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/public/favicon.ico b/vendor/built_in_modules/personal_seminar/test/dummy/public/favicon.ico
new file mode 100644
index 00000000..e69de29b
diff --git a/vendor/built_in_modules/personal_seminar/test/dummy/script/rails b/vendor/built_in_modules/personal_seminar/test/dummy/script/rails
new file mode 100644
index 00000000..81eab02f
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/dummy/script/rails
@@ -0,0 +1,6 @@
+#!/usr/bin/env ruby.exe
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
+
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
+require 'rails/commands'
diff --git a/vendor/built_in_modules/personal_seminar/test/integration/navigation_test.rb b/vendor/built_in_modules/personal_seminar/test/integration/navigation_test.rb
new file mode 100644
index 00000000..97a94c9b
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/integration/navigation_test.rb
@@ -0,0 +1,10 @@
+require 'test_helper'
+
+class NavigationTest < ActionDispatch::IntegrationTest
+ fixtures :all
+
+ # test "the truth" do
+ # assert true
+ # end
+end
+
diff --git a/vendor/built_in_modules/personal_seminar/test/personal_seminar_test.rb b/vendor/built_in_modules/personal_seminar/test/personal_seminar_test.rb
new file mode 100644
index 00000000..e04b4928
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/personal_seminar_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class PersonalSeminarTest < ActiveSupport::TestCase
+ test "truth" do
+ assert_kind_of Module, PersonalSeminar
+ end
+end
diff --git a/vendor/built_in_modules/personal_seminar/test/test_helper.rb b/vendor/built_in_modules/personal_seminar/test/test_helper.rb
new file mode 100644
index 00000000..dcd3b276
--- /dev/null
+++ b/vendor/built_in_modules/personal_seminar/test/test_helper.rb
@@ -0,0 +1,10 @@
+# Configure Rails Environment
+ENV["RAILS_ENV"] = "test"
+
+require File.expand_path("../dummy/config/environment.rb", __FILE__)
+require "rails/test_help"
+
+Rails.backtrace_cleaner.remove_silencers!
+
+# Load support files
+Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
diff --git a/vendor/built_in_modules/web_resource/web_resource.json b/vendor/built_in_modules/web_resource/web_resource.json
index ea014b3c..e053f49f 100644
--- a/vendor/built_in_modules/web_resource/web_resource.json
+++ b/vendor/built_in_modules/web_resource/web_resource.json
@@ -6,7 +6,7 @@
"intro": "A simple blog色",
"update_info": "Some info",
"create_date": "11-11-2011",
- "widgets": ["home_list"].
+ "widgets": ["home_list"],
"category": ["WebLinkCategory"],
"enable_frontend": true
}