forked from saurabh/orbit4-5
fixes for member show page
This commit is contained in:
parent
2d1db840c1
commit
e524127242
3
Gemfile
3
Gemfile
|
@ -23,6 +23,9 @@ gem 'active_model_serializers'
|
|||
#parser
|
||||
gem 'nokogiri'
|
||||
|
||||
#store api
|
||||
gem 'httparty'
|
||||
|
||||
#database
|
||||
gem 'mongoid', github: "mongoid/mongoid", ref: 'f9e6fdb'
|
||||
|
||||
|
|
|
@ -3,5 +3,154 @@ class Admin::ModuleStoreController < OrbitAdminController
|
|||
|
||||
def index
|
||||
@extensions = []
|
||||
if current_site.site_token?
|
||||
if current_site.store_confirmation
|
||||
@extensions = get_extensions
|
||||
@store_confirmation = true
|
||||
else
|
||||
@extensions = []
|
||||
@store_confirmation = false
|
||||
end
|
||||
@downloaded_extensions = get_downloaded_extension
|
||||
else
|
||||
@store_confirmation = true
|
||||
@extensions = []
|
||||
@downloaded_extensions = get_downloaded_extension
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@extension = get_extension(params[:id]) rescue nil
|
||||
end
|
||||
|
||||
def download
|
||||
#get extension related values
|
||||
extension = get_extension(params[:id]) rescue nil
|
||||
extension_name = extension["key"].to_s
|
||||
git_repository_url = extension["git_url"]
|
||||
tag = extension["tag"]
|
||||
module_installed = File.read("downloaded_extensions.rb").include?(extension["key"])
|
||||
|
||||
if module_installed.eql?(false)
|
||||
@download_link = "gem '#{extension_name}', :git => '#{git_repository_url}', :tag => '#{tag}'"
|
||||
File.open("downloaded_extensions.rb", 'a') do |file|
|
||||
file.puts @download_link
|
||||
end
|
||||
end
|
||||
restart
|
||||
redirect_to admin_module_store_path
|
||||
end
|
||||
|
||||
def toggle_module
|
||||
temp_extensions=File.open("#{Rails.root}/extensions.tmp.rb", 'w')
|
||||
extensions = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
|
||||
|
||||
while (extension = extensions.gets)
|
||||
if params[:module].any? { |mod| extension.include?("gem '"+mod+"'")}
|
||||
@mod = ModuleApp.where(key: extension.split("'")[1]).first
|
||||
if extension.start_with?("# ")
|
||||
temp_extensions << extension.gsub("# ","")
|
||||
toggle_item(@mod , true)
|
||||
else
|
||||
temp_extensions << "# "+extension
|
||||
toggle_item(@mod , false)
|
||||
end
|
||||
else
|
||||
temp_extensions << extension
|
||||
end
|
||||
end
|
||||
|
||||
extensions.close
|
||||
temp_extensions.close
|
||||
|
||||
FileUtils.mv("#{Rails.root}/extensions.tmp.rb","#{Rails.root}/downloaded_extensions.rb")
|
||||
render text: "true"
|
||||
end
|
||||
|
||||
def remove_module
|
||||
temp_extensions=File.open("#{Rails.root}/extensions.tmp.rb", 'w')
|
||||
extensions = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
|
||||
|
||||
while (extension = extensions.gets)
|
||||
if extension.include?("gem '"+params[:module]+"'")
|
||||
@mod = ModuleApp.where(key: extension.split("'")[1]).first
|
||||
toggle_item(@mod , false)
|
||||
temp_extensions << ""
|
||||
else
|
||||
temp_extensions << extension
|
||||
end
|
||||
end
|
||||
|
||||
extensions.close
|
||||
temp_extensions.close
|
||||
|
||||
FileUtils.mv("#{Rails.root}/extensions.tmp.rb","#{Rails.root}/downloaded_extensions.rb")
|
||||
restart
|
||||
render text: "true"
|
||||
end
|
||||
|
||||
def restart_server
|
||||
render text: "true"
|
||||
end
|
||||
|
||||
def restart
|
||||
Bundler.with_clean_env { `cd #{Rails.root} && bundle install` }
|
||||
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
|
||||
sleep 5
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_extensions
|
||||
extensions = store_session.extensions
|
||||
|
||||
exist_exts = []
|
||||
ext_file = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
|
||||
|
||||
while (exist_ext = ext_file.gets)
|
||||
status = !exist_ext.start_with?("# ")
|
||||
exist_ext = exist_ext.split(',')
|
||||
|
||||
if !extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}.blank?
|
||||
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed']=true
|
||||
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['enabled']=status
|
||||
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed_version']=exist_ext[2].split(/[\'\"]/)[1]
|
||||
if extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['tag'] != exist_ext[2].split(/[\'\"]/)[1]
|
||||
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = false
|
||||
else
|
||||
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ext_file.close
|
||||
|
||||
extensions
|
||||
end
|
||||
|
||||
def get_extension(id)
|
||||
store_session.get_extension(id)
|
||||
end
|
||||
|
||||
def get_downloaded_extension
|
||||
downloaded_extensions = []
|
||||
|
||||
extensions = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
|
||||
|
||||
while (extension = extensions.gets)
|
||||
status = !extension.start_with?("# ")
|
||||
extension = extension.split(',')
|
||||
|
||||
downloaded_extensions << {'name' => extension[0].split(/[\'\"]/)[1], 'repo' => extension[1].split(/[\'\"]/)[1], 'tag' => extension[2].split(/[\'\"]/)[1], 'status' => status}
|
||||
end
|
||||
extensions.close
|
||||
downloaded_extensions.to_json
|
||||
end
|
||||
|
||||
def toggle_item(module_key, active)
|
||||
if !module_key.nil?
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -95,6 +95,15 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
end
|
||||
|
||||
def site_token_present?
|
||||
current_site.site_token?
|
||||
end
|
||||
|
||||
def store_session
|
||||
api_key = STORE_CONFIG[:store_settings]["api_key"]
|
||||
@store = Store.new(current_site.id.to_s, current_site.site_token,api_key) if current_site.site_token
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_user
|
||||
|
|
|
@ -66,7 +66,7 @@ class MembersController < ApplicationController
|
|||
pd = plugin_data.collect do |p|
|
||||
{
|
||||
"data_title" => p.slug_title,
|
||||
"link_to_show" => OrbitHelper.url_to_show(p.to_param) + "?method=personal_plugin&plugin_name=#{plugin.app_name}"
|
||||
"link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name)
|
||||
}
|
||||
end
|
||||
{
|
||||
|
@ -78,7 +78,7 @@ class MembersController < ApplicationController
|
|||
pd = plugin_data.collect do |p|
|
||||
{
|
||||
"data_title" => p.slug_title,
|
||||
"link_to_show" => OrbitHelper.url_to_show(p.to_param) + "?method=personal_plugin&plugin_name=#{plugin.app_name}"
|
||||
"link_to_show" => OrbitHelper.url_to_plugin_show(p.to_param,plugin.module_app_name.underscore)
|
||||
}
|
||||
end
|
||||
{
|
||||
|
|
|
@ -75,6 +75,11 @@ module OrbitHelper
|
|||
end
|
||||
end
|
||||
|
||||
def self.url_to_plugin_show(slug,module_app)
|
||||
page = Page.find_by(:module => module_app)
|
||||
@url_to_plugin_show = "/#{@site_locale}#{page.url}/#{slug}"
|
||||
end
|
||||
|
||||
def self.set_widget_item_url(widget)
|
||||
@url_widget_for_show = ""
|
||||
module_app = widget.module
|
||||
|
|
|
@ -30,7 +30,8 @@ class Site
|
|||
field :search,:type => Hash
|
||||
field :site_settings
|
||||
field :template, type: String
|
||||
|
||||
field :site_token
|
||||
field :store_confirmation, type: Boolean, default: false
|
||||
|
||||
mount_uploader :default_image, ImageUploader
|
||||
mount_uploader :site_logo, ImageUploader
|
||||
|
@ -40,4 +41,25 @@ class Site
|
|||
I18n.locale = :en
|
||||
title.parameterize
|
||||
end
|
||||
|
||||
def confirm_store(site_token)
|
||||
if self.site_token.eql?(site_token)
|
||||
self.store_confirmation = true
|
||||
self.save
|
||||
end
|
||||
end
|
||||
|
||||
def generate_site_token
|
||||
if self.site_token.nil?
|
||||
self.site_token = SecureRandom.uuid.gsub('-','')
|
||||
self.save
|
||||
end
|
||||
end
|
||||
|
||||
def register_site(url,university,department,email,country)
|
||||
api_key = STORE_CONFIG[:store_settings]["api_key"]
|
||||
self.generate_site_token
|
||||
store = Store.new(self.id.to_s,self.site_token,api_key)
|
||||
store.post_client(self.id.to_s,self.site_token,self.title,url,university,department,email,country)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<div class="index-journal-paper">
|
||||
<h3 class="index-title">
|
||||
<span>{{widget-title}}</span>
|
||||
</h3>
|
||||
<div class="row" data-level="0" data-list="journal_papers">
|
||||
<div class="index-content col-sm-6">
|
||||
<div class="index-content-inner">
|
||||
<section class="index-part">
|
||||
<h4 class="index-content-title">
|
||||
<a href="{{link_to_show}}">{{paper_title}}</a>
|
||||
</h4>
|
||||
<p class="index-subtitle">{{authors}}</p>
|
||||
<a class="more" href="{{link_to_show}}">Read More »</a>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{pagination_goes_here}}
|
|
@ -0,0 +1,29 @@
|
|||
<article class="show-journal-paper">
|
||||
<h1 class="show-title">
|
||||
<span>{{title}}</span>
|
||||
</h1>
|
||||
|
||||
<p><label>Journal Title:</label> {{journal_title}}</p>
|
||||
<p><label>Year:</label> {{year}}</p>
|
||||
<p><label>Authors:</label> {{authors}}</p>
|
||||
<p><label>ISBN:</label> {{isbn}}</p>
|
||||
<p><label>Volume Number:</label> {{vol_no}}</p>
|
||||
<p><label>Start Page:</label> {{form_to_start}}</p>
|
||||
<p><label>End Page:</label> {{form_to_end}}</p>
|
||||
<p><label>Language:</label> {{language}}</p>
|
||||
<p><label>Issue No:</label> {{issue_no}}</p>
|
||||
<p><label>Total Pages:</label> {{total_pages}}</p>
|
||||
<p><label>Abstract:</label> {{abstract}}</p>
|
||||
<p><label>Publication Date</label> {{publication_date}}</p>
|
||||
<p><label>URL:</label> {{url}}</p>
|
||||
<p><label>Note:</label> {{note}}</p>
|
||||
|
||||
<ul class="post-related list-unstyled">
|
||||
<li class="post-related-files">
|
||||
<i class="fa fa-fw fa-paperclip"></i>
|
||||
<div class="post-related-flises-list" data-list="journal_paper_files" data-level="0">
|
||||
<a href="{{file_url}}">{{file_title}}</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
|
@ -228,4 +228,105 @@
|
|||
<div class="modal-backdrop"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var toggle_modules = new Array();
|
||||
var extensions = <%= @extensions.to_json.to_s.html_safe %>;
|
||||
var module_to_delete;
|
||||
|
||||
$.each(extensions,function(){
|
||||
var module_key = this['key'];
|
||||
var module_title = this['title'];
|
||||
if(typeof this['installed']=='undefined') return;
|
||||
if(this['updated']==false) console.log(this['key']);
|
||||
|
||||
var checked = "";
|
||||
if(this['enabled']==true) checked="checked='checked'";
|
||||
|
||||
$("#extensions_table").append("<tr><td width='15%'><i class='icons-"+this['key']+" icon-3x'></i><br/>"+this['title']+"</td><td width='40%'>Version<br/>v"+this['installed_version']+"</td><td><%= t(:active) %><br/><input type='checkbox' class='toggle-check set-sidebar-state' data-disabled='true' "+checked+" onclick='toggle_module(\""+this['key']+"\");'></td><td>"+
|
||||
"<button id='delete_"+this['key']+"' class='btn btn-small btn-danger'><i class='icon-trash'></i> <%= t(:delete_) %></button></td></tr>");
|
||||
|
||||
$("#delete_"+this['key']).click(function(){
|
||||
module_to_delete = module_key;
|
||||
$("#module_icon").html("<i class='icons-"+module_key+" icon-3x'></i>");
|
||||
$("#module_title").html(module_title);
|
||||
$(".modal-backdrop").fadeIn(300,function(){
|
||||
$("#delete_confirm_wrap").fadeIn(300);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$("#cancel_btn").click(function(){
|
||||
$("#delete_confirm_wrap").fadeOut(200,function(){
|
||||
$(".modal-backdrop").fadeOut(100);
|
||||
});
|
||||
});
|
||||
|
||||
$("#delete_module_btn").click(function(){
|
||||
$("#delete_confirm_wrap").fadeOut();
|
||||
remove_module(module_to_delete);
|
||||
});
|
||||
|
||||
function toggle_module(module){
|
||||
if((idx = $.inArray(module, toggle_modules))>=0){
|
||||
toggle_modules.splice(idx, 1);
|
||||
}else{
|
||||
toggle_modules.push(module);
|
||||
}
|
||||
|
||||
if(toggle_modules.length>0){
|
||||
$("#apply_change_btn").show();
|
||||
}else{
|
||||
$("#apply_change_btn").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function apply_change(){
|
||||
$(document).scrollTop(0);
|
||||
|
||||
$("#module_msg_title").html("<%= t(:applying_change) %>");
|
||||
$("#module_msg_content").html("<%= t(:please_wait) %>");
|
||||
|
||||
$(".modal-backdrop").fadeIn(300,function(){
|
||||
$("#alert_wrap").fadeIn(300);
|
||||
$.get("<%= admin_module_store_toggle_module_path%>?"+$.param({'module':toggle_modules}),function(data){
|
||||
|
||||
toggle_modules = new Array();
|
||||
$("#apply_change_btn").hide();
|
||||
|
||||
$("#module_msg_title").html("<%= t(:change_applied) %>");
|
||||
$("#module_msg_content").html("<%= t("update_manager_.restart_server") %>");
|
||||
|
||||
$.get("<%= admin_module_store_restart_server_path%>",function(){
|
||||
$("#alert_wrap").delay(2000).fadeOut(300,function(){
|
||||
$(".modal-backdrop").fadeOut();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function remove_module(mod_key){
|
||||
$(document).scrollTop(0);
|
||||
|
||||
$("#module_msg_title").html("<%= t(:applying_change) %>");
|
||||
$("#module_msg_content").html("<%= t(:please_wait) %>");
|
||||
|
||||
$(".modal-backdrop").fadeIn(300,function(){
|
||||
$("#alert_wrap").fadeIn(300);
|
||||
$.get("<%= admin_module_store_remove_module_path%>?module="+mod_key,function(data){
|
||||
|
||||
toggle_modules = new Array();
|
||||
$("#apply_change_btn").hide();
|
||||
|
||||
$("#module_msg_title").html("<%= t(:change_applied) %>");
|
||||
$("#module_msg_content").html("<%= t("update_manager_.restart_server") %>");
|
||||
|
||||
$.get("<%= admin_module_store_restart_server_path%>",function(){
|
||||
$("#alert_wrap").delay(2000).fadeOut(300,function(){
|
||||
$(".modal-backdrop").fadeOut();
|
||||
location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
data = File.open(File.join(Rails.root, 'config', 'store_config.yml')).read
|
||||
STORE_CONFIG = YAML::load(ERB.new(data).result(binding)).symbolize_keys
|
|
@ -203,6 +203,12 @@ Orbit::Application.routes.draw do
|
|||
end
|
||||
get 'design_list' => 'designs#design_list'
|
||||
get 'module_store' => 'module_store#index'
|
||||
get 'module_store/show' => 'module_store#show'
|
||||
get 'module_store/download' => 'module_store#download'
|
||||
get 'module_store/remove_module' => 'module_store#remove_module'
|
||||
get 'module_store/toggle_module' => 'module_store#toggle_module'
|
||||
get 'module_store/restart_server' => 'module_store#restart_server'
|
||||
|
||||
|
||||
get "import" => "import#index"
|
||||
get "import/check_url" => "import#check_url"
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
store_settings:
|
||||
url: "http://store.tp.rulingcom.com"
|
||||
api_url: "http://store.tp.rulingcom.com/api"
|
||||
api_key: 'Token token="2870f77e59168dbe3fbdffba466c7c8d"'
|
|
@ -57,6 +57,7 @@ module OrbitApp
|
|||
@sort_number = partial[0][:sort_number]
|
||||
@app_name = partial[0][:app_name]
|
||||
@intro_app_name = partial[0][:intro_app_name]
|
||||
@module_app_name = partial[0][:module_app_name]
|
||||
@partial_path = ''
|
||||
@front_partial_path = ''
|
||||
@admin_partial_path = ''
|
||||
|
@ -82,6 +83,10 @@ module OrbitApp
|
|||
return @intro_app_name
|
||||
end
|
||||
|
||||
def module_app_name
|
||||
return @module_app_name
|
||||
end
|
||||
|
||||
def profile_partial_path
|
||||
return @partial_path
|
||||
end
|
||||
|
@ -93,7 +98,6 @@ module OrbitApp
|
|||
def admin_partial_path
|
||||
return @admin_partial_path
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
require 'httparty'
|
||||
class Store
|
||||
include HTTParty
|
||||
|
||||
format :json
|
||||
base_uri STORE_CONFIG[:store_settings]["api_url"]
|
||||
|
||||
def initialize(site_id,site_token,api_key)
|
||||
@options_for_get = {
|
||||
headers: {
|
||||
"Authorization" => api_key,
|
||||
"X-SiteToken" => site_token,
|
||||
"X-SiteId" => site_id,
|
||||
"Content-Type" => "application/json",
|
||||
'Accept' => 'application/json'
|
||||
}
|
||||
}
|
||||
|
||||
@options_for_client = {
|
||||
headers: {
|
||||
"Authorization" => api_key,
|
||||
"Content-Type" => "application/json",
|
||||
'Accept' => 'application/json'
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def templates(options={})
|
||||
options = @options_for_get
|
||||
self.class.get('/templates', options)
|
||||
end
|
||||
|
||||
def get_template(id)
|
||||
options = @options_for_get
|
||||
self.class.get("/templates/#{id}", options)
|
||||
end
|
||||
|
||||
def extensions(options={})
|
||||
options = @options_for_get
|
||||
self.class.get('/extensions', options)
|
||||
end
|
||||
|
||||
def get_extension(id)
|
||||
options = @options_for_get
|
||||
self.class.get("/extensions/#{id}", options)
|
||||
end
|
||||
|
||||
def post_client(site_id,site_token,site_name,url,university,department,email,country)
|
||||
options = @options_for_client.merge({ :body => {:site_name => site_name, :site_id => site_id,:url => url, :university => university, :department => department, :email => email, :country => country, :site_token => site_token}.to_json })
|
||||
self.class.post('/clients', options )
|
||||
end
|
||||
end
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
total_images: 6
|
||||
current_status: 0
|
||||
success: true
|
||||
current_album_id: '1'
|
||||
current_album_name: "系統測試"
|
Loading…
Reference in New Issue