+ {{title}} +
+ +{{journal_title}}
+{{year}}
+{{authors}}
+{{isbn}}
+{{vol_no}}
+{{form_to_start}}
+{{form_to_end}}
+{{language}}
+{{issue_no}}
+{{total_pages}}
+{{abstract}}
+{{publication_date}}
+{{url}}
+{{note}}
+ + +diff --git a/Gemfile b/Gemfile index 08c23aa..d623077 100644 --- a/Gemfile +++ b/Gemfile @@ -23,6 +23,9 @@ gem 'active_model_serializers' #parser gem 'nokogiri' +#store api +gem 'httparty' + #database gem 'mongoid', github: "mongoid/mongoid", ref: 'f9e6fdb' diff --git a/app/controllers/admin/module_store_controller.rb b/app/controllers/admin/module_store_controller.rb index 10422e3..b08c4c8 100644 --- a/app/controllers/admin/module_store_controller.rb +++ b/app/controllers/admin/module_store_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 2070561..5117dbd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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 diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 9990a63..56a3b8d 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -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 { diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 9eff2db..48d737e 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -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 diff --git a/app/models/site.rb b/app/models/site.rb index b5d47af..762893b 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -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 diff --git a/app/templates/orbit_bootstrap/modules/journal_paper/index.html.erb b/app/templates/orbit_bootstrap/modules/journal_paper/index.html.erb new file mode 100644 index 0000000..cc98f3f --- /dev/null +++ b/app/templates/orbit_bootstrap/modules/journal_paper/index.html.erb @@ -0,0 +1,19 @@ +
{{authors}}
+ Read More » +{{journal_title}}
+{{year}}
+{{authors}}
+{{isbn}}
+{{vol_no}}
+{{form_to_start}}
+{{form_to_end}}
+{{language}}
+{{issue_no}}
+{{total_pages}}
+{{abstract}}
+{{publication_date}}
+{{url}}
+{{note}}
+ + +