wontomedia 1.0.0 → 1.0.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/Rakefile CHANGED
@@ -72,7 +72,11 @@ ENDOSTRING
72
72
  # log pkg tmp
73
73
  # aren't included because developers are expected to pull from Git
74
74
 
75
- s.add_dependency 'rails', '~>2.2'
75
+ s.required_ruby_version = '~>1.8.7'
76
+ s.add_dependency 'rake', '~>0.8.7'
77
+ s.add_dependency 'rails', '~>2.3.5'
78
+ # can't run w/o a database interface gem, but don't want to specify
79
+ # a 'mysql' dependency in case we're being used with something else
76
80
  end
77
81
 
78
82
  task :build => :gemspec # don't build a gem from a stale spec
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 0
4
- :patch: 0
4
+ :patch: 1
@@ -196,7 +196,7 @@ PLAIN_XML
196
196
  Item.all.each do |item|
197
197
  result_text += " <url>\n"
198
198
  result_text += " <loc>#{item_by_name_url(item.name)}</loc>\n"
199
- result_text += " <lastmod>#{item.updated_at.to_s(:db)}</lastmod>\n"
199
+ result_text += " <lastmod>#{item.updated_at.to_s(:w3c) }</lastmod>\n"
200
200
  result_text += " <changefreq>monthly</changefreq>\n"
201
201
  priority = (item.flags & Item::DATA_IS_UNALTERABLE)==0 ? '1.0' : '0.1'
202
202
  result_text += " <priority>#{priority}</priority>\n"
@@ -207,7 +207,7 @@ PLAIN_XML
207
207
  result_text += " <url>\n"
208
208
  result_text += " <loc>#{connection_url(connection)}</loc>\n"
209
209
  result_text += " <lastmod>" +
210
- "#{connection.updated_at.to_s(:db)}</lastmod>\n"
210
+ "#{connection.updated_at.to_s(:w3c)}</lastmod>\n"
211
211
  result_text += " <changefreq>monthly</changefreq>\n"
212
212
  priority = (connection.flags & Connection::DATA_IS_UNALTERABLE)==0 ?
213
213
  '0.5' : '0.1'
@@ -102,6 +102,7 @@ class ItemsController < ApplicationController
102
102
  params[:item].delete :sti_type # don't mass-assign protected blah, blah
103
103
 
104
104
  @item = ItemHelper.new_typed_item(type_string, params[:item])
105
+ @example = get_an_example_of @item
105
106
  @popup_flag = true if params[:popup_flag]
106
107
 
107
108
  if @item.nil?
@@ -564,7 +565,28 @@ private
564
565
  class_to_item_map
565
566
  end
566
567
 
568
+ def get_an_example_of( proto_item )
569
+ if proto_item && proto_item.class_item_id
570
+ connections_to_instances = Connection.all( :conditions => [
571
+ "(flags & #{Connection::DATA_IS_UNALTERABLE}) = 0 AND " +
572
+ "predicate_id = ? AND obj_id = ?",
573
+ Item.find_by_name('is_instance_of'), proto_item.class_item_id ] )
574
+
575
+ # TODO: replace with .choice when we migrate to Ruby 1.9
576
+ len = connections_to_instances.length
577
+ connection = connections_to_instances[ rand(len) ]
578
+ if connection
579
+ return Item.find_by_id connection.subject_id
580
+ end
581
+ end
582
+
583
+ item = Item.last( :conditions => [
584
+ "(flags & #{Item::DATA_IS_UNALTERABLE}) = 0" ])
585
+ return item ? item : Item.last() # make sure an empty install still works
586
+ end
587
+
567
588
  def setup_for_form
589
+ @example = get_an_example_of @item
568
590
  @class_list = all_class_items
569
591
  @class_to_item_map = map_of_item_types_for_class_items @class_list
570
592
  @this_is_non_information_page = true
@@ -18,11 +18,15 @@
18
18
  %>
19
19
 
20
20
 
21
- <p class="inputpara">
22
- <%= f.label :title %>
21
+ <p class="inputpara" style="position: relative;">
22
+ <span style="font-size: 120%; font-weight: bold;"><%=
23
+ f.label :title -%></span>
23
24
  <%= popup_help_icon "Help for title", "Help:Popup/ItemTitle" %>
24
25
  <%= image_tag "blank_error_icon.png", :id=>"title_error_icon", :alt=>"",
25
26
  :size=>"16x16" -%>
27
+ <span style="position: absolute; left: 10em; top: 0.3ex; height: 1ex; white-space: nowrap;">
28
+ <i>for example:</i>"<%= h @example.title -%>"
29
+ </span>
26
30
  <br />
