diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1dfe31e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.bundle/
+log/*.log
+pkg/
+test/dummy/db/*.sqlite3
+test/dummy/log/*.log
+test/dummy/tmp/
+test/dummy/.sass-cache
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..51758f2
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,17 @@
+source "http://rubygems.org"
+
+# Declare your gem's dependencies in member.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 'debugger'
diff --git a/MIT-LICENSE b/MIT-LICENSE
new file mode 100644
index 0000000..5146945
--- /dev/null
+++ b/MIT-LICENSE
@@ -0,0 +1,20 @@
+Copyright 2013 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/README.rdoc b/README.rdoc
new file mode 100644
index 0000000..3fdca54
--- /dev/null
+++ b/README.rdoc
@@ -0,0 +1,3 @@
+= Member
+
+This project rocks and uses MIT-LICENSE.
\ No newline at end of file
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..c0c2818
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,40 @@
+#!/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 = 'Member'
+ 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/app/assets/images/member_staff/.gitkeep b/app/assets/images/member_staff/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/assets/javascripts/member_staff/.gitkeep b/app/assets/javascripts/member_staff/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/assets/stylesheets/member_staff/.gitkeep b/app/assets/stylesheets/member_staff/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/assets/stylesheets/member_staff/default_member.css b/app/assets/stylesheets/member_staff/default_member.css
new file mode 100644
index 0000000..0adecda
--- /dev/null
+++ b/app/assets/stylesheets/member_staff/default_member.css
@@ -0,0 +1,125 @@
+.default_member:after {
+ content: "";
+ clear: both;
+ display: block;
+ visibility: hidden;
+}
+.default_member .member-pic {
+ float: left;
+ width: 30%;
+}
+.default_member .member-pic img {
+ width: 100%;
+ height: auto;
+}
+.default_member .member-data {
+ float: right;
+ width: 68%;
+}
+.default_member .member-data table {
+ width: 100%;
+ background-color: #fff;
+}
+.default_member .member-data table td {
+ padding: 5px;
+ background-color: #ccc;
+ border: 1px solid #fff;
+}
+.default_member .member-data table td + td {
+ background-color: #ededed;
+}
+.default_member .member-module {
+ clear: both;
+ padding-top: 30px;
+}
+.default_member .member-module .module-nav ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ border-bottom: 1px solid #ccc;
+}
+.default_member .member-module .module-nav ul:after {
+ content: "";
+ clear: both;
+ display: block;
+ height: 0;
+ visibility: hidden;
+}
+.default_member .member-module .module-nav ul li {
+ float: left;
+ display: inline-block;
+ margin-right: 3px;
+ margin-bottom: 5px;
+}
+.default_member .member-module .module-nav ul li a {
+ padding: 5px 8px;
+ line-height: 30px;
+ height: 30px;
+ border-radius: 3px;
+ text-decoration: none;
+ background-color: #DDD;
+}
+.default_member .member-module .module-nav ul li.active a {
+ background-color: #0088CE;
+ color: #FFF;
+}
+.default_member .member-module .module-content {
+ position: relative;
+ margin-bottom: 20px;
+}
+.default_member .member-module .module-content .module-pane {
+ display: none;
+ top: 0;
+ left: 0;
+}
+.default_member .member-module .module-content .module-pane table {
+ width: 100%;
+}
+.default_member .member-module .module-content .module-pane.active {
+ display: block;
+}
+
+
+
+
+
+
+[class*="grid"] + [class*="grid"] {
+ margin-left: 2.12766%;
+}
+.grid12 {
+ width: 100%;
+}
+.grid11 {
+ width: 91.4894%;
+}
+.grid10 {
+ width: 82.9787%;
+}
+.grid9 {
+ width: 74.4681%;
+}
+.grid8 {
+ width: 65.9574%;
+}
+.grid7 {
+ width: 57.4468%;
+}
+.grid6 {
+ width: 48.9362%;
+}
+.grid5 {
+ width: 40.4255%;
+}
+.grid4 {
+ width: 31.9149%;
+}
+.grid3 {
+ width: 23.4043%;
+}
+.grid2 {
+ width: 14.8936%;
+}
+.grid1 {
+ width: 6.38298%;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/member_staff/members.css b/app/assets/stylesheets/member_staff/members.css
new file mode 100755
index 0000000..4246679
--- /dev/null
+++ b/app/assets/stylesheets/member_staff/members.css
@@ -0,0 +1,140 @@
+.o-members {}
+.o-members-category {
+ border-left: solid 8px #EEE;
+ border-bottom: solid 1px #EEE;
+ margin: 32px 0;
+ padding: 0 0 0 16px;
+}
+.o-members-category:first-child {
+ margin-top: 0;
+}
+.o-members-nav {
+ margin: 0 0 10px;
+ padding: 0;
+ list-style: none;
+}
+.o-members-nav:after {
+ content: "";
+ clear: both;
+ display: block;
+ height: 0;
+ visibility: hidden;
+}
+.o-members-nav li {
+ float: left;
+}
+.o-members-nav li + li {
+ margin-left: 8px;
+}
+.o-members-nav li a {
+ display: inline-block;
+ line-height: 23px;
+ padding: 5px 8px;
+ height: 23px;
+ background-color: #ccc;
+ border-radius: 3px;
+}
+.o-members-nav li.active a {
+ color: #FFF;
+ background-color: #0088CE;
+}
+.o-members-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.o-members-list > li {
+ margin: 24px 0 0 0;
+}
+.o-members-list > li.odd {}
+.o-members-list > li:after {
+ display: table;
+ width: 100%;
+ content: "";
+ clear: both;
+}
+.o-members-list > li:first-child {
+ margin: 0;
+}
+.o-members-pic {
+ float: left;
+ margin: 0 16px 0 0;
+}
+.o-members-pic img {
+ display: block;
+ width: 150px;
+ height: auto;
+}
+.o-members-info {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ float: left;
+}
+.o-members-info li {}
+.o-members-label {}
+.o-members-label:after {
+ display: inline-block;
+ width: 20px;
+ content: ":";
+}
+.o-members-link {
+ font-weight: bold;
+}
+
+/* columns view */
+.view-columns.o-members.view-columns {}
+.view-columns .o-members-category {}
+.view-columns .o-members-list {}
+.view-columns .o-members-list:after {
+ display: table;
+ width: 100%;
+ content: "";
+ clear: both;
+}
+.view-columns .o-members-list > li {
+ border: solid 1px #eee;
+ float: left;
+ width: 48%;
+ margin: 0 0 4% 4%;
+
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.view-columns .o-members-list > li.odd {
+ margin: 0;
+}
+.view-columns .o-members-pic {
+ margin: 16px;
+}
+.view-columns .o-members-pic img {
+ width: 100px;
+}
+.view-columns .o-members-info {
+ padding: 12px;
+ padding-left: 0;
+ float: none;
+}
+.view-columns .o-members-info li {}
+.view-columns .o-members-label {
+ display: none;
+}
+.view-columns .o-members-link {
+ font-size: 1.2em;
+}
+
+.o-members.view-ntu-lists {}
+.o-members.view-ntu-lists table {
+ width: 100%;
+ margin-bottom: 20px;
+}
+.o-members.view-ntu-lists table thead td {
+ background-color: #DBD7CC;
+ font-weight: bold;
+}
+.o-members.view-ntu-lists .o-members-category {
+ font-size: 16px;
+ margin: 0;
+ line-height: 40px;
+}
diff --git a/app/controllers/.gitkeep b/app/controllers/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
new file mode 100644
index 0000000..307a4ac
--- /dev/null
+++ b/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/app/controllers/panel/member_staff/front_end/member_staff_lists_controller.rb b/app/controllers/panel/member_staff/front_end/member_staff_lists_controller.rb
new file mode 100644
index 0000000..0904572
--- /dev/null
+++ b/app/controllers/panel/member_staff/front_end/member_staff_lists_controller.rb
@@ -0,0 +1,71 @@
+class Panel::MemberStaff::FrontEnd::MemberStaffListsController < OrbitWidgetController
+
+ helper MemberHelper
+
+ def initialize
+ super
+ @app_title = 'memberstaff'
+ end
+
+ # GET /member_lists
+ # GET /member_lists.xml
+
+ def index
+
+ @item = Page.find(params[:page_id])
+ @title = @item.title
+ if !@item.frontend_data_count.blank?
+ @page_num = @item.frontend_data_count
+ else
+ @page_num = 10
+ end
+
+ date_now = Time.now
+
+ @role_id = RoleStatus.get_role_data("staff")
+
+ @member_role = Role.where(:_id => @role_id)
+
+ @member_subroles = SubRole.where(:role_id => @role_id, :disabled => false)
+
+ @member_list_categorys = RoleCategory.can_display.any_in(:_id => params[:tag_id]).asc("key")
+
+ @member_status = RoleStatus.can_display.any_in(:_id => params[:category_id]).asc("key")
+
+ @mlcs = @member_list_categorys.map{|category| category.id.to_s }
+
+ @mcs = params[:mcid].blank? ? @mlcs.first : params[:mcid]
+
+ if !@member_list_categorys.blank? or !@member_status.blank?
+
+ if !@mcs.blank? and @mlcs.include?(@mcs)
+ @member_lists = User.where(:role_ids => @role_id,:role_category_ids => @mcs).asc(:position)
+ else
+ @member_lists = User.where(:role_ids => @role_id).asc(:position)
+ end
+ else
+ # @member_lists = User.where(:role_ids => @role_id)
+ @member_lists = ''
+ end
+
+ end
+
+ def show
+ @member = User.find(params[:id])
+
+ @profile_data = []
+
+ attribute_values = @member.attribute_values.asc("_id")
+ attribute_values.each{|att_val|
+ @profile_data.push({:name => att_val.attribute_field.title,:value =>att_val.get_value_by_locale(I18n.locale.to_s)}) if att_val.attribute_field.attribute.key=="profile" and att_val.attribute_field.to_show != false rescue false
+ }
+ end
+
+
+ protected
+
+ # def get_categorys
+ # @member_list_categorys = MemberListCategory.excludes('disable' => true)
+ # end
+
+end
diff --git a/app/helpers/.gitkeep b/app/helpers/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/mailers/.gitkeep b/app/mailers/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/views/.gitkeep b/app/views/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/app/views/panel/member_staff/front_end/member_staff_lists/_show_roles.html.erb b/app/views/panel/member_staff/front_end/member_staff_lists/_show_roles.html.erb
new file mode 100644
index 0000000..597eae4
--- /dev/null
+++ b/app/views/panel/member_staff/front_end/member_staff_lists/_show_roles.html.erb
@@ -0,0 +1,30 @@
+
+ <% show_roles.attribute_fields.where(:disabled=>false, :to_show.ne => false).asc(:_id).each do |rf| %>
+
+ <%
+ if !@member.get_attribute_value(rf).blank?
+ if !@member.get_attribute_value(rf)['val'].blank?
+ @rodata = @member.get_attribute_value(rf)['val']
+ elsif !@member.get_attribute_value(rf)[I18n.locale].blank?
+ @rodata = @member.get_attribute_value(rf)[I18n.locale]
+ else
+ @rodata = nil
+ end
+
+ if !@rodata.blank? and !@member.get_attribute_value(rf).get_value_by_locale(I18n.locale).blank? and rf.key != 'job_title'
+
+ %>
+
+
+ <%= rf.title %> |
+ <%= nl2br(show_attribute_value(@member.get_attribute_value(rf).get_value_by_locale(I18n.locale))) rescue '' %> |
+
+
+ <% end -%>
+
+ <% end -%>
+
+ <% end -%>
+
+ <%= render :partial => 'show_sub_role',:collection=> @member.get_sub_roles_by_role(show_roles)%>
+
diff --git a/app/views/panel/member_staff/front_end/member_staff_lists/_show_sub_role.html.erb b/app/views/panel/member_staff/front_end/member_staff_lists/_show_sub_role.html.erb
new file mode 100644
index 0000000..612c27c
--- /dev/null
+++ b/app/views/panel/member_staff/front_end/member_staff_lists/_show_sub_role.html.erb
@@ -0,0 +1,28 @@
+
+
+ <% show_sub_role.attribute_fields.where(:disabled=>false).asc(:_id).each do |item| %>
+
+
+ <%
+
+ if !@member.get_attribute_value(item).blank?
+ if !@member.get_attribute_value(item)['val'].blank?
+ @rodata = @member.get_attribute_value(item)['val']
+ elsif !@member.get_attribute_value(item)[I18n.locale].blank?
+ @rodata = @member.get_attribute_value(item)[I18n.locale]
+ else
+ @rodata = nil
+ end
+ end
+
+ if !@rodata.blank? and !@member.get_attribute_value(item).get_value_by_locale(I18n.locale).blank?
+ %>
+
+
+ <%= item.title %> |
+ <%= nl2br(show_attribute_value(@member.get_attribute_value(item).get_value_by_locale(I18n.locale))) rescue '' %> |
+
+
+ <% end -%>
+
+ <% end -%>
\ No newline at end of file
diff --git a/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb b/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb
new file mode 100644
index 0000000..b8e699e
--- /dev/null
+++ b/app/views/panel/member_staff/front_end/member_staff_lists/index.html.erb
@@ -0,0 +1,200 @@
+<% # encoding: utf-8 %>
+
+<% if !@member_lists.blank? %>
+
+<% @job_title_field = @member_lists.get_member_list_attribute_field("staff","job_title") %>
+<% @job_business_field = @member_lists.get_member_list_attribute_field("staff","business") %>
+
+ <% if @item.frontend_style == 'Single' or @item.frontend_style == 'Two' %>
+
+
+
+
+
+
+ <% if !@member_list_categorys.blank? %>
+
+ <% @member_list_categorys.each do |mc| %>
+ - <%= mc.title %>
+ <% end %>
+
+ <% end %>
+
+ <% if @item.frontend_style == 'Single' %>
+
+
+
+ <% @member_status.each do |ms| %>
+
+ <% if @member_lists.where(:role_status_ids=>ms.id).count > 0 %>
+
+
<%= ms.title %>
+
+
+ <% end %>
+
+ <% end %>
+
+
+
+ <% elsif @item.frontend_style == 'Two' %>
+
+
+
+ <% @member_status.each do |ms| %>
+
+ <% if @member_lists.where(:role_status_ids=>ms.id).count > 0 %>
+
+
<%= ms.title %>
+
+
+ <% end %>
+
+ <% end %>
+
+
+
+ <% end %>
+
+
+
+
+ <% elsif @item.frontend_style == 'List' %>
+
+ <% if !@member_list_categorys.blank? %>
+
+ <% @member_list_categorys.each do |mc| %>
+ - <%= mc.title %>
+ <% end %>
+
+ <% end %>
+
+
+
+ <% @member_status.each do |ms| %>
+
+ <% if @member_lists.where(:role_status_ids=>ms.id).count > 0 %>
+
+
<%= ms.title %>
+
+
+
+
+ <%= @job_title_field.title %> |
+ <%= t("users.name")%> |
+ <%= t("users.office_tel")%> |
+ <%= @job_business_field.title %> |
+
+
+
+ <% @member_lists.where(:role_status_ids=>ms.id).each_with_index do |member, i| %>
+
+
+
+
+ <% @job_title = @member_lists.get_member_list_attribute_value(member.id,@job_title_field.id).get_value_by_locale(I18n.locale)
+ if @job_title != 'NoData' and !@job_title.blank?
+ %>
+ <%= @job_title %>
+ <% end %>
+
+ |
+ <%= link_to member.name, "mailto:#{member.email}" %> |
+ <% if !member.office_tel.blank? %>
+ <%= member.office_tel %> |
+ <% end %>
+
+
+ <% @job_business = @member_lists.get_member_list_attribute_value(member.id,@job_business_field.id).get_value_by_locale(I18n.locale)
+ if @job_business != 'NoData' and !@job_business.blank?
+ %>
+ <%= @job_business %>
+ <% end %>
+
+ |
+
+
+ <% end %>
+
+
+
+ <% end %>
+
+ <% end %>
+
+
+
+ <% end %>
+
+<% end %>
+
+<%#= stylesheet_link_tag "member_staff/members" %>
diff --git a/app/views/panel/member_staff/front_end/member_staff_lists/index.js.erb b/app/views/panel/member_staff/front_end/member_staff_lists/index.js.erb
new file mode 100644
index 0000000..c5efda6
--- /dev/null
+++ b/app/views/panel/member_staff/front_end/member_staff_lists/index.js.erb
@@ -0,0 +1 @@
+alert('bob');
\ No newline at end of file
diff --git a/app/views/panel/member_staff/front_end/member_staff_lists/show.html.erb b/app/views/panel/member_staff/front_end/member_staff_lists/show.html.erb
new file mode 100644
index 0000000..e11a658
--- /dev/null
+++ b/app/views/panel/member_staff/front_end/member_staff_lists/show.html.erb
@@ -0,0 +1,69 @@
+
+
+
+
+
+ <% @job_title_field = User.get_member_list_attribute_field("staff","job_title") %>
+
+ <%
+ @member_role = @member.roles.where(:key=>"staff", :disabled=>false)
+ @category = @member.role_categorys.where(:role_id=>@member_role[0]['_id'])
+
+ if !@category.blank?
+ %>
+
+ <%= t('category')%> |
+ <%= show_attribute_value(@member.role_categorys.where(:role_id=>@member_role[0]['_id']).map{|t|t.title.to_s}.join(',')) rescue '' %> |
+
+
+ <% end -%>
+
+ <%
+ @job_title = show_attribute_value(User.get_member_list_attribute_value(@member.id,@job_title_field.id).get_value_by_locale(I18n.locale))
+ if @job_title != 'NoData' and !@job_title.blank? and @job_title_field.to_show == true
+ %>
+
+ <%= @job_title_field.title %> |
+ <%= @job_title %> |
+
+ <% end -%>
+
+
+ <%= t('users.name')%> |
+ <%= @member.name%> |
+
+
+ <%= t('users.email')%> |
+ <%= @member.email %> |
+
+ <% if !@member.office_tel.blank? %>
+
+ <%= t('users.office_tel')%> |
+ <%= @member.office_tel%> |
+
+ <% end %>
+
+ <% @profile_data.each do |item| %>
+ <% if !item[:value].blank? %>
+
+ <%= item[:name] %> |
+ <%= show_attribute_value(item[:value]) %> |
+
+ <% end -%>
+ <% end -%>
+
+ <%= render :partial=> "show_roles",:collection=>@member_role %>
+
+
+
+
+
+
+ <%= image_tag(@member.avatar) %>
+
+
+
+
+
+<%= stylesheet_link_tag "member_staff/default_member" %>
+
diff --git a/app/views/panel/member_staff/widget/web_links/_index.html.erb b/app/views/panel/member_staff/widget/web_links/_index.html.erb
new file mode 100644
index 0000000..5431137
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/_index.html.erb
@@ -0,0 +1,27 @@
+<% if @current_category %>
+ <%= @current_category.title + " " + t(:list_lower) %>
+<% elsif @tag %>
+ <%= @tag[I18n.locale] + " " + t(:list_lower) %>
+<% else %>
+ <%= t('list.link') %>
+<% end %>
+
+
+
+
+ <%= t(:category) %> |
+ <%= t(:name) %> |
+
+ <% @web_links.each do |post| %>
+
+ <%= post.web_link_category.title rescue nil %> |
+
+ <%= link_to post.title, post.url, {:target => '_blank', :title => post.title} %>
+ |
+
+ <% end %>
+
+
+
+<%#= paginate @web_links, :params => {:inner => 'true'}, :remote => true %>
+<%= paginate @web_links, :params => {:inner => 'false'}, :remote => true %>
diff --git a/app/views/panel/member_staff/widget/web_links/_web_links.html.erb b/app/views/panel/member_staff/widget/web_links/_web_links.html.erb
new file mode 100644
index 0000000..cc612c5
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/_web_links.html.erb
@@ -0,0 +1,10 @@
+
+ <% @web_links.each do |widget| -%>
+ - <%= link_to widget.title, widget.url, {:target => '_blank', :title => widget.title} %>
+ <% end -%>
+
+
+
\ No newline at end of file
diff --git a/app/views/panel/member_staff/widget/web_links/home_list.html.erb b/app/views/panel/member_staff/widget/web_links/home_list.html.erb
new file mode 100644
index 0000000..1f9fd30
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/home_list.html.erb
@@ -0,0 +1,9 @@
+
+ <% if @title %>
+
<%= @title %>
+ <% end %>
+
+
+ <%= render 'web_links' %>
+
+
diff --git a/app/views/panel/member_staff/widget/web_links/index.html.erb b/app/views/panel/member_staff/widget/web_links/index.html.erb
new file mode 100644
index 0000000..93e3140
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/index.html.erb
@@ -0,0 +1,3 @@
+
+ <%= render 'index' %>
+
\ No newline at end of file
diff --git a/app/views/panel/member_staff/widget/web_links/index.js.erb b/app/views/panel/member_staff/widget/web_links/index.js.erb
new file mode 100644
index 0000000..4ca2c87
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/index.js.erb
@@ -0,0 +1 @@
+$('#web_link_widget').html("<%= j render 'index' %>")
\ No newline at end of file
diff --git a/app/views/panel/member_staff/widget/web_links/reload_web_links.js.erb b/app/views/panel/member_staff/widget/web_links/reload_web_links.js.erb
new file mode 100644
index 0000000..a457732
--- /dev/null
+++ b/app/views/panel/member_staff/widget/web_links/reload_web_links.js.erb
@@ -0,0 +1 @@
+$('#web_links_links').html("<%= j render 'web_links' if @web_links %>")
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
new file mode 100644
index 0000000..1241421
--- /dev/null
+++ b/config/locales/en.yml
@@ -0,0 +1,8 @@
+en:
+
+ member_staff:
+ member: MemberStaff
+ frontend:
+ member: Member Staff Front-end
+ widget:
+ index: Member Staff Widget
\ No newline at end of file
diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml
new file mode 100644
index 0000000..44f94da
--- /dev/null
+++ b/config/locales/zh_tw.yml
@@ -0,0 +1,8 @@
+zh_tw:
+
+ member_staff:
+ member: 行政人員
+ frontend:
+ member: 行政人員前台
+ widget:
+ index: 行政人員Widget
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
new file mode 100644
index 0000000..8a26cf0
--- /dev/null
+++ b/config/routes.rb
@@ -0,0 +1,21 @@
+Rails.application.routes.draw do
+ namespace :panel do
+ namespace :member_staff do
+ namespace :back_end do
+ resources :member_staff_lists do
+ collection do
+ get 'delete'
+ end
+ end
+ end
+ namespace :front_end do
+ match "member_staff_lists" => "member_staff_lists#index"
+ resources :member_staff_lists
+ end
+ namespace :widget do
+ match "index" => "member_staff_lists#index"
+ end
+ end
+ end
+ match "/appfront/*path" => redirect("/panel/*path")
+end
\ No newline at end of file
diff --git a/lib/member.rb b/lib/member.rb
new file mode 100644
index 0000000..5f09691
--- /dev/null
+++ b/lib/member.rb
@@ -0,0 +1,4 @@
+require "member_staff/engine"
+
+module Member
+end
diff --git a/lib/member_staff/engine.rb b/lib/member_staff/engine.rb
new file mode 100644
index 0000000..a12b2b9
--- /dev/null
+++ b/lib/member_staff/engine.rb
@@ -0,0 +1,24 @@
+module Member
+ class Engine < ::Rails::Engine
+ initializer "member" do
+ OrbitApp.registration "MemberStaff",:type=> 'ModuleApp' do
+ module_label 'member_staff.member'
+ base_url File.expand_path File.dirname(__FILE__)
+ # personal_plugin :enable => true,:path=>"panel/member/plugin/profile",:i18n=>'admin.member'
+
+ version "0.1"
+ organization "Rulingcom"
+ author "RD dep"
+ intro "I am intro"
+ update_info 'some update_info'
+
+ front_end do
+ app_page 'member_staff_lists' do
+ frontend_i18n "member_staff.frontend.member"
+ style ["Single","Two","List"]
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/member_staff/version.rb b/lib/member_staff/version.rb
new file mode 100644
index 0000000..0550522
--- /dev/null
+++ b/lib/member_staff/version.rb
@@ -0,0 +1,3 @@
+module Member
+ VERSION = "0.0.1"
+end
diff --git a/lib/tasks/member_tasks.rake b/lib/tasks/member_tasks.rake
new file mode 100644
index 0000000..a2dcefd
--- /dev/null
+++ b/lib/tasks/member_tasks.rake
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :member do
+# # Task goes here
+# end
diff --git a/member_staff.gemspec b/member_staff.gemspec
new file mode 100644
index 0000000..97abca7
--- /dev/null
+++ b/member_staff.gemspec
@@ -0,0 +1,23 @@
+$:.push File.expand_path("../lib", __FILE__)
+
+# Maintain your gem's version:
+require "member_staff/version"
+
+# Describe your gem and declare its dependencies:
+Gem::Specification.new do |s|
+ s.name = "member_staff"
+ s.version = Member::VERSION
+ s.authors = ["RulingDigital"]
+ s.email = ["service@rulingcom.com"]
+ s.homepage = "http://www.rulingcom.com"
+ s.summary = ""
+ s.description = "Orbit Member Staff module"
+
+ s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
+ s.test_files = Dir["test/**/*"]
+
+ # s.add_dependency "rails", "~> 3.2.12"
+ # s.add_dependency "jquery-rails"
+
+ s.add_development_dependency "sqlite3"
+end
diff --git a/script/rails b/script/rails
new file mode 100755
index 0000000..7ead364
--- /dev/null
+++ b/script/rails
@@ -0,0 +1,8 @@
+#!/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_ROOT = File.expand_path('../..', __FILE__)
+ENGINE_PATH = File.expand_path('../../lib/member/engine', __FILE__)
+
+require 'rails/all'
+require 'rails/engine/commands'