ezii-os 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/Aptfile +2 -0
  3. data/Gemfile +3 -1
  4. data/Gemfile.lock +27 -0
  5. data/Procfile +2 -1
  6. data/app/assets/stylesheets/banal/brainstorms.scss +3 -0
  7. data/app/assets/stylesheets/banal/projects.scss +3 -0
  8. data/app/assets/stylesheets/tasks.scss +3 -0
  9. data/app/controllers/application_controller.rb +9 -0
  10. data/app/controllers/banal/brainstorms_controller.rb +74 -0
  11. data/app/controllers/banal/projects_controller.rb +74 -0
  12. data/app/controllers/directories_controller.rb +2 -2
  13. data/app/controllers/ezii_os_files_controller.rb +17 -0
  14. data/app/controllers/tasks_controller.rb +74 -0
  15. data/app/helpers/banal/brainstorms_helper.rb +2 -0
  16. data/app/helpers/banal/projects_helper.rb +2 -0
  17. data/app/helpers/tasks_helper.rb +2 -0
  18. data/app/models/banal/brainstorm.rb +2 -0
  19. data/app/models/banal/project.rb +4 -0
  20. data/app/models/banal.rb +5 -0
  21. data/app/models/ezii_os_path.rb +2 -1
  22. data/app/models/task.rb +2 -0
  23. data/app/views/application/_navbar.html.erb +20 -0
  24. data/app/views/banal/brainstorms/_banal_brainstorm.json.jbuilder +2 -0
  25. data/app/views/banal/brainstorms/_form.html.erb +47 -0
  26. data/app/views/banal/brainstorms/edit.html.erb +6 -0
  27. data/app/views/banal/brainstorms/index.html.erb +37 -0
  28. data/app/views/banal/brainstorms/index.json.jbuilder +1 -0
  29. data/app/views/banal/brainstorms/new.html.erb +5 -0
  30. data/app/views/banal/brainstorms/show.html.erb +34 -0
  31. data/app/views/banal/brainstorms/show.json.jbuilder +1 -0
  32. data/app/views/banal/projects/_banal_project.json.jbuilder +2 -0
  33. data/app/views/banal/projects/_form.html.erb +22 -0
  34. data/app/views/banal/projects/edit.html.erb +6 -0
  35. data/app/views/banal/projects/index.html.erb +27 -0
  36. data/app/views/banal/projects/index.json.jbuilder +1 -0
  37. data/app/views/banal/projects/new.html.erb +5 -0
  38. data/app/views/banal/projects/show.html.erb +9 -0
  39. data/app/views/banal/projects/show.json.jbuilder +1 -0
  40. data/app/views/directories/show.html.erb +8 -4
  41. data/app/views/ezii_os_files/_entity_visual_selection.html.erb +66 -0
  42. data/app/views/ezii_os_files/_wit_ai_widget.html.erb +80 -72
  43. data/app/views/layouts/application.html.erb +26 -197
  44. data/app/views/layouts/application_legacy.html.erb +212 -0
  45. data/app/views/tasks/_form.html.erb +37 -0
  46. data/app/views/tasks/_task.json.jbuilder +2 -0
  47. data/app/views/tasks/edit.html.erb +6 -0
  48. data/app/views/tasks/index.html.erb +33 -0
  49. data/app/views/tasks/index.json.jbuilder +1 -0
  50. data/app/views/tasks/new.html.erb +5 -0
  51. data/app/views/tasks/show.html.erb +12 -0
  52. data/app/views/tasks/show.json.jbuilder +1 -0
  53. data/config/routes.rb +7 -0
  54. data/db/development.sqlite3 +0 -0
  55. data/db/migrate/20190912113509_create_tasks.rb +12 -0
  56. data/db/migrate/20190912173649_create_banal_projects.rb +9 -0
  57. data/db/migrate/20190912173916_create_banal_brainstorms.rb +14 -0
  58. data/db/seeds.rb +7 -0
  59. data/ezii-os.gemspec +1 -1
  60. data/lib/tasks/rgeo_supports_geos.rake +6 -0
  61. data/lib/tasks/task.rake +5 -5
  62. data/log/development.log +8016 -0
  63. data/test/controllers/banal/brainstorms_controller_test.rb +48 -0
  64. data/test/controllers/banal/projects_controller_test.rb +48 -0
  65. data/test/controllers/tasks_controller_test.rb +48 -0
  66. data/test/fixtures/banal/brainstorms.yml +17 -0
  67. data/test/fixtures/banal/projects.yml +7 -0
  68. data/test/fixtures/tasks.yml +13 -0
  69. data/test/models/banal/brainstorm_test.rb +7 -0
  70. data/test/models/banal/project_test.rb +7 -0
  71. data/test/models/task_test.rb +7 -0
  72. data/test/system/banal/brainstorms_test.rb +53 -0
  73. data/test/system/banal/projects_test.rb +43 -0
  74. data/test/system/tasks_test.rb +49 -0
  75. metadata +58 -4
  76. data/app/assets/stylesheets/scaffolds.scss +0 -84
  77. data/ezii-os-0.0.0.0.1.gem +0 -0
  78. data/ezii-os-0.0.0.1.0.gem +0 -0