27
31
  <%= f.text_field :title, :tabindex => "120", :style => "width: 75%;" %>
28
32
  </p><p class="directions">
@@ -34,13 +38,16 @@
34
38
  in small spaces.
35
39
  </p>
36
40
 
37
- <p class="inputpara">
38
- <%= f.label :name %>
41
+ <p class="inputpara" style="position: relative;">
42
+ <span style="font-size: 120%; font-weight: bold;"><%= f.label :name %></span>
39
43
  <%= popup_help_icon "Help for name", "Help:Popup/ItemName" %>
40
44
  <%= image_tag "blank_error_icon.png", :id=>"name_error_icon", :alt=>"",
41
45
  :size=>"16x16" %>
42
46
  <%= image_tag "blank_status_icon.png", :id=>"name_status_icon", :alt=>"",
43
47
  :size=>"32x16" %>
48
+ <span style="position: absolute; left: 10em; top: 0.3ex;">
49
+ <i>for example:</i>"<%= h @example.name -%>"
50
+ </span>
44
51
  <br />
45
52
  <%= f.text_field :name, :tabindex => "130", :style => "width: 55%;" %>
46
53
  </p><p class="directions">
@@ -54,7 +61,8 @@
54
61
  </p>
55
62
 
56
63
  <p class="inputpara">
57
- <%= f.label :description %>
64
+ <span style="font-size: 120%; font-weight: bold;"><%=
65
+ f.label :description -%></span>
58
66
  <%= popup_help_icon "Help for description", "Help:Popup/ItemDescription" %>
59
67
  <%= image_tag "blank_error_icon.png", :id=>"description_error_icon", :alt=>"",
60
68
  :size=>"16x16" %>
@@ -17,6 +17,6 @@
17
17
  # see "http://www.gnu.org/licenses/".
18
18
  %>
19
19
 
20
- <div id="block-help">
20
+ <div id="block-help"><span>
21
21
  <%= link_to 'Help', WontoMedia.help_url_prefix + "Help:Main_Page" %>
22
- </div>
22
+ </span></div>
@@ -18,24 +18,33 @@
18
18
  %>
19
19
 
20
20
 
21
- <% if WontoMedia.search.google_site_search and
22
- WontoMedia.search.publisher_id and
23
- WontoMedia.search.search_engine %>
24
- <div id="block-search">
25
- <form action="/w/search" id="cse-search-box">
26
- <div>
27
- <input type="hidden" name="cx"
28
- value="<%=
29
- WontoMedia.search.publisher_id + ':' +
30
- WontoMedia.search.search_engine -%>" />
31
- <input type="hidden" name="cof" value="FORID:10" />
32
- <input type="hidden" name="ie" value="ISO-8859-1" />
33
- <input type="text" name="q" size="20" />
34
- <input type="submit" name="sa" value="Search" />
21
+ <% unless RAILS_ENV == 'test'
22
+ if WontoMedia.search.google_site_search and
23
+ WontoMedia.search.publisher_id and
24
+ WontoMedia.search.search_engine %>
25
+ <div id="block-search"></div>
26
+ <script>
27
+ addToDivsToMove('block-search');
28
+ </script>
29
+
30
+ <% content_for :last_bottom_page_js do %>
31
+ <div id="block-search-content" style="display: none;">
32
+ <form action="/w/search" id="cse-search-box">
33
+ <div>
34
+ <input type="hidden" name="cx"
35
+ value="<%=
36
+ WontoMedia.search.publisher_id + ':' +
37
+ WontoMedia.search.search_engine -%>" />
38
+ <input type="hidden" name="cof" value="FORID:10" />
39
+ <input type="hidden" name="ie" value="ISO-8859-1" />
40
+ <input type="text" name="q" size="20" />
41
+ <input type="submit" name="sa" value="Search" />
42
+ </div>
43
+ </form>
44
+ <script type="text/javascript"
45
+ src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"
46
+ ></script>
35
47
  </div>
36
- </form>
37
- <script type="text/javascript"
38
- src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"
39
- ></script>
40
- </div>
48
+ <% end %>
49
+ <% end %>
41
50
  <% end %>
@@ -51,6 +51,16 @@
51
51
  <% else %>
52
52
  <%= javascript_include_merged :top %>
53
53
  <% end %>
54
+ <% unless RAILS_ENV == 'test'
55
+ if WontoMedia.analytics and
56
+ WontoMedia.analytics.google and
57
+ WontoMedia.analytics.google.profile_id %>
58
+ <script type="text/javascript">
59
+ window.google_analytics_uacct =
60
+ "<%= WontoMedia.analytics.google.profile_id -%>";
61
+ </script>
62
+ <% end
63
+ end %>
54
64
 
