kosmos 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +15 -0
- data/LICENSE.txt +22 -0
- data/README.md +21 -0
- data/Rakefile +2 -0
- data/bin/kosmos +93 -0
- data/kosmos.gemspec +24 -0
- data/lib/kosmos.rb +54 -0
- data/lib/kosmos/download_url.rb +76 -0
- data/lib/kosmos/git_adapter.rb +61 -0
- data/lib/kosmos/package.rb +119 -0
- data/lib/kosmos/package_dsl.rb +10 -0
- data/lib/kosmos/packages/active_texture_management.rb +20 -0
- data/lib/kosmos/packages/astronomers_visual_pack.rb +54 -0
- data/lib/kosmos/packages/b9_aerospace_pack.rb +22 -0
- data/lib/kosmos/packages/better_atmospheres.rb +41 -0
- data/lib/kosmos/packages/cacteye.rb +10 -0
- data/lib/kosmos/packages/deadly_reentry.rb +9 -0
- data/lib/kosmos/packages/distant_object_enhancement.rb +8 -0
- data/lib/kosmos/packages/docking_port_alignment_indicator.rb +8 -0
- data/lib/kosmos/packages/enhanced_navball.rb +8 -0
- data/lib/kosmos/packages/environmental_visual_enhancements.rb +22 -0
- data/lib/kosmos/packages/ferram_aerospace_research.rb +11 -0
- data/lib/kosmos/packages/firespitter.rb +8 -0
- data/lib/kosmos/packages/hot_rockets.rb +11 -0
- data/lib/kosmos/packages/infernal_robotics.rb +8 -0
- data/lib/kosmos/packages/kerbal_alarm_clock.rb +8 -0
- data/lib/kosmos/packages/kerbal_attachment_system.rb +9 -0
- data/lib/kosmos/packages/kerbal_engineer_redux.rb +8 -0
- data/lib/kosmos/packages/kerbal_joint_reinforcement.rb +8 -0
- data/lib/kosmos/packages/kethane_pack.rb +9 -0
- data/lib/kosmos/packages/ksp_interstellar.rb +10 -0
- data/lib/kosmos/packages/kw_rocketry.rb +8 -0
- data/lib/kosmos/packages/mechjeb.rb +8 -0
- data/lib/kosmos/packages/mk2_cockpit_interior.rb +8 -0
- data/lib/kosmos/packages/nova_punch.rb +10 -0
- data/lib/kosmos/packages/procedural_fairings.rb +8 -0
- data/lib/kosmos/packages/real_chute.rb +9 -0
- data/lib/kosmos/packages/remote_tech.rb +18 -0
- data/lib/kosmos/packages/safe_chute.rb +8 -0
- data/lib/kosmos/packages/scansat.rb +8 -0
- data/lib/kosmos/packages/spaceplane_plus.rb +9 -0
- data/lib/kosmos/packages/tac_fuel_balancer.rb +8 -0
- data/lib/kosmos/packages/tac_life_support.rb +9 -0
- data/lib/kosmos/packages/toolbar.rb +9 -0
- data/lib/kosmos/packages/vanguard_technologies.rb +18 -0
- data/lib/kosmos/page_fetcher.js +47 -0
- data/lib/kosmos/post_processors/module_manager_resolver.rb +30 -0
- data/lib/kosmos/util.rb +7 -0
- data/lib/kosmos/version.rb +3 -0
- data/lib/kosmos/versioner.rb +65 -0
- data/spec/download_url_spec.rb +64 -0
- data/spec/fixtures/example_box.html +165 -0
- data/spec/fixtures/example_dropbox.html +114 -0
- data/spec/fixtures/example_mediafire.html +101 -0
- data/spec/package_spec.rb +77 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/versioner_spec.rb +87 -0
- metadata +166 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
class TACLifeSupport < Kosmos::Package
|
2
|
+
title 'TAC Life Support (WIP)'
|
3
|
+
aliases 'tac life support'
|
4
|
+
url 'https://github.com/taraniselsu/TacLifeSupport/releases/download/Release_v0.8/TacLifeSupport_0.8.0.4.zip'
|
5
|
+
|
6
|
+
def install
|
7
|
+
merge_directory 'GameData'
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class VanguardTechnologies < Kosmos::Package
|
2
|
+
title 'Vanguard Technologies'
|
3
|
+
url 'http://kerbalspaceport.com/wp/wp-content/themes/kerbal/inc/download.php?f=uploads/2013/12/VNG-Plugin_0.7.2.zip'
|
4
|
+
|
5
|
+
def install
|
6
|
+
merge_directory 'VNG-Plugin/GameData'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class VanguardTechnologiesEVAParachutes < Kosmos::Package
|
11
|
+
title 'Vanguard Technologies - EVA Parachutes'
|
12
|
+
aliases 'eva parachutes'
|
13
|
+
url 'http://kerbalspaceport.com/wp/wp-content/themes/kerbal/inc/download.php?f=uploads/2013/10/VNG-Parachute_1.2.zip'
|
14
|
+
|
15
|
+
def install
|
16
|
+
merge_directory 'VNG-Parachute/GameData'
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/**
|
2
|
+
* A PhantomJS script to help find where to download a package's zipfile from.
|
3
|
+
* Execute it is:
|
4
|
+
*
|
5
|
+
* phantomjs page_fetcher.js <url>
|
6
|
+
*
|
7
|
+
* This script will "return" a value by sending it to STDOUT.
|
8
|
+
*
|
9
|
+
* There are two possible outputted values for this script.
|
10
|
+
*
|
11
|
+
* 1. If an external resource is received, and this external resource is a zip
|
12
|
+
* file (as determined from the HTTP contentType header), then the URL to
|
13
|
+
* that resource is returned.
|
14
|
+
* 2. If no external resource is found, then the HTML of the url provided,
|
15
|
+
* after all Javascript has been loaded, is outputted and another script
|
16
|
+
* must take care of determining where the URL of interest is found.
|
17
|
+
*/
|
18
|
+
|
19
|
+
var system = require('system');
|
20
|
+
var page = require('webpage').create();
|
21
|
+
|
22
|
+
var target = system.args[1];
|
23
|
+
|
24
|
+
var externalResourceProvidedUrl = false;
|
25
|
+
|
26
|
+
page.onResourceReceived = function(resource) {
|
27
|
+
if (resource.contentType === 'application/x-zip-compressed' &&
|
28
|
+
!externalResourceProvidedUrl) {
|
29
|
+
externalResourceProvidedUrl = true;
|
30
|
+
|
31
|
+
console.log(resource.url);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
page.open(target, function() {
|
36
|
+
// If this is set to true, then an external resource already provided the
|
37
|
+
// desired URL, and nothing more needs to be done -- the URL has already been
|
38
|
+
// sent to STDOUT.
|
39
|
+
//
|
40
|
+
// If done is still false, then the page itself contains the desired URL, so
|
41
|
+
// we output the HTML and let Ruby-side Kosmos determine the target URL.
|
42
|
+
if (!externalResourceProvidedUrl) {
|
43
|
+
console.log(page.content);
|
44
|
+
}
|
45
|
+
|
46
|
+
phantom.exit();
|
47
|
+
});
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Kosmos
|
2
|
+
module PostProcessors
|
3
|
+
class ModuleManagerResolver
|
4
|
+
def self.post_process(ksp_path)
|
5
|
+
game_data = File.join(ksp_path, 'GameData')
|
6
|
+
|
7
|
+
module_managers = Dir[File.join(game_data, '*')].select do |file|
|
8
|
+
File.basename(file).start_with?('ModuleManager')
|
9
|
+
end
|
10
|
+
|
11
|
+
most_recent_manager = module_managers.max_by do |file|
|
12
|
+
# Converts a string like this:
|
13
|
+
#
|
14
|
+
# ModuleManager.5.2.3
|
15
|
+
#
|
16
|
+
# Into this:
|
17
|
+
#
|
18
|
+
# [5, 2, 3]
|
19
|
+
File.basename(file).scan(/\d+/).map(&:to_i)
|
20
|
+
end
|
21
|
+
|
22
|
+
(module_managers - [most_recent_manager]).each do |file|
|
23
|
+
Util.log "Detected and deleting outdated version of ModuleManager: #{file}"
|
24
|
+
|
25
|
+
File.delete(file)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/kosmos/util.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'rugged'
|
2
|
+
|
3
|
+
module Kosmos
|
4
|
+
class Versioner
|
5
|
+
class << self
|
6
|
+
INIT_COMMIT_MESSAGE = "INIT: Initialize Kosmos"
|
7
|
+
|
8
|
+
def init_repo(path)
|
9
|
+
GitAdapter.init_repo(path)
|
10
|
+
GitAdapter.commit_everything(path, INIT_COMMIT_MESSAGE)
|
11
|
+
end
|
12
|
+
|
13
|
+
def mark_preinstall(path, package)
|
14
|
+
GitAdapter.commit_everything(path, pre_install_message(package))
|
15
|
+
end
|
16
|
+
|
17
|
+
def mark_postinstall(path, package)
|
18
|
+
GitAdapter.commit_everything(path, post_install_message(package))
|
19
|
+
end
|
20
|
+
|
21
|
+
def installed_packages(path)
|
22
|
+
commits = GitAdapter.list_commits(path)
|
23
|
+
|
24
|
+
postinstalls = commits.select(&:post?).map(&:subject)
|
25
|
+
uninstalls = commits.select(&:uninstall?).map(&:subject)
|
26
|
+
|
27
|
+
# The packages that have actually been installed are those that have a
|
28
|
+
# 'post-install' without any corresponding 'uninstall'. We can find
|
29
|
+
# these packages by getting post-installs, and removing the first
|
30
|
+
# instance of each package also found in uninstall.
|
31
|
+
#
|
32
|
+
# Note that we can't use Array#delete because that method will delete
|
33
|
+
# *all* instances of a package, which won't work because it's possible
|
34
|
+
# for a user to install, uninstall, then re-install a package.
|
35
|
+
uninstalls.each do |package|
|
36
|
+
postinstalls.delete_at(postinstalls.index(package))
|
37
|
+
end
|
38
|
+
|
39
|
+
postinstalls
|
40
|
+
end
|
41
|
+
|
42
|
+
def uninstall_package(path, package)
|
43
|
+
to_revert = GitAdapter.list_commits(path).find do |commit|
|
44
|
+
commit.post? && commit.subject == package.title
|
45
|
+
end
|
46
|
+
|
47
|
+
GitAdapter.revert_commit(path, to_revert, uninstall_message(package))
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def pre_install_message(package)
|
53
|
+
"PRE: #{package.title}"
|
54
|
+
end
|
55
|
+
|
56
|
+
def post_install_message(package)
|
57
|
+
"POST: #{package.title}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def uninstall_message(package)
|
61
|
+
"UNINSTALL: #{package.title}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Kosmos::DownloadUrl do
|
4
|
+
it 'detects mediafire links' do
|
5
|
+
url = 'http://www.mediafire.com/download/some-random-stuff/whatever.zip'
|
6
|
+
expect(Kosmos::DownloadUrl.new(url)).to be_mediafire
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'correctly resolves mediafire download urls' do
|
10
|
+
url = 'file://' + File.absolute_path('spec/fixtures/example_mediafire.html')
|
11
|
+
target_url = 'http://download1690.mediafire.com/qny71y9k6kvg/o6cbe03iitggj1p/B9+Aerospace+Pack+R4.0c.zip'
|
12
|
+
|
13
|
+
expect(Kosmos::DownloadUrl.new(url).resolve_download_url).to eq target_url
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'detects box links' do
|
17
|
+
url = 'https://app.box.com/s/89skim2e3simjwmuof4c'
|
18
|
+
expect(Kosmos::DownloadUrl.new(url)).to be_box
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'correctly resolves box download urls' do
|
22
|
+
url = 'https://app.box.com/s/89skim2e3simjwmuof4c'
|
23
|
+
target_url = 'https://app.box.com/index.php?rm=box_download_shared_file&shared_name=89skim2e3simjwmuof4c&file_id=f_13860854981'
|
24
|
+
|
25
|
+
stub_request(:get, url).
|
26
|
+
to_return(body: File.read('spec/fixtures/example_box.html'))
|
27
|
+
|
28
|
+
expect(Kosmos::DownloadUrl.new(url).resolve_download_url).to eq target_url
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'detects dropbox links' do
|
32
|
+
url = 'https://www.dropbox.com/s/some-random-stuff/whatever.zip'
|
33
|
+
expect(Kosmos::DownloadUrl.new(url)).to be_dropbox
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'correctly resolves dropbox download urls' do
|
37
|
+
url = 'file://' + File.absolute_path('spec/fixtures/example_dropbox.html')
|
38
|
+
target_url = 'https://dl.dropboxusercontent.com/s/od4kickxt92jpo2/BetterAtmosphereV4%5BREL%5D.zip?dl=1&token_hash=AAFn5emxuVXLw_RfjDgQs0Hn7-YZ-vejn3m8zLgOj2tTFA&expiry=1401095304'
|
39
|
+
|
40
|
+
expect(Kosmos::DownloadUrl.new(url).resolve_download_url).to eq target_url
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'detects curseforge links' do
|
44
|
+
url = 'http://kerbal.curseforge.com/plugins/123123-whatever'
|
45
|
+
expect(Kosmos::DownloadUrl.new(url)).to be_curseforge
|
46
|
+
end
|
47
|
+
|
48
|
+
# This is commented out until I mock this out -- I don't want to send useless
|
49
|
+
# queries to Curseforge.
|
50
|
+
#
|
51
|
+
# it 'correctly resolves curseforge download urls' do
|
52
|
+
# # TODO: Use VCR or something on this
|
53
|
+
# url = 'http://kerbal.curseforge.com/plugins/220207-hotrockets-particle-fx-replacement'
|
54
|
+
# target_url = 'http://addons.cursecdn.com/files/2201%5C918/HotRockets_7.1_Nazari.zip'
|
55
|
+
|
56
|
+
# expect(Kosmos::DownloadUrl.new(url).resolve_download_url).to eq target_url
|
57
|
+
# end
|
58
|
+
|
59
|
+
it 'just returns the url if no built-in tool available' do
|
60
|
+
url = 'https://github.com/rbray89/ActiveTextureManagement/releases/download/3-1-basic/ActiveTextureManagement-Basic-3-1.zip'
|
61
|
+
|
62
|
+
expect(Kosmos::DownloadUrl.new(url).resolve_download_url).to eq url
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html lang="en-US" style="overflow: hidden;">
|
4
|
+
<head>
|
5
|
+
<meta charset="utf-8"><meta name="referrer" content="never"><title>CactEyeTelescope_v0-1.zip - File Shared from Box</title><meta property="og:description" content="" /><meta property="og:image" content="https://e1.boxcdn.net/_assets/thumbs/242x286/application/zip-uMvcd1.png?shared_name=89skim2e3simjwmuof4c" /><meta name="twitter:card" content="player"><meta name="twitter:site" content="@boxhq"><meta name="twitter:title" content="CactEyeTelescope_v0-1.zip"><meta name="twitter:description" content="CactEyeTelescope_v0-1.zip"><meta name="twitter:image" content="https://e1.boxcdn.net/_assets/thumbs/242x286/application/zip-uMvcd1.png?shared_name=89skim2e3simjwmuof4c"><meta name="twitter:player" content="https://app.box.com/embed_widget/ca35e91x0v68/s/89skim2e3simjwmuof4c"><meta name="twitter:player:width" content="500"><meta name="twitter:player:height" content="400"><meta name="keywords" content="free online storage, online storage, online file storage, share files online, photo sharing online, store documents online, retrieve documents, internet storage, online data backup, file storage, file sharing, photo sharing, online photo gallery, photos online, data backup, online backup, mobile data access, data networking, storage solution, virtual hard drive, remote backup, internet uploading, share files online, file hosting, save files, thumb drive, storage disk, remote access, web hosting, group collaboration, gigabyte of storage, gigabyte of space, group access, online disk storage, online data storage, file storage online, personal online space, secure file sharing, online photo sharing, online photos, backup data, online backup services, mobile media browser, networking & data, network storage solution, internet file storage, backup remote, online file hosting." /><link rel="icon" href="https://e1.boxcdn.net/_assets/img/favicon-ok6l5R.png"><meta name="robots" content="noindex, nofollow"/><link rel="stylesheet" href="https://e1.boxcdn.net/_assets/css/section_application-GxG5XL.css" type="text/css" media="screen" /><link rel="stylesheet" href="https://e1.boxcdn.net/_assets/css/section_templ_box_show_shared_file_lightbox-pGmCsi.css" type="text/css" media="screen" /> <link rel="stylesheet" type="text/css" href="https://e1.boxcdn.net/dynamic/theme_default_1EkNJ4a40775.css" />
|
6
|
+
<script type="text/javascript"> var site_root = '/'
|
7
|
+
,https_root = 'https://app.box.com/';</script>
|
8
|
+
|
9
|
+
<script type="text/javascript"> var script_url = 'https://app.box.com/'
|
10
|
+
,images_path = '/img/'
|
11
|
+
,images_box_path = '/img/box/'
|
12
|
+
,css_path = '/css/'
|
13
|
+
,js_path = '/js/'
|
14
|
+
,assets_index_file = 'assets-index'
|
15
|
+
,assets_index_mini_file = 'assets-index-mini'
|
16
|
+
,assets_base = '_assets'
|
17
|
+
,assets_url = 'https://%s/_assets%s';</script>
|
18
|
+
<script>var is_safari = '1';var request_token = '76969d6382a5aeb096ae81c0a07529033d2fb491142f5c4f06096377a8616860';var waiting_on_user_input = false;window.onreadyList = [];</script><script type="text/javascript">
|
19
|
+
var widget_theme = ''
|
20
|
+
,is_embed_widget = ''
|
21
|
+
,widget_view = ''
|
22
|
+
,widget_sort = ''
|
23
|
+
,widget_direction = ''
|
24
|
+
,widget_original_url = ''
|
25
|
+
,widget_show_item_feed_actions = ''
|
26
|
+
,widget_show_parent_path = ''
|
27
|
+
,widget_root_folder_id = ''
|
28
|
+
,widget_view_file_only = ''
|
29
|
+
,widget_shared_name = ''
|
30
|
+
,path_prefix = ''
|
31
|
+
,open_link_in_new_window = 0 ,promoted_app_ids = '';
|
32
|
+
</script>
|
33
|
+
|
34
|
+
</head>
|
35
|
+
|
36
|
+
|
37
|
+
<!--[if IE 7]> <body class="ie ie7 lte_ie9 lte_ie8 lte_ie7" id="site_body"> <![endif]-->
|
38
|
+
<!--[if IE 8]> <body class="ie ie8 lte_ie9 lte_ie8" id="site_body"> <![endif]-->
|
39
|
+
<!--[if IE 9]> <body class="ie ie9 lte_ie9" id="site_body"> <![endif]-->
|
40
|
+
<!--[if gt IE 9]> <body id="site_body"> <![endif]-->
|
41
|
+
<!--[if !IE]><!--> <body id="site_body"> <!--<![endif]-->
|
42
|
+
<div class="head fw module" style="position: fixed; z-index: 52" data-module="preview-shared-file"> <div class="header" role="navigation">
|
43
|
+
<div class="phl">
|
44
|
+
<div class="line nav share-header-cntr">
|
45
|
+
<div class="header share-action-bar pll mls">
|
46
|
+
<ul class="inline_list module header-shared" data-module="header-shared" data-sharedname="89skim2e3simjwmuof4c" data-fileid="13860854981"><li class="nav_content pvm ignore_mouseover"><button id="download_button" data-type="download-file-btn" class="man pts primary_button fw"><ul class="inline_list inline_list_icon_aligned lh20"><li class="icon sprite_preview_20x20_download ignore_mouseover preview_icon shared-file-page-download-icon"></li><li class="ignore_mouseover shared-file-download-text mhs">Download <span class="file_size">(1.8MB)</span></li></ul></button></li><li class="shared-file-page-signup-link mll"><a id="sign_up" class="highlight ignore_mouseover nav_content" href="https://app.box.com/ref/singlefileshare2">Sign up</a></li><li class="nav_content lowlight ignore_mouseover shared-file-page-link-separator">|</li><li class="shared-file-page-login-link"><a id="log_in" class="highlight ignore_mouseover nav_content" href="https://app.box.com/login">Log in</a></li></ul> </div>
|
47
|
+
<div class="logo_cntr ptm">
|
48
|
+
<a href="https://app.box.com/">
|
49
|
+
<span id="themed_main_logo" style="display: none;"></span>
|
50
|
+
<div id="default_main_logo" class="img logo standard_logo mrm"></div>
|
51
|
+
<div id="default_main_logo_glow" class="img logo standard_logo_glow"></div>
|
52
|
+
|
53
|
+
</a>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="nav_content file-name" data-type="file-name" data-hover="tooltip" aria-label="CactEyeTelescope_v0-1.zip" data-tooltipid="shared-file-name-tooltip">
|
57
|
+
CactEyeTelescope_v0-1.zip
|
58
|
+
</div>
|
59
|
+
</div> </div> </div> </div>
|
60
|
+
<div class="body shared_file" data-page-type="shared-file">
|
61
|
+
<div class="page">
|
62
|
+
<div id="top_notification" class="module top-notification" data-module="notifications">
|
63
|
+
</div>
|
64
|
+
<script type="text/x-template" id="jst-notification">
|
65
|
+
<div class="cntr notification_container fx notification_<%=type%> " data-type="<%=type%>" role="alert">
|
66
|
+
<div class="notification_outer fw">
|
67
|
+
<div class="notification_inner ram table pll prm">
|
68
|
+
<div class="notification_message table_cell txt_m lh16 pvm phn">
|
69
|
+
<strong class="notification_title">
|
70
|
+
<%=title%>
|
71
|
+
</strong>
|
72
|
+
<span class="notification_description <%=descriptionClass%> mrn mls">
|
73
|
+
<%=description%>
|
74
|
+
</span>
|
75
|
+
</div>
|
76
|
+
<div class="notification_actions table_cell txt_m">
|
77
|
+
<button class="notification_action mvs mhn <%=actionClass%>">
|
78
|
+
<%=actionText%>
|
79
|
+
</button>
|
80
|
+
<button class="notification_close ban mrn">
|
81
|
+
<div class="sprite_16x16_black_close"></div>
|
82
|
+
<div class="sprite_16x16_white_close"></div>
|
83
|
+
</button>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</div></script> <div id="box_confirmation" class="module cntr feature confirmation confirmation_v2 disable_selectable" data-module="legacy-confirmations" style="display: none;">
|
88
|
+
<div class="media">
|
89
|
+
<a id="box_confirmation_close" class="img_ext icon sprite_14x14_close mrn" href="#"></a>
|
90
|
+
<div class="bd">
|
91
|
+
<div id="box_confirmation_content"></div>
|
92
|
+
<div id="box_confirmation_description" class="pts" style="display:none;"></div>
|
93
|
+
</div>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
|
97
|
+
|
98
|
+
<div id="lightbox" class="dark_background" tabindex="-1" style="box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.4) inset;">
|
99
|
+
<div class="content_container curtain">
|
100
|
+
<div class="content">
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
<div class="module" data-module="preview-main" data-sharedname="89skim2e3simjwmuof4c" data-vanityname=""></div>
|
105
|
+
<script type="text/x-template" id="jst-preview_loading_module_template"><div class="preview_content_wrapper">
|
106
|
+
<span class="vertical-alignment-helper"></span><img src="https://e1.boxcdn.net/_assets/img/box/spinner_big-e70dos.gif" class="preview_error_icon">
|
107
|
+
</div>
|
108
|
+
</script> </div>
|
109
|
+
</div>
|
110
|
+
|
111
|
+
<script type="text/javascript"> var enable_shared_file_preview = '1';</script>
|
112
|
+
|
113
|
+
|
114
|
+
<script type="text/x-template" id="jst-tooltip_prototype"> <div id="tooltip_prototype" class="tooltip_wrapper">
|
115
|
+
<div class="tooltip">
|
116
|
+
<div class="inner">
|
117
|
+
<h4></h4>
|
118
|
+
<p></p>
|
119
|
+
</div>
|
120
|
+
<b class="beak"></b>
|
121
|
+
</div>
|
122
|
+
</div>
|
123
|
+
</script>
|
124
|
+
|
125
|
+
|
126
|
+
<script src="https://e2.boxcdn.net/_assets/js/section_templ_box_show_shared_file_lightbox-TTSumI.js"></script>
|
127
|
+
|
128
|
+
<script>
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
(function() {
|
133
|
+
|
134
|
+
window.initialConfig = {"userId":2,"userLogin":""} || {};
|
135
|
+
window.initialConfig.debug = 0;
|
136
|
+
window.initialConfig.browser_is_old = 1;
|
137
|
+
|
138
|
+
window.initialConfig.initialJSHashes = ["Z7FrE","LQtj7","MXAgT","ZemMA","WVErW","1og2L","814jR","17mWD","Vzz3y","dsMXg","PVUTd","iqwp9","moLuV","7eG3i","CJhaJ","Mw4Yi","LpTtj","ezipH","Dcoi1","uBNkr","D5Aw2","Giz2i","5gXUm","12TCV","X5sgw","jhYBA","AQ6GK","efsXP","upa2L","eBJ2B","Ca33W","dchdW","jZ7J4","JPUup","CTEG1","uqRrS","28GkN","Vx9Be","8dkN1","jmMHL","4vNPE","oQiJ9","dN4fQ","CL2Ge","GiJuK","oJGED","nWK8N","3SFpr","QPP9V","aqm5J","mt4XP","inboP","MeD7P","qW5xE","4KMsF"];
|
139
|
+
window.initialConfig.initialCSSHashes = ["UNQqU","gaaw7","kTotX","sS96u","R7FcL","2GqF2","F6BD3","QXN1V","NSUU1","8zaCt","JWAZW","F5PHY","x7AzE","xy3uc","6RxB9","LSPpz","yzArW","RwK6q","BAcwt","Xdd9J","QBXBf","QBXBf","TXxWj","cFkEX","T6Ye2"];
|
140
|
+
|
141
|
+
window.initialConfig.cookieDomain = '.box.com';
|
142
|
+
|
143
|
+
})();
|
144
|
+
|
145
|
+
|
146
|
+
window.onreadyList.push(function() {
|
147
|
+
Box.Application.broadcast('previewaction',
|
148
|
+
{
|
149
|
+
action: "show",
|
150
|
+
|
151
|
+
itemTypedID: "f_13860854981",
|
152
|
+
itemExtension: "zip",
|
153
|
+
|
154
|
+
allItems: []
|
155
|
+
}
|
156
|
+
);
|
157
|
+
});
|
158
|
+
|
159
|
+
</script>
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
</body>
|
165
|
+
</html>
|