@@ -0,0 +1,6 @@
1
+ <h1>Editing Banal Project</h1>
2
+
3
+ <%= render 'form', banal_project: @banal_project %>
4
+
5
+ <%= link_to 'Show', @banal_project %> |
6
+ <%= link_to 'Back', banal_projects_path %>
@@ -0,0 +1,27 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <h1>Banal Projects</h1>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th>Name</th>
9
+ <th colspan="3"></th>
10
+ </tr>
11
+ </thead>
12
+
13
+ <tbody>
14
+ <% @banal_projects.each do |banal_project| %>
15
+ <tr>
16
+ <td><%= banal_project.name %></td>
17
+ <td><%= link_to 'Show', banal_project %></td>
18
+ <td><%= link_to 'Edit', edit_banal_project_path(banal_project) %></td>
19
+ <td><%= link_to 'Destroy', banal_project, method: :delete, data: { confirm: 'Are you sure?' } %></td>
20
+ </tr>
21
+ <% end %>
22
+ </tbody>
23
+ </table>
24
+
25
+ <br>
26
+
27
+ <%= link_to 'New Banal Project', new_banal_project_path %>
@@ -0,0 +1 @@
1
+ json.array! @banal_projects, partial: "banal_projects/banal_project", as: :banal_project
@@ -0,0 +1,5 @@
1
+ <h1>New Banal Project</h1>
2
+
3
+ <%= render 'form', banal_project: @banal_project %>
4
+
5
+ <%= link_to 'Back', banal_projects_path %>
@@ -0,0 +1,9 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <strong>Name:</strong>
5
+ <%= @banal_project.name %>
6
+ </p>
7
+
8
+ <%= link_to 'Edit', edit_banal_project_path(@banal_project) %> |
9
+ <%= link_to 'Back', banal_projects_path %>
@@ -0,0 +1 @@
1
+ json.partial! "banal_projects/banal_project", banal_project: @banal_project
@@ -1,6 +1,6 @@
1
- <ul>
1
+ <ul class="list-group">
2
2
  <% @paths.each do |path| %>
3
- <li>
3
+ <li class="list-group-item">
4
4
  <%= path %>
5
5
  <% if path.modified_at.present? %>
6
6
  was modified
@@ -11,13 +11,17 @@
11
11
  <% end %>
12
12
 
13
13
  <% if path.file? %>
14
- <%= link_to('Show INLINE (admin only)', ezii_os_file_path(path.global_path, admin: true)) %>
15
-
16
14
  <% case File.extname(path.file_system_path) %>
15
+ <% when '.shp' %>
16
+ <%= link_to 'View', ezii_os_file_path(path.global_path) %>
17
+ <% when '.xlsx' %>
18
+ <%= link_to 'View', ezii_os_file_path(path.global_path) %>
17
19
  <% when '.pdf' %>
18
20
  <%= link_to 'View', ezii_os_file_path(path.global_path) %>
19
21
  <% when '.jpg' %>
20
22
  <%= link_to 'View', ezii_os_file_path(path.global_path) %>