55
65
  <%= yield :head %>
56
66
  </head>
@@ -0,0 +1,24 @@
1
+ # WontoMedia - a wontology web application
2
+ # Copyright (C) 2010 - Glen E. Ivey
3
+ # www.wontology.com
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License version
7
+ # 3 as published by the Free Software Foundation.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU Affero General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Affero General Public License
15
+ # along with this program in the file COPYING and/or LICENSE. If not,
16
+ # see <http://www.gnu.org/licenses/>.
17
+
18
+
19
+ # allow us to convert to "W3C Datetime" format
20
+ # http://www.w3.org/TR/NOTE-datetime
21
+ Time::DATE_FORMATS[:w3c] =
22
+ lambda { |date| date.strftime( "%Y-%m-%dT%H:%M:%SZ" ) }
23
+
24
+
@@ -260,7 +260,9 @@ p + table { margin-bottom: 1.5em; }
260
260
  border-style: none solid solid;
261
261
  background: url("/images/transparent_ltblue_background.png") repeat;
262
262
  padding: 0 0.3em;
263
- height: 2.7ex;
263
+ height: 5.8ex;
264
+ }
265
+ #block-help span {
264
266
  font-size: 200%;
265
267
  }
266
268
 
data/doc/gemlist.txt ADDED
@@ -0,0 +1,42 @@
1
+ The following are the gems installed the last time a full regression
2
+ test and exercise of the complete WontoMedia installation process was
3
+ conducted.
4
+
5
+ Note: there seems to be some incompatibility with json-1.2.3, but
6
+ otherwise all gems are the latest as of build time.
7
+
8
+
9
+
10
+ actionmailer (2.3.5)
11
+ actionpack (2.3.5)
12
+ activerecord (2.3.5)
13
+ activeresource (2.3.5)
14
+ activesupport (2.3.5)
15
+ builder (2.1.2)
16
+ cgi_multipart_eof_fix (2.5.0)
17
+ cucumber (0.6.3)
18
+ cucumber-rails (0.3.0)
19
+ daemons (1.0.10)
20
+ diff-lcs (1.1.2)
21
+ fastthread (1.0.7)
22
+ gem_plugin (0.2.3)
23
+ git (1.2.5)
24
+ json_pure (1.2.2)
25
+ migration_test_helper (1.3.3)
26
+ mongrel (1.1.5)
27
+ mysql (2.8.1)
28
+ nokogiri (1.4.1)
29
+ polyglot (0.3.0)
30
+ rack (1.0.1)
31
+ rack-test (0.5.3)
32
+ rails (2.3.5)
33
+ rake (0.8.7)
34
+ rspec (1.3.0)
35
+ rspec-rails (1.3.2)
36
+ rubyforge (2.0.4)
37
+ selenium-client (1.2.18)
38
+ technicalpickles-jeweler (1.2.1)
39
+ term-ansicolor (1.0.5)
40
+ treetop (1.4.4)
41
+ webrat (0.7.0)
42
+ ZenTest (4.2.1)
@@ -145,7 +145,7 @@ function plumbEventHandlersToItemCreationElements(customizationSelector){
145
145
  checkFieldLength(b, indexTitle);
146
146
  maybeClearIcon('title');
147
147
  if (creatingNewItem){
148
- var emptyToNotEmpty = generateFromTitle(b, c);
148
+ var emptyToNotEmpty = generateFromTitle(b, c, checkName);
149
149
  if (emptyToNotEmpty){
150
150
  itemFormErrors["item_name"] = false;
151
151
  $('name_required').className = "";
@@ -82,6 +82,9 @@ function itemCreatePopup_Cancel(){
82
82
  }
83
83
 
84
84
  function itemCreatePopup_MakeSelection(){
85
+ // close Modalbox
86
+ Modalbox.hide();
87
+
85
88
  if (!($('MB_content').innerHTML.match(
86
89
  /Item\s+was\s+successfully\s+created/i))){
87
90
  itemSelectElementHavingNewItemAdded.value =
@@ -108,6 +111,28 @@ function itemCreatePopup_MakeSelection(){
108
111
 
109
112
  // make new item the selection in the operation-originating <select> control
110
113
  itemSelectElementHavingNewItemAdded.value = idNo;
114
+
115
+ // kludge for Safari: WebKit (as-of Safari 4.0.4 3/2010) doesn't redisplay
116
+ // a <select> control when it's value is manipulated from JavaScript, even
117
+ // though the form will sumit correctly. So, to force a redisplay, we
118
+ // remove the DOM node for the alread-set select control from the page, and
119
+ // then put it back. Complexity arises from the fact it isn't the only
120
+ // element in its container; final "appendChild" is backup in case the
121
+ // complexity fails somehow.
122
+ var ourSelectControl = itemSelectElementHavingNewItemAdded;
123
+ var parent = ourSelectControl.parentNode;
124
+ var ourFollowingSibling = null;
125
+ for (var c=0; c < parent.childNodes.length; c++)
126
+ if (parent.childNodes[c] == ourSelectControl){
127
+ ourFollowingSibling = parent.childNodes[c+1]
128
+ break;
129
+ }
130
+ parent.removeChild(ourSelectControl);
131
+ if (ourFollowingSibling)
132
+ parent.insertBefore(ourSelectControl, ourFollowingSibling);
133
+ else
134
+ parent.appendChild(ourSelectControl);
135
+
111
136
  itemSelectElementHavingNewItemAdded.simulate('change');
112
137
  // Note: we're being lazy. Just setting the value will cause an Ajax
113
138
  // fetch to the server for the item's description. However, we've
@@ -115,8 +140,5 @@ function itemCreatePopup_MakeSelection(){
115
140
  // interrogating for idNo, name, and title. However, supressing this
116
141
  // fetch would take several lines of code and establish a tight linkage
117
142
  // between here and the on-change logic for <select> elements.
118
-
119
- // close Modalbox
120
- Modalbox.hide();
121
143
  }
122
144
 
@@ -23,7 +23,7 @@
23
23
  // the function 'getCurrentType()'
24
24
 
25
25
 
26
- function generateFromTitle(titleInputElem, nameInputElem){
26
+ function generateFromTitle(titleInputElem, nameInputElem, checkNameFn){
27
27
  var result = false;
28
28
  if (genNameFromTitleOk && titleInputElem.value != null){
29
29
  if (nameInputElem.value == null ||
@@ -32,6 +32,8 @@ function generateFromTitle(titleInputElem, nameInputElem){
32
32
 
33
33
  nameInputElem.value = genNameValue(titleInputElem.value);
34
34
  clearNameUniquenessIndicators();
35
+ if (checkNameFn)
36
+ checkNameFn();
35
37
  }
36
38
  return result;
37
39
  }
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Glen E. Ivey
@@ -14,22 +14,37 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-23 00:00:00 -07:00
17
+ date: 2010-03-28 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: rails
21
+ name: rake
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  segments:
28
- - 2
29
- - 2
30
- version: "2.2"
28
+ - 0
29
+ - 8
30
+ - 7
31
+ version: 0.8.7
31
32
  type: :runtime
32
33
  version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rails
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 3
44
+ - 5
45
+ version: 2.3.5
46
+ type: :runtime
47
+ version_requirements: *id002
33
48
  description: " WontoMedia is a Ruby-on-Rails web app for community creation of\n an information classification scheme. WontoMedia is free\n software (licensed under the AGPL v3), and is being developed by\n a dispersed volunteer team using agile methods.\n"
34
49
  email: gleneivey@wontology.org
35
50
  executables: []
@@ -113,6 +128,7 @@ files:
113
128
  - config/environments/development.rb
114
129
  - config/environments/production.rb
115
130
  - config/environments/test.rb
131
+ - config/initializers/extensions.rb
116
132
  - config/initializers/inflections.rb
117
133
  - config/initializers/mime_types.rb
118
134
  - config/initializers/new_rails_defaults.rb
@@ -142,6 +158,7 @@ files:
142
158
  - doc/README.markdown
143
159
  - doc/README_FOR_APP
144
160
  - doc/customization.markdown
161
+ - doc/gemlist.txt
145
162
  - doc/scripts/rake-customize.markdown
146
163
  - lib/helpers/connection_helper.rb
147
164
  - lib/helpers/item_helper.rb
@@ -269,11 +286,13 @@ require_paths:
269
286
  - lib
270
287
  required_ruby_version: !ruby/object:Gem::Requirement
271
288
  requirements:
272
- - - ">="
289
+ - - ~>
273
290
  - !ruby/object:Gem::Version
274
291
  segments:
275
- - 0
276
- version: "0"
292
+ - 1
293
+ - 8
294
+ - 7
295
+ version: 1.8.7
277
296
  required_rubygems_version: !ruby/object:Gem::Requirement
278
297
  requirements:
279
298
  - - ">="