wontomedia 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +1 -1
- data/app/controllers/connections_controller.rb +1 -1
- data/app/controllers/items_controller.rb +25 -3
- data/app/helpers/connections_helper.rb +3 -2
- data/app/helpers/format_helper.rb +5 -0
- data/app/helpers/items_helper.rb +32 -0
- data/app/views/items/_core_tasks.html.erb +2 -2
- data/app/views/items/_inline_add_popopen.html.erb +34 -0
- data/app/views/items/_inline_item_add_form.html.erb +0 -1
- data/app/views/items/show.html.erb +39 -22
- data/default-custom/public/stylesheets/wm.css +6 -1
- metadata +4 -3
data/VERSION.yml
CHANGED
@@ -261,7 +261,23 @@ class ItemsController < ApplicationController
|
|
261
261
|
# add blank-object connections to serve as basis for connection "quick add"
|
262
262
|
@intances_of_type_item_classes = {}
|
263
263
|
if class_item = @item.instance_of
|
264
|
-
find_applied_properties( class_item ).
|
264
|
+
find_applied_properties( class_item ).select do |property_item|
|
265
|
+
if (max_connection = Connection.first( :conditions => [
|
266
|
+
"subject_id = ? AND predicate_id = ?",
|
267
|
+
property_item.id, Item.find_by_name('max_uses_per_item').id ])) &&
|
268
|
+
max_connection.kind_of_obj == Connection::OBJECT_KIND_SCALAR &&
|
269
|
+
(max = max_connection.scalar_obj.to_i) > 0
|
270
|
+
|
271
|
+
count = Connection.all(
|
272
|
+
:conditions => [ "subject_id = ? AND predicate_id = ?",
|
273
|
+
@item.id, property_item.id ]).
|
274
|
+
length
|
275
|
+
|
276
|
+
count < max
|
277
|
+
else
|
278
|
+
true
|
279
|
+
end
|
280
|
+
end.each do |property_item|
|
265
281
|
if connection = Connection.first( :conditions =>
|
266
282
|
[ "subject_id = ? AND predicate_id = ?",
|
267
283
|
property_item.id, Item.find_by_name('has_scalar_object').id ])
|
@@ -348,11 +364,17 @@ class ItemsController < ApplicationController
|
|
348
364
|
unless used_as_obj.empty?
|
349
365
|
@connection_list << used_as_obj
|
350
366
|
end
|
351
|
-
|
352
|
-
|
353
367
|
unless used_as_pred.empty?
|
354
368
|
@connection_list << used_as_pred
|
355
369
|
end
|
370
|
+
|
371
|
+
|
372
|
+
@properties_of_url_type = {}
|
373
|
+
Connection.all( :conditions => [
|
374
|
+
"predicate_id = ? AND obj_id = ?",
|
375
|
+
Item.find_by_name('has_scalar_object').id,
|
376
|
+
Item.find_by_name('URL_Value').id
|
377
|
+
]).each {|con| @properties_of_url_type[con.subject_id] = true }
|
356
378
|
end
|
357
379
|
|
358
380
|
# GET /items/1/edit
|
@@ -34,7 +34,7 @@ module ConnectionsHelper
|
|
34
34
|
# the first occurrance of that link in the current view. An instance
|
35
35
|
# variable is created within the current view object to flag the
|
36
36
|
# generation of each type of link.
|
37
|
-
def generate_connection_links(con)
|
37
|
+
def generate_connection_links(con, after_delete = nil)
|
38
38
|
concat(
|
39
39
|
link_with_help_icon({
|
40
40
|
:destination => link_to( 'Show', connection_path(con) ),
|
@@ -53,10 +53,11 @@ module ConnectionsHelper
|
|
53
53
|
:which_help => 'ConnectionEdit' }) )
|
54
54
|
@edit_help_icon_used = true
|
55
55
|
|
56
|
+
goto_param = after_delete ? '?goto='+after_delete : ''
|
56
57
|
concat(
|
57
58
|
link_with_help_icon({
|
58
59
|
:destination => link_to(
|
59
|
-
'Delete', connection_path(con), :rel => 'nofollow',
|
60
|
+
'Delete', connection_path(con)+goto_param, :rel => 'nofollow',
|
60
61
|
:confirm => 'Are you sure?', :method => :delete ),
|
61
62
|
:already_generated => @delete_help_icon_used,
|
62
63
|
:help_alt => 'Help delete connection',
|
@@ -38,6 +38,11 @@ module FormatHelper
|
|
38
38
|
title_out
|
39
39
|
end
|
40
40
|
|
41
|
+
def last_word(text)
|
42
|
+
text =~ /([^\s]+)$/
|
43
|
+
$1
|
44
|
+
end
|
45
|
+
|
41
46
|
# This method is used to wrap long strings that don't contain spaces
|
42
47
|
# (which would allow the browser to wrap them), such as an
|
43
48
|
# <tt>Item.name</tt> string. The +len+ parameter is a length in
|
data/app/helpers/items_helper.rb
CHANGED
@@ -145,4 +145,36 @@ module ItemsHelper
|
|
145
145
|
options_for_select( option_array,
|
146
146
|
this_class_item.nil? ? "" : this_class_item.id )
|
147
147
|
end
|
148
|
+
|
149
|
+
def link_to_item_by_name(name, text=nil)
|
150
|
+
init_name_to_item_hash unless defined? @items_by_name
|
151
|
+
|
152
|
+
item = @items_by_name[name]
|
153
|
+
if item
|
154
|
+
return link_to( (text ? text : h(item.title)),
|
155
|
+
item_by_name_path(item.name) )
|
156
|
+
else
|
157
|
+
return '<i>[missing]</i>'
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def link_to_create_instance_of(name, text=nil)
|
162
|
+
init_name_to_item_hash unless defined? @items_by_name
|
163
|
+
|
164
|
+
item = @items_by_name[name]
|
165
|
+
if item
|
166
|
+
return link_to(
|
167
|
+
text ? text : "Add a new <b>#{h name}</b>",
|
168
|
+
new_item_path + "?class_item=" + item.id.to_s )
|
169
|
+
else
|
170
|
+
return '<i>[missing]</i>'
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def init_name_to_item_hash
|
175
|
+
@items_by_name = {}
|
176
|
+
@nouns.each do |item|
|
177
|
+
@items_by_name[item.name] = item
|
178
|
+
end
|
179
|
+
end
|
148
180
|
end
|
@@ -35,8 +35,8 @@
|
|
35
35
|
}
|
36
36
|
</style>
|
37
37
|
|
38
|
-
<div
|
39
|
-
<div id="add-class-instances-list"
|
38
|
+
<div>
|
39
|
+
<div id="add-class-instances-list">
|
40
40
|
<ul><%
|
41
41
|
spo_item_id = Item.find_by_name('sub_property_of').id
|
42
42
|
@class_list.select do |class_item|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%
|
2
|
+
# WontoMedia - a wontology web application
|
3
|
+
# Copyright (C) 2010 - Glen E. Ivey
|
4
|
+
# www.wontology.com
|
5
|
+
#
|
6
|
+
# This program is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License version
|
8
|
+
# 3 as published by the Free Software Foundation.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful, but
|
11
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
# Affero General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Affero General Public License
|
16
|
+
# along with this program in the file COPYING and/or LICENSE. If not,
|
17
|
+
# see "http://www.gnu.org/licenses/".
|
18
|
+
%>
|
19
|
+
|
20
|
+
<div id='inline-add-<%= id -%>-link'>
|
21
|
+
<div style='font-size: 70%;'>
|
22
|
+
<%= link_to_function 'Add new',
|
23
|
+
"$('inline-add-#{id}-link').style.display = 'none'; " +
|
24
|
+
"$('inline-add-#{id}-form').style.display = 'block';" +
|
25
|
+
"$('object-item-#{id}').style.listStyleType = 'circle';"
|
26
|
+
%>
|
27
|
+
<script type='text/javascript'>
|
28
|
+
$('object-item-<%= id -%>').style.listStyleType = 'none';
|
29
|
+
</script>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<div id='inline-add-<%= id -%>-form' style='display: none;'>
|
33
|
+
<%= yield %>
|
34
|
+
</div>
|
@@ -97,7 +97,7 @@
|
|
97
97
|
padding-left: 0;
|
98
98
|
}
|
99
99
|
.instance-list li {
|
100
|
-
color: #
|
100
|
+
color: #f4f420;
|
101
101
|
margin-right: 1.5em;
|
102
102
|
display: inline;
|
103
103
|
}
|
@@ -107,35 +107,40 @@
|
|
107
107
|
}
|
108
108
|
.instance-list li span {
|
109
109
|
color: black;
|
110
|
+
white-space: nowrap;
|
110
111
|
}
|
111
112
|
</style>
|
112
113
|
|
113
114
|
<% if @item.is_class? %>
|
115
|
+
<div style='margin-bottom: 5ex;'>
|
114
116
|
<h2 class="subheading"><%= h filter_parenthetical @item.title -%></h2>
|
115
|
-
<ul class='instance-list'>
|
117
|
+
<ul class='instance-list' style='font-size: 115%;'>
|
116
118
|
<%
|
117
119
|
# we know that all the connections where this item is the object are
|
118
120
|
# located in the last array within @connection_list. Search through
|
119
121
|
# it for all of the connections where 'is_instance_of' is the predicate
|
120
122
|
|
121
123
|
iio_item_id = nil
|
122
|
-
@connection_list[-1].
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
124
|
+
@connection_list[-1].select do |maybe_iio_connection|
|
125
|
+
unless iio_item_id
|
126
|
+
if @item_hash[maybe_iio_connection.predicate_id].
|
127
|
+
name == 'is_instance_of'
|
128
|
+
iio_item_id = maybe_iio_connection.predicate_id
|
129
|
+
end
|
127
130
|
end
|
128
|
-
end
|
129
131
|
|
130
|
-
|
132
|
+
iio_item_id == maybe_iio_connection.predicate_id
|
133
|
+
end.
|
134
|
+
map{|connection| @item_hash[connection.subject_id] }.
|
135
|
+
sort{|a,b| last_word(filter_parenthetical(a.title)) <=>
|
136
|
+
last_word(filter_parenthetical(b.title)) }.
|
137
|
+
each do |item| %>
|
131
138
|
<li><span>
|
132
|
-
<%= item
|
133
|
-
link_to (h item.name), item_by_name_path(item.name) %>
|
139
|
+
<%= link_to (h filter_parenthetical item.title), item_by_name_path(item.name) %>
|
134
140
|
</span></li>
|
135
|
-
|
136
|
-
<% end %>
|
141
|
+
<% end %>
|
137
142
|
</ul>
|
138
|
-
|
143
|
+
</div><% end %>
|
139
144
|
|
140
145
|
|
141
146
|
<h3 class="subheading">This Class' Relationships</h3>
|
@@ -153,6 +158,8 @@
|
|
153
158
|
@delete_help_icon_used = false
|
154
159
|
@add_scalar_help_icon_used = false
|
155
160
|
@add_item_help_icon_used = false
|
161
|
+
item_counter = 0
|
162
|
+
|
156
163
|
|
157
164
|
array_of_arrays_of_connections = @connection_list.to_enum
|
158
165
|
|
@@ -194,12 +201,15 @@
|
|
194
201
|
link_with_tooltip (h filter_parenthetical item.title ),
|
195
202
|
h( item.name ), item_by_name_path(item.name) %>
|
196
203
|
<ul style="list-style-type: circle;">
|
197
|
-
<% end
|
204
|
+
<% end
|
205
|
+
|
198
206
|
|
199
|
-
|
200
|
-
|
207
|
+
item_counter += 1
|
208
|
+
%> <li id='object-item-<%= item_counter -%>' >
|
209
|
+
<div class="floating-links">
|
201
210
|
<% if connection.id
|
202
|
-
generate_connection_links(connection
|
211
|
+
generate_connection_links(connection,
|
212
|
+
item_by_name_path(@item.name) )
|
203
213
|
elsif connection.obj_id
|
204
214
|
generate_inverse_link(@inverses_map[connection])
|
205
215
|
end %>
|
@@ -208,14 +218,17 @@
|
|
208
218
|
<% if connection.kind_of_obj == Connection::OBJECT_KIND_SCALAR &&
|
209
219
|
connection.scalar_obj.nil? %>
|
210
220
|
<%= render :partial => "inline_scalar_add_form",
|
211
|
-
:
|
221
|
+
:layout => "inline_add_popopen",
|
222
|
+
:locals => { :con => connection, :id => item_counter } %>
|
212
223
|
|
213
224
|
<% elsif connection.kind_of_obj == Connection::OBJECT_KIND_ITEM &&
|
214
225
|
connection.obj_id.nil? %>
|
215
226
|
<%= items = @intances_of_type_item_classes[connection.type_item]
|
216
227
|
items = Item.all unless !items.nil?
|
217
228
|
render :partial => "inline_item_add_form",
|
218
|
-
:
|
229
|
+
:layout => "inline_add_popopen",
|
230
|
+
:locals => { :con => connection, :items => items,
|
231
|
+
:id => item_counter } %>
|
219
232
|
|
220
233
|
<% elsif connection.kind_of_obj == Connection::OBJECT_KIND_ITEM %>
|
221
234
|
<%= item = @item_hash[connection.obj_id]
|
@@ -223,7 +236,10 @@
|
|
223
236
|
h( item.name ), item_by_name_path(item.name) %>
|
224
237
|
|
225
238
|
<% else %>
|
226
|
-
<%=
|
239
|
+
<%= @properties_of_url_type[connection.predicate_id] ?
|
240
|
+
link_to( h(connection.scalar_obj), connection.scalar_obj) :
|
241
|
+
h(connection.scalar_obj)
|
242
|
+
%>
|
227
243
|
<% end %>
|
228
244
|
</li>
|
229
245
|
|
@@ -277,7 +293,8 @@
|
|
277
293
|
<% end %>
|
278
294
|
</td><td style="font-size: 80%">
|
279
295
|
<% if connection.id
|
280
|
-
generate_connection_links(connection
|
296
|
+
generate_connection_links(connection,
|
297
|
+
item_by_name_path(@item.name) )
|
281
298
|
else
|
282
299
|
generate_inverse_link(@inverses_map[connection])
|
283
300
|
end %>
|
@@ -14,6 +14,7 @@
|
|
14
14
|
(logo fill, bullets)
|
15
15
|
subdued accent: light yellow #ffff60
|
16
16
|
(question-mark help icon)
|
17
|
+
accent text: dark yellow #f4f420
|
17
18
|
*/
|
18
19
|
|
19
20
|
|
@@ -167,7 +168,11 @@ hr {
|
|
167
168
|
padding-left: 1em;
|
168
169
|
text-indent: -1em;
|
169
170
|
}
|
170
|
-
|
171
|
+
.floating-links {
|
172
|
+
float: right;
|
173
|
+
font-size: 80%;
|
174
|
+
margin-right: 6em;
|
175
|
+
}
|
171
176
|
|
172
177
|
/* set apart stuff that is in development */
|
173
178
|
.unimplemented {
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 1
|
9
|
+
version: 0.2.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Glen E. Ivey
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-23 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- app/views/items/_content_examples.html.erb
|
71
71
|
- app/views/items/_core_tasks.html.erb
|
72
72
|
- app/views/items/_form_fields.html.erb
|
73
|
+
- app/views/items/_inline_add_popopen.html.erb
|
73
74
|
- app/views/items/_inline_item_add_form.html.erb
|
74
75
|
- app/views/items/_inline_scalar_add_form.html.erb
|
75
76
|
- app/views/items/_list_outbound_links.html.erb
|