23
+ <% when '.erb' %>
24
+ <%= link_to('Show INLINE (admin only)', ezii_os_file_path(path.global_path, admin: true)) %>
21
25
  <% end %>
22
26
  <% else %>
23
27
  <%= link_to 'Change directory (cd)', directory_path(path.global_path) %>
@@ -0,0 +1,66 @@
1
+
2
+ <div id="entity-value-marking" style="display: none;">
3
+ <%=
4
+ File.read(file_path.global_path)
5
+
6
+ res = ""
7
+
8
+ Dir.mktmpdir do |dir|
9
+ Docsplit.extract_text([file_path.global_path], :ocr => false, :output => dir)
10
+
11
+ res = Dir.glob('*.txt', base: dir).map { |f| File.read(File.join(dir, f)) }
12
+ end
13
+
14
+ raw_text = res[0]
15
+
16
+ raw_text.each_char.with_index.map { |char,i| "<span data-index=#{i}>#{char}</span>" }.join('').gsub("\n", "<br />").html_safe
17
+ %>
18
+ </div>
19
+
20
+
21
+ <dl>
22
+
23
+ <p>
24
+ Specify an entity you want to annotate (either select previous or create a new one) and click the Search button.
25
+
26
+ Then you will see the raw text from the PDF and can select one occurence of the entity.
27
+
28
+ Just mark the text like you would mark text before copy & pasting something.
29
+
30
+ Once you confirm the text selection, the training data example will be automagically created for you.
31
+ </p>
32
+ <% 1.times do %>
33
+ <%= form_with model: WitAiParseModelExample.new do |f| %>
34
+ <%= f.hidden_field :parsable_resource, value: file_path %>
35
+ <%= f.hidden_field :parsable_resource_text, value: raw_text %>
36
+ <%= f.hidden_field :parsable_resource_entity_value_start_index %>
37
+ <%= f.hidden_field :parsable_resource_entity_value_end_index %>
38
+
39
+ <dt>
40
+ <b>Property name</b>
41
+ <i>Either select from previously used entity names or type to add a new one.</i>
42
+ <%= f.text_field :entity_name,
43
+ list: "entity_names"
44
+ %>
45
+
46
+ <datalist id="entity_names">
47
+ <% WitAiParseModelExample.pluck(:entity_name).uniq.each do |entity_name| %>
48
+ <option value="<%= entity_name %>">
49
+ <% end %>
50
+ </datalist>
51
+ </dt>
52
+ <dd>
53
+ <div style="display: none;">
54
+ Search for the property
55
+ <%= f.text_field :parsable_resource_query %>
56
+ </div>
57
+
58
+ <div style="display: none;">
59
+ What is the correct value for this file?
60
+ <%= f.text_field :entity_value %>
61
+ </div>
62
+ </dd>
63
+ <%= f.submit "Search" %>
64
+ <% end %>
65
+ <% end %>
66
+ </dl>
@@ -7,8 +7,8 @@
7
7
 
8
8
  <% if params[:admin].present? %>
9
9
  <textarea
10
- onclick="$.post('/cookie_changes', {cookie_change: {identifier: 'erb_dummy_data', value: event.target.value}}, (data, status)=> { this.value = data;alert(this.value); });">
11
- @code_links = []
10
+ onclick="$.post('/cookie_changes', {cookie_change: {identifier: 'erb_dummy_data', value: event.target.value}}, (data, status)=> { alert(this.value); });">
11
+ <%= cookies[:erb_dummy_data] %>
12
12
  </textarea>
13
13
 
14
14
  <pre><code>
@@ -17,6 +17,83 @@
17
17
  <% end %>
18
18
 
19
19
  <% case File.extname(file_path.global_path) %>
20
+ <% when '.shp' %>
21
+ <%
22
+ require 'rgeo/shapefile'
23
+ str = ""
24
+ leafletScript_geojson_features = []
25
+ str += RGeo::Shapefile::Reader.open(file_path.global_path) do |file|
26
+ str += "File contains #{file.num_records} records."
27
+ file.each do |record|
28
+
29
+ geojson_ruby_hash = RGeo::GeoJSON.encode(record.geometry)
30
+ geojson_ruby_hash["coordinates"][0][0].map! do |coordinates|
31
+ [coordinates[0] / 100000, coordinates[1] / 100000]
32
+ end
33
+
34
+ leafletScript_geojson_features.push("L.geoJSON(#{geojson_ruby_hash.to_json}).addTo(map);")
35
+ str += "Record number #{record.index}:"
36
+ str += " Geometry: #{record.geometry.as_text}"
37
+ str += " Attributes: #{record.attributes.inspect}"
38
+ end
39
+ file.rewind
40
+ record = file.next
41
+ str += "First record geometry was: #{record.geometry.as_text}"
42
+ end
43
+ str
44
+
45
+
46
+
47
+ leafletScript = """
48
+ setTimeout(function() {
49
+ var map = L.map('map', { center: [37.0, 45.0], zoom: 0 });
50
+ #{leafletScript_geojson_features.join("\n")}
51
+ }, 1500)
52
+ """
53
+
54
+ %>
55
+ <div id="map" style="height: 200px"></div>
56
+
57
+ <script><%= leafletScript.html_safe %></script>
58
+
59
+ <% when '.xlsx' %>
60
+ <%
61
+ b = Workbook::Book.open(file_path.global_path)
62
+ %>
63
+
64
+ <h3><%= b.title %></h3>
65
+ <!--
66
+ <ul class="list-group">
67
+ <% b.each do |sheet| %>
68
+ <li class="list-group-item">
69
+ <a href="#"><%= sheet.name %></a>
70
+ </li>
71
+ <% end %>
72
+ </ul>
73
+ -->
74
+
75
+ <div class="accordion" id="accordionXLSX">
76
+ <% b.each.with_index do |sheet, i| %>
77
+ <div class="card">
78
+ <div class="card-header" id="heading<%= i %>">
79
+ <h2 class="mb-0">
80
+ <button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapse<%= i %>" aria-expanded="false" aria-controls="collapse<%= i %>">
81
+ <%= sheet.name %>
82
+ </button>
83
+ </h2>
84
+ </div>
85
+ <div id="collapse<%= i %>" class="collapse" aria-labelledby="heading<%= i %>" data-parent="#accordionXLSX">
86
+ <div class="card-body">
87
+ <pre><code>
88
+ <%= sheet.table.to_html.html_safe %>
89
+ </pre></code>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ <% end %>
94
+ </div>
95
+
96
+
20
97
  <% when '.erb' %>
21
98
  <% if params[:admin].present? %>
22
99
  <h3>ERB output</h3>
@@ -66,7 +143,7 @@
66
143
  # characters, it's just a MUST, that they don't appear in the string or
67
144
  # ar properly escaped if they appear in the string
68
145
 
69
- dummy_binding = Object.new.instance_exec { eval(erb_dummy_data); notice = "test"; binding };
146
+ dummy_binding = Object.new.instance_eval(erb_dummy_data + ';binding');
70
147
  template = ::ERB.new @last_file_input
71
148
  template.result(dummy_binding).html_safe
72
149
 
@@ -81,76 +158,7 @@
81
158
  </pre>
82
159
  <% end %>
83
160
  <% when '.pdf' %>
84
- <br />
85
-
86
161
  <iframe src="data:application/pdf;base64,<%= Base64.encode64(open(file_path.global_path) { |io| io.read }) %>" width="600" height="780" style="border: none;"> </iframe>
87
-
88
- # TODO: should be a partial
89
- <div id="entity-value-marking" style="display: none;">
90
- <%=
91
- File.read(file_path.global_path)
92
-
93
- res = ""
94
-
95
- Dir.mktmpdir do |dir|
96
- Docsplit.extract_text([file_path.global_path], :ocr => false, :output => dir)
97
-
98
- res = Dir.glob('*.txt', base: dir).map { |f| File.read(File.join(dir, f)) }
99
- end
100
-
101
- raw_text = res[0]
102
-
103
- raw_text.each_char.with_index.map { |char,i| "<span data-index=#{i}>#{char}</span>" }.join('').gsub("\n", "<br />").html_safe
104
- %>
105
- </div>
106
-
107
-
108
- <dl>
109
-
110
- <p>
111
- Specify an entity you want to annotate (either select previous or create a new one) and click the Search button.
112
-
113
- Then you will see the raw text from the PDF and can select one occurence of the entity.
114
-
115
- Just mark the text like you would mark text before copy & pasting something.
116
-
117
- Once you confirm the text selection, the training data example will be automagically created for you.
118
- </p>
119
- <% 1.times do %>
120
- <%= form_with model: WitAiParseModelExample.new do |f| %>
121
- <%= f.hidden_field :parsable_resource, value: file_path %>
122
- <%= f.hidden_field :parsable_resource_text, value: raw_text %>
123
- <%= f.hidden_field :parsable_resource_entity_value_start_index %>
124
- <%= f.hidden_field :parsable_resource_entity_value_end_index %>
125
-
126
- <dt>
127
- <b>Property name</b>
128
- <i>Either select from previously used entity names or type to add a new one.</i>
129
- <%= f.text_field :entity_name,
130
- list: "entity_names"
131
- %>
132
-
133
- <datalist id="entity_names">
134
- <% WitAiParseModelExample.pluck(:entity_name).uniq.each do |entity_name| %>
135
- <option value="<%= entity_name %>">
136
- <% end %>
137
- </datalist>
138
- </dt>
139
- <dd>
140
- <div style="display: none;">
141
- Search for the property
142
- <%= f.text_field :parsable_resource_query %>
143
- </div>
144
-
145
- <div style="display: none;">
146
- What is the correct value for this file?
147
- <%= f.text_field :entity_value %>
148
- </div>
149
- </dd>
150
- <%= f.submit "Search" %>
151
- <% end %>
152
- <% end %>
153
- </dl>
154
162
  <% when '.jpg' %>
155
163
  <img
156
164
  usemap="#planetmap"
@@ -1,212 +1,41 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>BanalTodo1</title>
4
+ <title>Banal Data</title>
5
5
  <%= csrf_meta_tags %>
6
6
  <%= csp_meta_tag %>
7
-
7
+
8
8
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9
- <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
9
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
10
+ <link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css" />
10
11
  </head>
11
- <% if Time.now.strftime('%M').to_i < 5 %>
12
-
13
- <% if cookies['level'].to_s == '2' || (ENV['ALLOWED_LISTED_FOR_SECOND_LEVEL'] || '').split(',').include?(request.remote_ip) %>
14
-
15
12
 
16
13
  <body>
17
- <div class="content">
18
- <header>
19
- <h5 style="background-color: green; color: white;">BE CONSERVATIVELY SECURE</h5>
20
- <h4 style="background-color: yellow; color: black">FIRST SIMULATE, THEN DEPLOY A PASSIVE (EXTREMELY PASSIVE) SYSTEM TO REAL WORLD, FINALLY MAKE IT ACTIVE IN A <b>SECURE</b> WAY</h4>
21
- <h3 style="background-color: red; color: white">If you don't know what this is please only take the survey if you want to help and then leave this site again, thanks.</h3>
22
- <script>(function(t,e,s,o){var n,a,c;t.SMCX=t.SMCX||[],e.getElementById(o)||(n=e.getElementsByTagName(s),a=n[n.length-1],c=e.createElement(s),c.type="text/javascript",c.async=!0,c.id=o,c.src=["https:"===location.protocol?"https://":"http://","widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd1xa5A9y8yPlVJPl45ILXuqWKd1oAWzR0gaU37YaYtdR.js"].join(""),a.parentNode.insertBefore(c,a))})(window,document,"script","smcx-sdk");</script>
14
+ <header style="margin-bottom: 100px;">
15
+ <%= render 'navbar' %>
16
+ </header>
23
17
 
24
- <h2 onclick="window.location = '/searches'">Search</h2>
25
- <h1><a href="/">eZii Operating System Start</a></h1>
26
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
27
-
28
- </header>
29
-
30
- <main>
31
- <%= yield %>
32
- </main>
33
-
34
-
35
- <script>
36
- Turbolinks.__visit = Turbolinks.visit
37
- Turbolinks.visit = false;
38
- </script>
39
- <textarea
40
- id="story" name="story"
41
- rows="5" cols="33"
42
-
43
- onClick="if(!confirm()) { return; };$.post('/code_change_requests', {code_change_request: {text: this.value}}, (data, status)=> { this.value = data;alert(this.value) });"
44
- >
45
- </textarea>
46
-
47
- <div>
48
- <button style="background-color: blue; color: white;" onclick="alert('Button 1')">Button 1</button>
49
- <button style="background-color: black; color: white;" onclick="alert('Button 2')">Button 2</button>
50
- <button style="background-color: yellow" onclick="alert('Button 3')">Button 3</button>
51
- <button style="background-color: pink; color: red;" onclick="alert('Button 4')">Button 4</button>
52
- </div>
53
- <%- if ENV['HEROKU_FEATURE_SWITCH_GLITCH_APP_LAYOUT_EMBED'] == '1' %>
54
- <!-- Copy and Paste Me -->
55
- <!-- Copy and Paste Me -->
56
- <div class="glitch-embed-wrap" style="height: 420px; width: 100%;">
57
- <iframe
58
- src="https://glitch.com/embed/#!/embed/like-bladder?path=views/index.html&previewSize=100"
59
- title="like-bladder on Glitch"
60
- allow="geolocation; microphone; camera; midi; vr; encrypted-media"
61
- style="height: 100%; width: 100%; border: 0;">
62
- </iframe>
63
- </div>
64
- <% end %>
65
- </br>
66
- </br>
67
- </br>
68
- </br>
69
- </br>
70
-
71
- </br>
72
- </br>
73
- </br>
74
- </br>
75
- </br>
76
- </br>
77
- </br>
78
- </br>
79
- </br>
80
- </br>
81
- </br>
82
- </br>
83
- </br>
84
- </br>
85
- </br>
86
- <footer>
87
- <img src="data:image/png;base64,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" />
88
-
89
- <script
90
- src="https://code.jquery.com/jquery-3.4.1.js"
91
- integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
92
- crossorigin="anonymous"></script>
18
+ <main class="container" role="main">
19
+ <br />
93
20
 
21
+ <%= yield %>
94
22
 
95
- <!-- <span class='quora-content-embed' data-name='When-will-there-be-drones-that-taser-people-instead-of-killing-them-non-lethal-drone-eliminations/answer/David-Hambling'>Read <a class='quora-content-link' data-width='560' data-height='260' href='https://www.quora.com/When-will-there-be-drones-that-taser-people-instead-of-killing-them-non-lethal-drone-eliminations/answer/David-Hambling' data-type='answer' data-id='163921462' data-key='ee9e46a83d2467afb2fb815b9424ade1' load-full-answer='False' data-embed='bzrcecw'><a href='https://www.quora.com/David-Hambling'>David Hambling</a>&#039;s <a href='/When-will-there-be-drones-that-taser-people-instead-of-killing-them-non-lethal-drone-eliminations#ans163921462'>answer</a> to <a href='/When-will-there-be-drones-that-taser-people-instead-of-killing-them-non-lethal-drone-eliminations' ref='canonical'><span class="rendered_qtext">When will there be drones that taser people instead of killing them (non-lethal drone eliminations)?</span></a></a> on <a href='https://www.quora.com'>Quora</a><script type="text/javascript" src="https://www.quora.com/widgets/content"></script></span> -->
23
+ <br />
24
+ <br />
25
+ <br />
26
+ <br />
27
+ <br />
28
+ <br />
96
29
 
97
- <span
98
- onclick="
99
- alert('Do u want to work? Write an email to manu@korfmann.info and ask for our Discord')
100
- fetch('/code_change_requests/1')
101
- "
102
- class="pickaxe" style="font-size: 10em;">⛏️
103
- </span>
104
-
105
- <span
106
- onclick="alert('Do u want to work? Write an email to manu@korfmann.info and ask for our Discord')
107
- fetch('/code_change_requests/1')"
108
- >
109
- By using this website, you agree to the following: We show you your ip
110
- </span>
111
-
112
- <span
113
- style="background-color: red"
114
- onclick="confirm('Do you want peace? Peaceeful eliminations are a key, non-lethal weapons, like a drone that tasers, but without 80000 volt which could kill a being.');fetch('/code_change_requests/1');">
115
- Do you want to get to the next level?
116
- </span>
117
-
118
- <div>
119
- <span class="level-slider" style="font-size: 10em;">
120
- 🎚️<%= cookies['level'] %>
121
- </span>
122
-
123
- <span>
124
- <input
125
- type="range"
126
- name="level"
127
- min="0"
128
- max="10"
129
- onchange="$.post('/cookie_changes', {cookie_change: {identifier: 'level', value: event.target.value}}, (data, status)=> { this.value = data;alert(this.value); });"
130
- >
131
- </span>
132
- </div>
133
- <%# RUSSIAN DOLL %>
134
- YOUR IP
135
-
136
- <%= request.remote_ip %>
137
- <span class='yellow' style="background-color: yellow">
138
- <% case cookies['level'] %>
139
- <% when nil %>
140
- Please select a level
141
- <% when '1' %>
142
- <p> Landing Page (glitch + discord) </p>
143
- <% when '2' %>
144
- <p>eZii OS</p>
145
- <% when '3' %>
146
- <p>GAM download (github.com/ezii123/gam)</p>
147
- <% when '4' %>
148
- <p>DEVIL IS IMPOSSIBLE TO UNDERSTAND</p>
149
-
150
- <span>BRAINFREEZER VIA NEURALINK</span>
151
-
152
- <span>Understanding ideas is often simple, translate it to your native language</span>
153
- <% when '5' %>
154
- <p>GAM in browser via artichoke</p>
155
- <% when '6' %>
156
- <p>GOD IS IMPOSSIBLE TO UNDERSTAND</p>
157
- <% when '7' %>
158
- <p>LIFE IS IMPOSSIBLE TO UNDERSTAND</p>
159
- <% when '8' %>
160
- <p>IMPOSSIBLE BURGER</p>
161
- <% when '9' %>
162
- <p>MAC DONALDS</p>
163
- <% when '10' %>
164
- <p>eZii</p>
165
- <% end %>
166
- </span>
167
-
168
-
169
-
170
- <!-- I wish i could render the following in the web browser somehow and then display it with an erb conditional -->
171
- <!-- Maybe it could work using artichoke -->
172
- <!--
173
- <widgetbot
174
- server="<%= ENV['DISCORD_SERVER_ID'] %>"
175
- channel="<%= ENV['DISCORD_CHANNEL_ID'] %>"
176
- width="800"
177
- height="600"
178
- shard="https://disweb.deploys.io"
179
- >
180
- </widgetbot>
181
- <script src="https://cdn.jsdelivr.net/npm/@widgetbot/html-embed"></script>
182
- -->
183
- </footer>
30
+ </main>
31
+ </body>
184
32
 
185
- <% elsif false %>
186
- <div class="glitch-embed-wrap" style="height: 420px; width: 100%;">
187
- <iframe
188
- src="https://glitch.com/embed/#!/embed/like-bladder?path=views/index.html&previewSize=100"
189
- title="like-bladder on Glitch"
190
- allow="geolocation; microphone; camera; midi; vr; encrypted-media"
191
- style="height: 100%; width: 100%; border: 0;">
192
- </iframe>
193
- </div>
33
+ <foot>
34
+ <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
35
+ <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
36
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
37
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
38
+ <script src="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"></script>
39
+ </foot>
40
+ </html>
194
41
 
195
- <widgetbot
196
- server="<%= ENV['DISCORD_SERVER_ID'] %>"
197
- channel="<%= ENV['DISCORD_CHANNEL_ID'] %>"
198
- width="800"
199
- height="600"
200
- shard="https://disweb.deploys.io"
201
- >
202
- </widgetbot>
203
- <script src="https://cdn.jsdelivr.net/npm/@widgetbot/html-embed"></script>
204
- <% end %>
205
- </div>
206
- </body>
207
- <% else %>
208
- <body>
209
- <h1>Get back to work</h1>
210
- </body>
211
- <% end %>
212
- </html>