njacobeus-tokboxer 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/Manifest.txt +2 -11
- data/lib/TokBoxer.rb +3 -2
- data/lib/TokBoxer/Api.rb +5 -3
- data/lib/TokBoxer/Exceptions.rb +4 -0
- data/lib/TokBoxer/User.rb +36 -38
- data/lib/TokBoxer/VMail.rb +5 -4
- data/tokboxer.gemspec +38 -0
- metadata +4 -15
- data/PostInstall.txt +0 -7
- data/config/website.yml.sample +0 -2
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/script/txt2html +0 -71
- data/website/index.html +0 -84
- data/website/index.txt +0 -81
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -159
- data/website/template.html.erb +0 -50
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,24 +1,15 @@
|
|
1
1
|
History.txt
|
2
2
|
Manifest.txt
|
3
|
-
PostInstall.txt
|
4
3
|
README.rdoc
|
5
4
|
Rakefile
|
6
|
-
config/website.yml.sample
|
7
5
|
lib/TokBoxer.rb
|
8
6
|
lib/TokBoxer/Api.rb
|
9
7
|
lib/TokBoxer/Call.rb
|
8
|
+
lib/TokBoxer/Exceptions.rb
|
10
9
|
lib/TokBoxer/User.rb
|
11
10
|
lib/TokBoxer/VMail.rb
|
12
|
-
script/console
|
13
|
-
script/destroy
|
14
|
-
script/generate
|
15
|
-
script/txt2html
|
16
11
|
spec/TokBoxer_spec.rb
|
17
12
|
spec/spec.opts
|
18
13
|
spec/spec_helper.rb
|
19
14
|
tasks/rspec.rake
|
20
|
-
|
21
|
-
website/index.txt
|
22
|
-
website/javascripts/rounded_corners_lite.inc.js
|
23
|
-
website/stylesheets/screen.css
|
24
|
-
website/template.html.erb
|
15
|
+
tokboxer.gemspec
|
data/lib/TokBoxer.rb
CHANGED
@@ -11,7 +11,7 @@ require 'xmlsimple'
|
|
11
11
|
require 'pp' # just for debugging purposes
|
12
12
|
|
13
13
|
module TokBoxer
|
14
|
-
VERSION = '0.1.
|
14
|
+
VERSION = '0.1.2'
|
15
15
|
|
16
16
|
API_SERVER_LOGIN_URL = "view/oauth&"
|
17
17
|
API_SERVER_METHODS_URL = "a/v0"
|
@@ -25,4 +25,5 @@ end
|
|
25
25
|
require 'TokBoxer/Api'
|
26
26
|
require 'TokBoxer/User'
|
27
27
|
require 'TokBoxer/Call'
|
28
|
-
require 'TokBoxer/VMail'
|
28
|
+
require 'TokBoxer/VMail'
|
29
|
+
require 'TokBoxer/Exceptions'
|
data/lib/TokBoxer/Api.rb
CHANGED
@@ -155,7 +155,7 @@ module TokBoxer
|
|
155
155
|
params = { :partnerKey => @api_key }
|
156
156
|
result = request(method, call, params, @api_secret)
|
157
157
|
if result['error']
|
158
|
-
|
158
|
+
raise UnknownException, result['error'].inspect
|
159
159
|
else
|
160
160
|
return create_user(result["createGuest"].first["jabberId"].first, result["createGuest"].first["secret"].first)
|
161
161
|
end
|
@@ -167,7 +167,8 @@ module TokBoxer
|
|
167
167
|
params = { :firstname => firstname, :lastname => lastname, :email => email }
|
168
168
|
result = request(method, call, params, @api_secret)
|
169
169
|
if result['error']
|
170
|
-
|
170
|
+
raise EmailAlreadyInUseException if result['error'].first['content'] == "That email is already in use" # error
|
171
|
+
raise UnknownException, result['error'].inspect
|
171
172
|
else
|
172
173
|
return create_user(result["registerUser"].first["jabberId"].first, result["registerUser"].first["secret"].first)
|
173
174
|
end
|
@@ -227,10 +228,11 @@ module TokBoxer
|
|
227
228
|
|
228
229
|
private # ==========================================================================================
|
229
230
|
|
230
|
-
def initialize(api_key, api_secret, api_server_url = 'http://sandbox.tokbox.com/')
|
231
|
+
def initialize(api_key, api_secret, api_server_url = 'http://sandbox.tokbox.com/', debug = false)
|
231
232
|
@api_key = api_key
|
232
233
|
@api_secret = api_secret
|
233
234
|
@api_server_url = api_server_url
|
235
|
+
@debug = debug
|
234
236
|
end
|
235
237
|
|
236
238
|
def generate_nonce
|
data/lib/TokBoxer/User.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
module TokBoxer
|
2
|
-
|
2
|
+
|
3
3
|
class User
|
4
|
-
|
4
|
+
|
5
5
|
attr_reader :jabberId, :secret
|
6
6
|
alias :id :jabberId
|
7
|
-
|
7
|
+
|
8
8
|
def initialize(jabberId, secret, api)
|
9
9
|
@jabberId = jabberId
|
10
10
|
@secret = secret
|
11
11
|
@api = api
|
12
12
|
self.login
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
# TODO add a method which calls get_request_token from the API
|
16
16
|
# to get the jabberId and secret from the email and password
|
17
|
-
|
17
|
+
|
18
18
|
def login
|
19
19
|
@api.login_user(self.jabberId,self.secret)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def create_call(full_name,persistent=false)
|
23
23
|
result = @api.create_call(@jabberId, full_name, persistent)
|
24
24
|
if result['createCall'] and (createCall=result['createCall'].first)
|
@@ -32,41 +32,39 @@ module TokBoxer
|
|
32
32
|
nil
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
def access_token_valid?
|
37
37
|
result = @api.validate_access_token(@jabberId, @secret)
|
38
38
|
result['validateAccessToken'].first["isValid"].first == "true"
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
# Feeds ============================================================================================
|
42
|
-
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def build_vmails_array(what)
|
46
|
+
@api.get_feed(@jabberId,what)["feed"].first["item"].map do |m|
|
47
|
+
next unless m["videoMail"]
|
48
|
+
VMail.new :id => m["videoMail"].first["vmailId"],
|
49
|
+
:message_id => m["videoMail"].first["content"]["messageId"].first
|
50
|
+
end.compact
|
51
|
+
end
|
52
|
+
|
53
|
+
public
|
54
|
+
|
43
55
|
def vmails
|
44
|
-
|
45
|
-
VMail.new m["videoMail"].first["content"]["messageId"].first
|
46
|
-
end
|
56
|
+
build_vmails_array("all")
|
47
57
|
end
|
48
|
-
|
58
|
+
|
49
59
|
def sent_vmails
|
50
|
-
|
51
|
-
VMail.new m["videoMail"].first["content"]["messageId"].first
|
52
|
-
end
|
60
|
+
build_vmails_array("vmailSent")
|
53
61
|
end
|
54
|
-
|
62
|
+
|
55
63
|
def received_vmails
|
56
|
-
|
57
|
-
VMail.new m["videoMail"].first["content"]["messageId"].first
|
58
|
-
end
|
64
|
+
build_vmails_array("vmailRecv")
|
59
65
|
end
|
60
|
-
|
66
|
+
|
61
67
|
def recorder_embed_code(width="322", height="321",vmailToEmail="")
|
62
|
-
# TODO: this comes from the PHP api. Not yet implemented here
|
63
|
-
# if($isGuest) {
|
64
|
-
# $apiObj = new TokBoxApi(API_Config::PARTNER_KEY, API_Config::PARTNER_SECRET);
|
65
|
-
# $apiObj->updateToken($apiObj->getRequestToken(API_Config::CALLBACK_URL));
|
66
|
-
#
|
67
|
-
# $htmlCode .= "<script language=\"javascript\" src=\"SDK/js/TokBoxScript.js\"></script>\n";
|
68
|
-
# $htmlCode .= "<body onclick=\"setToken('".$apiObj->getAuthToken()."');\">\n";
|
69
|
-
# }
|
70
68
|
<<-END
|
71
69
|
<object width="#{width}" height="#{height}">
|
72
70
|
<param name="movie" value="#{@api.api_server_url}#{API_SERVER_RECORDER_WIDGET}"></param>
|
@@ -105,33 +103,33 @@ module TokBoxer
|
|
105
103
|
</object>
|
106
104
|
END
|
107
105
|
end
|
108
|
-
|
106
|
+
|
109
107
|
def is_online?
|
110
108
|
info["isOnline"].first == "true"
|
111
109
|
end
|
112
|
-
|
110
|
+
|
113
111
|
def display_name
|
114
112
|
info["displayName"].first
|
115
113
|
end
|
116
|
-
|
114
|
+
|
117
115
|
def username
|
118
116
|
info["username"].first
|
119
117
|
end
|
120
|
-
|
118
|
+
|
121
119
|
def userid
|
122
120
|
info["userid"].first
|
123
121
|
end
|
124
|
-
|
122
|
+
|
125
123
|
def show
|
126
124
|
info["show"].first
|
127
125
|
end
|
128
|
-
|
126
|
+
|
129
127
|
protected
|
130
|
-
|
128
|
+
|
131
129
|
def info
|
132
130
|
@info ||= @api.get_user_profile(self.jabberId)["getUserProfile"].first
|
133
131
|
end
|
134
|
-
|
132
|
+
|
135
133
|
end
|
136
|
-
|
134
|
+
|
137
135
|
end
|
data/lib/TokBoxer/VMail.rb
CHANGED
@@ -2,14 +2,15 @@ module TokBoxer
|
|
2
2
|
|
3
3
|
class VMail
|
4
4
|
|
5
|
-
attr_reader :id
|
5
|
+
attr_reader :id, :message_id
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@id = id
|
7
|
+
def initialize(options={})
|
8
|
+
@id = options[:id]
|
9
|
+
@message_id = options[:message_id]
|
9
10
|
end
|
10
11
|
|
11
12
|
def to_s
|
12
|
-
id
|
13
|
+
@id
|
13
14
|
end
|
14
15
|
|
15
16
|
end
|
data/tokboxer.gemspec
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{tokboxer}
|
3
|
+
s.version = "0.1.2"
|
4
|
+
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.authors = ["Nicolas Jacobeus"]
|
7
|
+
s.date = %q{2008-11-27}
|
8
|
+
s.description = %q{This is a ruby implementation of the TokBox API. Tokbox is a free video calling / video mailing platform (see http://www.tokbox.com). All API methods specified in the Tokbox Developer API wiki (http://developers.tokbox.com/index.php/API) are implemented but not all objects yet. So you may have to dig into the hash returned by the call (XML converted to a Ruby hash). For the moment, this gem currently specifically serves our needs for the implementation of video conversations and video mails on iStockCV (www.istockcv.com), an online recruitment network which we are developing. Your needs may vary so feel free to contact me (nj@belighted.com).}
|
9
|
+
s.email = ["nj@belighted.com"]
|
10
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
|
11
|
+
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "lib/TokBoxer.rb", "lib/TokBoxer/Api.rb", "lib/TokBoxer/Call.rb", "lib/TokBoxer/Exceptions.rb", "lib/TokBoxer/User.rb", "lib/TokBoxer/VMail.rb", "spec/TokBoxer_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake", "tokboxer.gemspec"]
|
12
|
+
s.has_rdoc = true
|
13
|
+
s.homepage = %q{http://github.com/njacobeus/tokboxer/}
|
14
|
+
s.rdoc_options = ["--main", "README.rdoc"]
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
s.rubyforge_project = %q{tokboxer}
|
17
|
+
s.rubygems_version = %q{1.2.0}
|
18
|
+
s.summary = %q{This is a ruby implementation of the TokBox API}
|
19
|
+
|
20
|
+
if s.respond_to? :specification_version then
|
21
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
22
|
+
s.specification_version = 2
|
23
|
+
|
24
|
+
if current_version >= 3 then
|
25
|
+
s.add_runtime_dependency(%q<xml-simple>, [">= 1.0.11"])
|
26
|
+
s.add_development_dependency(%q<newgem>, [">= 1.0.5"])
|
27
|
+
s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
|
28
|
+
else
|
29
|
+
s.add_dependency(%q<xml-simple>, [">= 1.0.11"])
|
30
|
+
s.add_dependency(%q<newgem>, [">= 1.0.5"])
|
31
|
+
s.add_dependency(%q<hoe>, [">= 1.8.0"])
|
32
|
+
end
|
33
|
+
else
|
34
|
+
s.add_dependency(%q<xml-simple>, [">= 1.0.11"])
|
35
|
+
s.add_dependency(%q<newgem>, [">= 1.0.5"])
|
36
|
+
s.add_dependency(%q<hoe>, [">= 1.8.0"])
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: njacobeus-tokboxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Jacobeus
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-11-
|
12
|
+
date: 2008-11-27 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -49,34 +49,23 @@ extensions: []
|
|
49
49
|
extra_rdoc_files:
|
50
50
|
- History.txt
|
51
51
|
- Manifest.txt
|
52
|
-
- PostInstall.txt
|
53
52
|
- README.rdoc
|
54
|
-
- website/index.txt
|
55
53
|
files:
|
56
54
|
- History.txt
|
57
55
|
- Manifest.txt
|
58
|
-
- PostInstall.txt
|
59
56
|
- README.rdoc
|
60
57
|
- Rakefile
|
61
|
-
- config/website.yml.sample
|
62
58
|
- lib/TokBoxer.rb
|
63
59
|
- lib/TokBoxer/Api.rb
|
64
60
|
- lib/TokBoxer/Call.rb
|
61
|
+
- lib/TokBoxer/Exceptions.rb
|
65
62
|
- lib/TokBoxer/User.rb
|
66
63
|
- lib/TokBoxer/VMail.rb
|
67
|
-
- script/console
|
68
|
-
- script/destroy
|
69
|
-
- script/generate
|
70
|
-
- script/txt2html
|
71
64
|
- spec/TokBoxer_spec.rb
|
72
65
|
- spec/spec.opts
|
73
66
|
- spec/spec_helper.rb
|
74
67
|
- tasks/rspec.rake
|
75
|
-
-
|
76
|
-
- website/index.txt
|
77
|
-
- website/javascripts/rounded_corners_lite.inc.js
|
78
|
-
- website/stylesheets/screen.css
|
79
|
-
- website/template.html.erb
|
68
|
+
- tokboxer.gemspec
|
80
69
|
has_rdoc: true
|
81
70
|
homepage: http://github.com/njacobeus/tokboxer/
|
82
71
|
post_install_message:
|
data/PostInstall.txt
DELETED
data/config/website.yml.sample
DELETED
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/TokBoxer.rb'}"
|
9
|
-
puts "Loading TokBoxer gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/script/txt2html
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
load File.dirname(__FILE__) + "/../Rakefile"
|
4
|
-
require 'rubyforge'
|
5
|
-
require 'redcloth'
|
6
|
-
require 'syntax/convertors/html'
|
7
|
-
require 'erb'
|
8
|
-
|
9
|
-
download = "http://rubyforge.org/projects/#{$hoe.rubyforge_name}"
|
10
|
-
version = $hoe.version
|
11
|
-
|
12
|
-
def rubyforge_project_id
|
13
|
-
RubyForge.new.configure.autoconfig["group_ids"][$hoe.rubyforge_name]
|
14
|
-
end
|
15
|
-
|
16
|
-
class Fixnum
|
17
|
-
def ordinal
|
18
|
-
# teens
|
19
|
-
return 'th' if (10..19).include?(self % 100)
|
20
|
-
# others
|
21
|
-
case self % 10
|
22
|
-
when 1: return 'st'
|
23
|
-
when 2: return 'nd'
|
24
|
-
when 3: return 'rd'
|
25
|
-
else return 'th'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Time
|
31
|
-
def pretty
|
32
|
-
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def convert_syntax(syntax, source)
|
37
|
-
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
38
|
-
end
|
39
|
-
|
40
|
-
if ARGV.length >= 1
|
41
|
-
src, template = ARGV
|
42
|
-
template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
|
43
|
-
else
|
44
|
-
puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
|
45
|
-
exit!
|
46
|
-
end
|
47
|
-
|
48
|
-
template = ERB.new(File.open(template).read)
|
49
|
-
|
50
|
-
title = nil
|
51
|
-
body = nil
|
52
|
-
File.open(src) do |fsrc|
|
53
|
-
title_text = fsrc.readline
|
54
|
-
body_text_template = fsrc.read
|
55
|
-
body_text = ERB.new(body_text_template).result(binding)
|
56
|
-
syntax_items = []
|
57
|
-
body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
|
58
|
-
ident = syntax_items.length
|
59
|
-
element, syntax, source = $1, $2, $3
|
60
|
-
syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
|
61
|
-
"syntax-temp-#{ident}"
|
62
|
-
}
|
63
|
-
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
64
|
-
body = RedCloth.new(body_text).to_html
|
65
|
-
body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
|
66
|
-
end
|
67
|
-
stat = File.stat(src)
|
68
|
-
created = stat.ctime
|
69
|
-
modified = stat.mtime
|
70
|
-
|
71
|
-
$stdout << template.result(binding)
|
data/website/index.html
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
7
|
-
<title>
|
8
|
-
TokBoxer
|
9
|
-
</title>
|
10
|
-
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
|
11
|
-
<style>
|
12
|
-
|
13
|
-
</style>
|
14
|
-
<script type="text/javascript">
|
15
|
-
window.onload = function() {
|
16
|
-
settings = {
|
17
|
-
tl: { radius: 10 },
|
18
|
-
tr: { radius: 10 },
|
19
|
-
bl: { radius: 10 },
|
20
|
-
br: { radius: 10 },
|
21
|
-
antiAlias: true,
|
22
|
-
autoPad: true,
|
23
|
-
validTags: ["div"]
|
24
|
-
}
|
25
|
-
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
|
-
versionBox.applyCornersToAll();
|
27
|
-
}
|
28
|
-
</script>
|
29
|
-
</head>
|
30
|
-
<body>
|
31
|
-
<div id="main">
|
32
|
-
|
33
|
-
<h1>TokBoxer</h1>
|
34
|
-
<div class="sidebar">
|
35
|
-
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/tokboxer"; return false'>
|
36
|
-
<p>Get Version</p>
|
37
|
-
<a href="http://rubyforge.org/projects/tokboxer" class="numbers">0.1.0</a>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
<h2>What</h2>
|
41
|
-
<h2>Installing</h2>
|
42
|
-
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="constant">TokBoxer</span></pre></p>
|
43
|
-
<h2>The basics</h2>
|
44
|
-
<h2>Demonstration of usage</h2>
|
45
|
-
<h2>Forum</h2>
|
46
|
-
<p><a href="http://groups.google.com/group/TokBoxer">http://groups.google.com/group/TokBoxer</a></p>
|
47
|
-
<p><span class="caps">TODO</span> – create Google Group – TokBoxer</p>
|
48
|
-
<h2>How to submit patches</h2>
|
49
|
-
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
50
|
-
<p><span class="caps">TODO</span> – pick <span class="caps">SVN</span> or Git instructions</p>
|
51
|
-
<p>The trunk repository is <code>svn://rubyforge.org/var/svn/TokBoxer/trunk</code> for anonymous access.</p>
|
52
|
-
<p><span class="caps">OOOORRRR</span></p>
|
53
|
-
<p>You can fetch the source from either:</p>
|
54
|
-
<ul>
|
55
|
-
<li>rubyforge: <a href="http://rubyforge.org/scm/?group_id=7264">http://rubyforge.org/scm/?group_id=7264</a></li>
|
56
|
-
</ul>
|
57
|
-
<pre>git clone git://rubyforge.org/TokBoxer.git</pre>
|
58
|
-
<ul>
|
59
|
-
<li>github: <a href="http://github.com/GITHUB_USERNAME/TokBoxer/tree/master">http://github.com/GITHUB_USERNAME/TokBoxer/tree/master</a></li>
|
60
|
-
</ul>
|
61
|
-
<pre>git clone git://github.com/GITHUB_USERNAME/TokBoxer.git</pre>
|
62
|
-
<p><span class="caps">TODO</span> – add “github_username: username” to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.</p>
|
63
|
-
<ul>
|
64
|
-
<li>gitorious: <a href="git://gitorious.org/TokBoxer/mainline.git">git://gitorious.org/TokBoxer/mainline.git</a></li>
|
65
|
-
</ul>
|
66
|
-
<pre>git clone git://gitorious.org/TokBoxer/mainline.git</pre>
|
67
|
-
<h3>Build and test instructions</h3>
|
68
|
-
<pre>cd TokBoxer
|
69
|
-
rake test
|
70
|
-
rake install_gem</pre>
|
71
|
-
<h2>License</h2>
|
72
|
-
<p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
|
73
|
-
<h2>Contact</h2>
|
74
|
-
<p>Comments are welcome. Send an email to <a href="mailto:nj@belighted.com">Nicolas Jacobeus</a> via the <a href="http://groups.google.com/group/TokBoxer">forum</a></p>
|
75
|
-
<p class="coda">
|
76
|
-
<a href="nj@belighted.com">Nicolas Jacobeus</a>, 3rd November 2008<br>
|
77
|
-
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
78
|
-
</p>
|
79
|
-
</div>
|
80
|
-
|
81
|
-
<!-- insert site tracking codes here, like Google Urchin -->
|
82
|
-
|
83
|
-
</body>
|
84
|
-
</html>
|
data/website/index.txt
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
h1. TokBoxer
|
2
|
-
|
3
|
-
|
4
|
-
h2. What
|
5
|
-
|
6
|
-
|
7
|
-
h2. Installing
|
8
|
-
|
9
|
-
<pre syntax="ruby">sudo gem install TokBoxer</pre>
|
10
|
-
|
11
|
-
h2. The basics
|
12
|
-
|
13
|
-
|
14
|
-
h2. Demonstration of usage
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
h2. Forum
|
19
|
-
|
20
|
-
"http://groups.google.com/group/TokBoxer":http://groups.google.com/group/TokBoxer
|
21
|
-
|
22
|
-
TODO - create Google Group - TokBoxer
|
23
|
-
|
24
|
-
h2. How to submit patches
|
25
|
-
|
26
|
-
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
27
|
-
|
28
|
-
TODO - pick SVN or Git instructions
|
29
|
-
|
30
|
-
The trunk repository is <code>svn://rubyforge.org/var/svn/TokBoxer/trunk</code> for anonymous access.
|
31
|
-
|
32
|
-
OOOORRRR
|
33
|
-
|
34
|
-
You can fetch the source from either:
|
35
|
-
|
36
|
-
<% if rubyforge_project_id %>
|
37
|
-
|
38
|
-
* rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
|
39
|
-
|
40
|
-
<pre>git clone git://rubyforge.org/TokBoxer.git</pre>
|
41
|
-
|
42
|
-
<% else %>
|
43
|
-
|
44
|
-
* rubyforge: MISSING IN ACTION
|
45
|
-
|
46
|
-
TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
|
47
|
-
yet to refresh your local rubyforge data with this projects' id information.
|
48
|
-
|
49
|
-
When you do this, this message will magically disappear!
|
50
|
-
|
51
|
-
Or you can hack website/index.txt and make it all go away!!
|
52
|
-
|
53
|
-
<% end %>
|
54
|
-
|
55
|
-
* github: "http://github.com/GITHUB_USERNAME/TokBoxer/tree/master":http://github.com/GITHUB_USERNAME/TokBoxer/tree/master
|
56
|
-
|
57
|
-
<pre>git clone git://github.com/GITHUB_USERNAME/TokBoxer.git</pre>
|
58
|
-
|
59
|
-
|
60
|
-
TODO - add "github_username: username" to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.
|
61
|
-
|
62
|
-
|
63
|
-
* gitorious: "git://gitorious.org/TokBoxer/mainline.git":git://gitorious.org/TokBoxer/mainline.git
|
64
|
-
|
65
|
-
<pre>git clone git://gitorious.org/TokBoxer/mainline.git</pre>
|
66
|
-
|
67
|
-
h3. Build and test instructions
|
68
|
-
|
69
|
-
<pre>cd TokBoxer
|
70
|
-
rake test
|
71
|
-
rake install_gem</pre>
|
72
|
-
|
73
|
-
|
74
|
-
h2. License
|
75
|
-
|
76
|
-
This code is free to use under the terms of the MIT license.
|
77
|
-
|
78
|
-
h2. Contact
|
79
|
-
|
80
|
-
Comments are welcome. Send an email to "Nicolas Jacobeus":mailto:nj@belighted.com via the "forum":http://groups.google.com/group/TokBoxer
|
81
|
-
|
@@ -1,285 +0,0 @@
|
|
1
|
-
|
2
|
-
/****************************************************************
|
3
|
-
* *
|
4
|
-
* curvyCorners *
|
5
|
-
* ------------ *
|
6
|
-
* *
|
7
|
-
* This script generates rounded corners for your divs. *
|
8
|
-
* *
|
9
|
-
* Version 1.2.9 *
|
10
|
-
* Copyright (c) 2006 Cameron Cooke *
|
11
|
-
* By: Cameron Cooke and Tim Hutchison. *
|
12
|
-
* *
|
13
|
-
* *
|
14
|
-
* Website: http://www.curvycorners.net *
|
15
|
-
* Email: info@totalinfinity.com *
|
16
|
-
* Forum: http://www.curvycorners.net/forum/ *
|
17
|
-
* *
|
18
|
-
* *
|
19
|
-
* This library is free software; you can redistribute *
|
20
|
-
* it and/or modify it under the terms of the GNU *
|
21
|
-
* Lesser General Public License as published by the *
|
22
|
-
* Free Software Foundation; either version 2.1 of the *
|
23
|
-
* License, or (at your option) any later version. *
|
24
|
-
* *
|
25
|
-
* This library is distributed in the hope that it will *
|
26
|
-
* be useful, but WITHOUT ANY WARRANTY; without even the *
|
27
|
-
* implied warranty of MERCHANTABILITY or FITNESS FOR A *
|
28
|
-
* PARTICULAR PURPOSE. See the GNU Lesser General Public *
|
29
|
-
* License for more details. *
|
30
|
-
* *
|
31
|
-
* You should have received a copy of the GNU Lesser *
|
32
|
-
* General Public License along with this library; *
|
33
|
-
* Inc., 59 Temple Place, Suite 330, Boston, *
|
34
|
-
* MA 02111-1307 USA *
|
35
|
-
* *
|
36
|
-
****************************************************************/
|
37
|
-
|
38
|
-
var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1; var isMoz = document.implementation && document.implementation.createDocument; var isSafari = ((navigator.userAgent.toLowerCase().indexOf('safari')!=-1)&&(navigator.userAgent.toLowerCase().indexOf('mac')!=-1))?true:false; function curvyCorners()
|
39
|
-
{ if(typeof(arguments[0]) != "object") throw newCurvyError("First parameter of curvyCorners() must be an object."); if(typeof(arguments[1]) != "object" && typeof(arguments[1]) != "string") throw newCurvyError("Second parameter of curvyCorners() must be an object or a class name."); if(typeof(arguments[1]) == "string")
|
40
|
-
{ var startIndex = 0; var boxCol = getElementsByClass(arguments[1]);}
|
41
|
-
else
|
42
|
-
{ var startIndex = 1; var boxCol = arguments;}
|
43
|
-
var curvyCornersCol = new Array(); if(arguments[0].validTags)
|
44
|
-
var validElements = arguments[0].validTags; else
|
45
|
-
var validElements = ["div"]; for(var i = startIndex, j = boxCol.length; i < j; i++)
|
46
|
-
{ var currentTag = boxCol[i].tagName.toLowerCase(); if(inArray(validElements, currentTag) !== false)
|
47
|
-
{ curvyCornersCol[curvyCornersCol.length] = new curvyObject(arguments[0], boxCol[i]);}
|
48
|
-
}
|
49
|
-
this.objects = curvyCornersCol; this.applyCornersToAll = function()
|
50
|
-
{ for(var x = 0, k = this.objects.length; x < k; x++)
|
51
|
-
{ this.objects[x].applyCorners();}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
function curvyObject()
|
55
|
-
{ this.box = arguments[1]; this.settings = arguments[0]; this.topContainer = null; this.bottomContainer = null; this.masterCorners = new Array(); this.contentDIV = null; var boxHeight = get_style(this.box, "height", "height"); var boxWidth = get_style(this.box, "width", "width"); var borderWidth = get_style(this.box, "borderTopWidth", "border-top-width"); var borderColour = get_style(this.box, "borderTopColor", "border-top-color"); var boxColour = get_style(this.box, "backgroundColor", "background-color"); var backgroundImage = get_style(this.box, "backgroundImage", "background-image"); var boxPosition = get_style(this.box, "position", "position"); var boxPadding = get_style(this.box, "paddingTop", "padding-top"); this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1)? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight)); this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1)? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth)); this.borderWidth = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1)? borderWidth.slice(0, borderWidth.indexOf("px")) : 0)); this.boxColour = format_colour(boxColour); this.boxPadding = parseInt(((boxPadding != "" && boxPadding.indexOf("px") !== -1)? boxPadding.slice(0, boxPadding.indexOf("px")) : 0)); this.borderColour = format_colour(borderColour); this.borderString = this.borderWidth + "px" + " solid " + this.borderColour; this.backgroundImage = ((backgroundImage != "none")? backgroundImage : ""); this.boxContent = this.box.innerHTML; if(boxPosition != "absolute") this.box.style.position = "relative"; this.box.style.padding = "0px"; if(isIE && boxWidth == "auto" && boxHeight == "auto") this.box.style.width = "100%"; if(this.settings.autoPad == true && this.boxPadding > 0)
|
56
|
-
this.box.innerHTML = ""; this.applyCorners = function()
|
57
|
-
{ for(var t = 0; t < 2; t++)
|
58
|
-
{ switch(t)
|
59
|
-
{ case 0:
|
60
|
-
if(this.settings.tl || this.settings.tr)
|
61
|
-
{ var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0); newMainContainer.style.height = topMaxRadius + "px"; newMainContainer.style.top = 0 - topMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.topContainer = this.box.appendChild(newMainContainer);}
|
62
|
-
break; case 1:
|
63
|
-
if(this.settings.bl || this.settings.br)
|
64
|
-
{ var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0); newMainContainer.style.height = botMaxRadius + "px"; newMainContainer.style.bottom = 0 - botMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.bottomContainer = this.box.appendChild(newMainContainer);}
|
65
|
-
break;}
|
66
|
-
}
|
67
|
-
if(this.topContainer) this.box.style.borderTopWidth = "0px"; if(this.bottomContainer) this.box.style.borderBottomWidth = "0px"; var corners = ["tr", "tl", "br", "bl"]; for(var i in corners)
|
68
|
-
{ if(i > -1 < 4)
|
69
|
-
{ var cc = corners[i]; if(!this.settings[cc])
|
70
|
-
{ if(((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null))
|
71
|
-
{ var newCorner = document.createElement("DIV"); newCorner.style.position = "relative"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; if(this.backgroundImage == "")
|
72
|
-
newCorner.style.backgroundColor = this.boxColour; else
|
73
|
-
newCorner.style.backgroundImage = this.backgroundImage; switch(cc)
|
74
|
-
{ case "tl":
|
75
|
-
newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.tr.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.left = -this.borderWidth + "px"; break; case "tr":
|
76
|
-
newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.tl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; newCorner.style.left = this.borderWidth + "px"; break; case "bl":
|
77
|
-
newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.br.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = -this.borderWidth + "px"; newCorner.style.backgroundPosition = "-" + (this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break; case "br":
|
78
|
-
newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.bl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = this.borderWidth + "px"
|
79
|
-
newCorner.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break;}
|
80
|
-
}
|
81
|
-
}
|
82
|
-
else
|
83
|
-
{ if(this.masterCorners[this.settings[cc].radius])
|
84
|
-
{ var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);}
|
85
|
-
else
|
86
|
-
{ var newCorner = document.createElement("DIV"); newCorner.style.height = this.settings[cc].radius + "px"; newCorner.style.width = this.settings[cc].radius + "px"; newCorner.style.position = "absolute"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth); for(var intx = 0, j = this.settings[cc].radius; intx < j; intx++)
|
87
|
-
{ if((intx +1) >= borderRadius)
|
88
|
-
var y1 = -1; else
|
89
|
-
var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx+1), 2))) - 1); if(borderRadius != j)
|
90
|
-
{ if((intx) >= borderRadius)
|
91
|
-
var y2 = -1; else
|
92
|
-
var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius,2) - Math.pow(intx, 2))); if((intx+1) >= j)
|
93
|
-
var y3 = -1; else
|
94
|
-
var y3 = (Math.floor(Math.sqrt(Math.pow(j ,2) - Math.pow((intx+1), 2))) - 1);}
|
95
|
-
if((intx) >= j)
|
96
|
-
var y4 = -1; else
|
97
|
-
var y4 = Math.ceil(Math.sqrt(Math.pow(j ,2) - Math.pow(intx, 2))); if(y1 > -1) this.drawPixel(intx, 0, this.boxColour, 100, (y1+1), newCorner, -1, this.settings[cc].radius); if(borderRadius != j)
|
98
|
-
{ for(var inty = (y1 + 1); inty < y2; inty++)
|
99
|
-
{ if(this.settings.antiAlias)
|
100
|
-
{ if(this.backgroundImage != "")
|
101
|
-
{ var borderFract = (pixelFraction(intx, inty, borderRadius) * 100); if(borderFract < 30)
|
102
|
-
{ this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);}
|
103
|
-
else
|
104
|
-
{ this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);}
|
105
|
-
}
|
106
|
-
else
|
107
|
-
{ var pixelcolour = BlendColour(this.boxColour, this.borderColour, pixelFraction(intx, inty, borderRadius)); this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius, cc);}
|
108
|
-
}
|
109
|
-
}
|
110
|
-
if(this.settings.antiAlias)
|
111
|
-
{ if(y3 >= y2)
|
112
|
-
{ if (y2 == -1) y2 = 0; this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, 0);}
|
113
|
-
}
|
114
|
-
else
|
115
|
-
{ if(y3 >= y1)
|
116
|
-
{ this.drawPixel(intx, (y1 + 1), this.borderColour, 100, (y3 - y1), newCorner, 0, 0);}
|
117
|
-
}
|
118
|
-
var outsideColour = this.borderColour;}
|
119
|
-
else
|
120
|
-
{ var outsideColour = this.boxColour; var y3 = y1;}
|
121
|
-
if(this.settings.antiAlias)
|
122
|
-
{ for(var inty = (y3 + 1); inty < y4; inty++)
|
123
|
-
{ this.drawPixel(intx, inty, outsideColour, (pixelFraction(intx, inty , j) * 100), 1, newCorner, ((this.borderWidth > 0)? 0 : -1), this.settings[cc].radius);}
|
124
|
-
}
|
125
|
-
}
|
126
|
-
this.masterCorners[this.settings[cc].radius] = newCorner.cloneNode(true);}
|
127
|
-
if(cc != "br")
|
128
|
-
{ for(var t = 0, k = newCorner.childNodes.length; t < k; t++)
|
129
|
-
{ var pixelBar = newCorner.childNodes[t]; var pixelBarTop = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px"))); var pixelBarLeft = parseInt(pixelBar.style.left.substring(0, pixelBar.style.left.indexOf("px"))); var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px"))); if(cc == "tl" || cc == "bl"){ pixelBar.style.left = this.settings[cc].radius -pixelBarLeft -1 + "px";}
|
130
|
-
if(cc == "tr" || cc == "tl"){ pixelBar.style.top = this.settings[cc].radius -pixelBarHeight -pixelBarTop + "px";}
|
131
|
-
switch(cc)
|
132
|
-
{ case "tr":
|
133
|
-
pixelBar.style.backgroundPosition = "-" + Math.abs((this.boxWidth - this.settings[cc].radius + this.borderWidth) + pixelBarLeft) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "tl":
|
134
|
-
pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "bl":
|
135
|
-
pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs((this.boxHeight + this.settings[cc].radius + pixelBarTop) -this.borderWidth) + "px"; break;}
|
136
|
-
}
|
137
|
-
}
|
138
|
-
}
|
139
|
-
if(newCorner)
|
140
|
-
{ switch(cc)
|
141
|
-
{ case "tl":
|
142
|
-
if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "tr":
|
143
|
-
if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "bl":
|
144
|
-
if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break; case "br":
|
145
|
-
if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break;}
|
146
|
-
}
|
147
|
-
}
|
148
|
-
}
|
149
|
-
var radiusDiff = new Array(); radiusDiff["t"] = Math.abs(this.settings.tl.radius - this.settings.tr.radius)
|
150
|
-
radiusDiff["b"] = Math.abs(this.settings.bl.radius - this.settings.br.radius); for(z in radiusDiff)
|
151
|
-
{ if(z == "t" || z == "b")
|
152
|
-
{ if(radiusDiff[z])
|
153
|
-
{ var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius)? z +"l" : z +"r"); var newFiller = document.createElement("DIV"); newFiller.style.height = radiusDiff[z] + "px"; newFiller.style.width = this.settings[smallerCornerType].radius+ "px"
|
154
|
-
newFiller.style.position = "absolute"; newFiller.style.fontSize = "1px"; newFiller.style.overflow = "hidden"; newFiller.style.backgroundColor = this.boxColour; switch(smallerCornerType)
|
155
|
-
{ case "tl":
|
156
|
-
newFiller.style.bottom = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.topContainer.appendChild(newFiller); break; case "tr":
|
157
|
-
newFiller.style.bottom = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.topContainer.appendChild(newFiller); break; case "bl":
|
158
|
-
newFiller.style.top = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.bottomContainer.appendChild(newFiller); break; case "br":
|
159
|
-
newFiller.style.top = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.bottomContainer.appendChild(newFiller); break;}
|
160
|
-
}
|
161
|
-
var newFillerBar = document.createElement("DIV"); newFillerBar.style.position = "relative"; newFillerBar.style.fontSize = "1px"; newFillerBar.style.overflow = "hidden"; newFillerBar.style.backgroundColor = this.boxColour; newFillerBar.style.backgroundImage = this.backgroundImage; switch(z)
|
162
|
-
{ case "t":
|
163
|
-
if(this.topContainer)
|
164
|
-
{ if(this.settings.tl.radius && this.settings.tr.radius)
|
165
|
-
{ newFillerBar.style.height = topMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.tl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.tr.radius - this.borderWidth + "px"; newFillerBar.style.borderTop = this.borderString; if(this.backgroundImage != "")
|
166
|
-
newFillerBar.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; this.topContainer.appendChild(newFillerBar);}
|
167
|
-
this.box.style.backgroundPosition = "0px -" + (topMaxRadius - this.borderWidth) + "px";}
|
168
|
-
break; case "b":
|
169
|
-
if(this.bottomContainer)
|
170
|
-
{ if(this.settings.bl.radius && this.settings.br.radius)
|
171
|
-
{ newFillerBar.style.height = botMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.bl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.br.radius - this.borderWidth + "px"; newFillerBar.style.borderBottom = this.borderString; if(this.backgroundImage != "")
|
172
|
-
newFillerBar.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (topMaxRadius + this.borderWidth)) + "px"; this.bottomContainer.appendChild(newFillerBar);}
|
173
|
-
}
|
174
|
-
break;}
|
175
|
-
}
|
176
|
-
}
|
177
|
-
if(this.settings.autoPad == true && this.boxPadding > 0)
|
178
|
-
{ var contentContainer = document.createElement("DIV"); contentContainer.style.position = "relative"; contentContainer.innerHTML = this.boxContent; contentContainer.className = "autoPadDiv"; var topPadding = Math.abs(topMaxRadius - this.boxPadding); var botPadding = Math.abs(botMaxRadius - this.boxPadding); if(topMaxRadius < this.boxPadding)
|
179
|
-
contentContainer.style.paddingTop = topPadding + "px"; if(botMaxRadius < this.boxPadding)
|
180
|
-
contentContainer.style.paddingBottom = botMaxRadius + "px"; contentContainer.style.paddingLeft = this.boxPadding + "px"; contentContainer.style.paddingRight = this.boxPadding + "px"; this.contentDIV = this.box.appendChild(contentContainer);}
|
181
|
-
}
|
182
|
-
this.drawPixel = function(intx, inty, colour, transAmount, height, newCorner, image, cornerRadius)
|
183
|
-
{ var pixel = document.createElement("DIV"); pixel.style.height = height + "px"; pixel.style.width = "1px"; pixel.style.position = "absolute"; pixel.style.fontSize = "1px"; pixel.style.overflow = "hidden"; var topMaxRadius = Math.max(this.settings["tr"].radius, this.settings["tl"].radius); if(image == -1 && this.backgroundImage != "")
|
184
|
-
{ pixel.style.backgroundImage = this.backgroundImage; pixel.style.backgroundPosition = "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + topMaxRadius + inty) -this.borderWidth) + "px";}
|
185
|
-
else
|
186
|
-
{ pixel.style.backgroundColor = colour;}
|
187
|
-
if (transAmount != 100)
|
188
|
-
setOpacity(pixel, transAmount); pixel.style.top = inty + "px"; pixel.style.left = intx + "px"; newCorner.appendChild(pixel);}
|
189
|
-
}
|
190
|
-
function insertAfter(parent, node, referenceNode)
|
191
|
-
{ parent.insertBefore(node, referenceNode.nextSibling);}
|
192
|
-
function BlendColour(Col1, Col2, Col1Fraction)
|
193
|
-
{ var red1 = parseInt(Col1.substr(1,2),16); var green1 = parseInt(Col1.substr(3,2),16); var blue1 = parseInt(Col1.substr(5,2),16); var red2 = parseInt(Col2.substr(1,2),16); var green2 = parseInt(Col2.substr(3,2),16); var blue2 = parseInt(Col2.substr(5,2),16); if(Col1Fraction > 1 || Col1Fraction < 0) Col1Fraction = 1; var endRed = Math.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction))); if(endRed > 255) endRed = 255; if(endRed < 0) endRed = 0; var endGreen = Math.round((green1 * Col1Fraction) + (green2 * (1 - Col1Fraction))); if(endGreen > 255) endGreen = 255; if(endGreen < 0) endGreen = 0; var endBlue = Math.round((blue1 * Col1Fraction) + (blue2 * (1 - Col1Fraction))); if(endBlue > 255) endBlue = 255; if(endBlue < 0) endBlue = 0; return "#" + IntToHex(endRed)+ IntToHex(endGreen)+ IntToHex(endBlue);}
|
194
|
-
function IntToHex(strNum)
|
195
|
-
{ base = strNum / 16; rem = strNum % 16; base = base - (rem / 16); baseS = MakeHex(base); remS = MakeHex(rem); return baseS + '' + remS;}
|
196
|
-
function MakeHex(x)
|
197
|
-
{ if((x >= 0) && (x <= 9))
|
198
|
-
{ return x;}
|
199
|
-
else
|
200
|
-
{ switch(x)
|
201
|
-
{ case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";}
|
202
|
-
}
|
203
|
-
}
|
204
|
-
function pixelFraction(x, y, r)
|
205
|
-
{ var pixelfraction = 0; var xvalues = new Array(1); var yvalues = new Array(1); var point = 0; var whatsides = ""; var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x,2))); if ((intersect >= y) && (intersect < (y+1)))
|
206
|
-
{ whatsides = "Left"; xvalues[point] = 0; yvalues[point] = intersect - y; point = point + 1;}
|
207
|
-
var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y+1,2))); if ((intersect >= x) && (intersect < (x+1)))
|
208
|
-
{ whatsides = whatsides + "Top"; xvalues[point] = intersect - x; yvalues[point] = 1; point = point + 1;}
|
209
|
-
var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x+1,2))); if ((intersect >= y) && (intersect < (y+1)))
|
210
|
-
{ whatsides = whatsides + "Right"; xvalues[point] = 1; yvalues[point] = intersect - y; point = point + 1;}
|
211
|
-
var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y,2))); if ((intersect >= x) && (intersect < (x+1)))
|
212
|
-
{ whatsides = whatsides + "Bottom"; xvalues[point] = intersect - x; yvalues[point] = 0;}
|
213
|
-
switch (whatsides)
|
214
|
-
{ case "LeftRight":
|
215
|
-
pixelfraction = Math.min(yvalues[0],yvalues[1]) + ((Math.max(yvalues[0],yvalues[1]) - Math.min(yvalues[0],yvalues[1]))/2); break; case "TopRight":
|
216
|
-
pixelfraction = 1-(((1-xvalues[0])*(1-yvalues[1]))/2); break; case "TopBottom":
|
217
|
-
pixelfraction = Math.min(xvalues[0],xvalues[1]) + ((Math.max(xvalues[0],xvalues[1]) - Math.min(xvalues[0],xvalues[1]))/2); break; case "LeftBottom":
|
218
|
-
pixelfraction = (yvalues[0]*xvalues[1])/2; break; default:
|
219
|
-
pixelfraction = 1;}
|
220
|
-
return pixelfraction;}
|
221
|
-
function rgb2Hex(rgbColour)
|
222
|
-
{ try{ var rgbArray = rgb2Array(rgbColour); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); var hexColour = "#" + IntToHex(red) + IntToHex(green) + IntToHex(blue);}
|
223
|
-
catch(e){ alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");}
|
224
|
-
return hexColour;}
|
225
|
-
function rgb2Array(rgbColour)
|
226
|
-
{ var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")")); var rgbArray = rgbValues.split(", "); return rgbArray;}
|
227
|
-
function setOpacity(obj, opacity)
|
228
|
-
{ opacity = (opacity == 100)?99.999:opacity; if(isSafari && obj.tagName != "IFRAME")
|
229
|
-
{ var rgbArray = rgb2Array(obj.style.backgroundColor); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); obj.style.backgroundColor = "rgba(" + red + ", " + green + ", " + blue + ", " + opacity/100 + ")";}
|
230
|
-
else if(typeof(obj.style.opacity) != "undefined")
|
231
|
-
{ obj.style.opacity = opacity/100;}
|
232
|
-
else if(typeof(obj.style.MozOpacity) != "undefined")
|
233
|
-
{ obj.style.MozOpacity = opacity/100;}
|
234
|
-
else if(typeof(obj.style.filter) != "undefined")
|
235
|
-
{ obj.style.filter = "alpha(opacity:" + opacity + ")";}
|
236
|
-
else if(typeof(obj.style.KHTMLOpacity) != "undefined")
|
237
|
-
{ obj.style.KHTMLOpacity = opacity/100;}
|
238
|
-
}
|
239
|
-
function inArray(array, value)
|
240
|
-
{ for(var i = 0; i < array.length; i++){ if (array[i] === value) return i;}
|
241
|
-
return false;}
|
242
|
-
function inArrayKey(array, value)
|
243
|
-
{ for(key in array){ if(key === value) return true;}
|
244
|
-
return false;}
|
245
|
-
function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture); return true;}
|
246
|
-
else if (elm.attachEvent) { var r = elm.attachEvent('on' + evType, fn); return r;}
|
247
|
-
else { elm['on' + evType] = fn;}
|
248
|
-
}
|
249
|
-
function removeEvent(obj, evType, fn, useCapture){ if (obj.removeEventListener){ obj.removeEventListener(evType, fn, useCapture); return true;} else if (obj.detachEvent){ var r = obj.detachEvent("on"+evType, fn); return r;} else { alert("Handler could not be removed");}
|
250
|
-
}
|
251
|
-
function format_colour(colour)
|
252
|
-
{ var returnColour = "#ffffff"; if(colour != "" && colour != "transparent")
|
253
|
-
{ if(colour.substr(0, 3) == "rgb")
|
254
|
-
{ returnColour = rgb2Hex(colour);}
|
255
|
-
else if(colour.length == 4)
|
256
|
-
{ returnColour = "#" + colour.substring(1, 2) + colour.substring(1, 2) + colour.substring(2, 3) + colour.substring(2, 3) + colour.substring(3, 4) + colour.substring(3, 4);}
|
257
|
-
else
|
258
|
-
{ returnColour = colour;}
|
259
|
-
}
|
260
|
-
return returnColour;}
|
261
|
-
function get_style(obj, property, propertyNS)
|
262
|
-
{ try
|
263
|
-
{ if(obj.currentStyle)
|
264
|
-
{ var returnVal = eval("obj.currentStyle." + property);}
|
265
|
-
else
|
266
|
-
{ if(isSafari && obj.style.display == "none")
|
267
|
-
{ obj.style.display = ""; var wasHidden = true;}
|
268
|
-
var returnVal = document.defaultView.getComputedStyle(obj, '').getPropertyValue(propertyNS); if(isSafari && wasHidden)
|
269
|
-
{ obj.style.display = "none";}
|
270
|
-
}
|
271
|
-
}
|
272
|
-
catch(e)
|
273
|
-
{ }
|
274
|
-
return returnVal;}
|
275
|
-
function getElementsByClass(searchClass, node, tag)
|
276
|
-
{ var classElements = new Array(); if(node == null)
|
277
|
-
node = document; if(tag == null)
|
278
|
-
tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)"); for (i = 0, j = 0; i < elsLen; i++)
|
279
|
-
{ if(pattern.test(els[i].className))
|
280
|
-
{ classElements[j] = els[i]; j++;}
|
281
|
-
}
|
282
|
-
return classElements;}
|
283
|
-
function newCurvyError(errorMessage)
|
284
|
-
{ return new Error("curvyCorners Error:\n" + errorMessage)
|
285
|
-
}
|
@@ -1,159 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
background-color: #8DBD82;
|
3
|
-
font-family: "Georgia", sans-serif;
|
4
|
-
font-size: 16px;
|
5
|
-
line-height: 1.6em;
|
6
|
-
padding: 1.6em 0 0 0;
|
7
|
-
color: #333;
|
8
|
-
}
|
9
|
-
h1, h2, h3, h4, h5, h6 {
|
10
|
-
color: #444;
|
11
|
-
}
|
12
|
-
h1 {
|
13
|
-
font-family: sans-serif;
|
14
|
-
font-weight: normal;
|
15
|
-
font-size: 4em;
|
16
|
-
line-height: 0.8em;
|
17
|
-
letter-spacing: -0.1ex;
|
18
|
-
margin: 5px;
|
19
|
-
}
|
20
|
-
li {
|
21
|
-
padding: 0;
|
22
|
-
margin: 0;
|
23
|
-
list-style-type: square;
|
24
|
-
}
|
25
|
-
a {
|
26
|
-
color: #5E5AFF;
|
27
|
-
background-color: #A1DDB1;
|
28
|
-
font-weight: normal;
|
29
|
-
text-decoration: underline;
|
30
|
-
}
|
31
|
-
blockquote {
|
32
|
-
font-size: 90%;
|
33
|
-
font-style: italic;
|
34
|
-
border-left: 1px solid #111;
|
35
|
-
padding-left: 1em;
|
36
|
-
}
|
37
|
-
.caps {
|
38
|
-
font-size: 80%;
|
39
|
-
}
|
40
|
-
|
41
|
-
#main {
|
42
|
-
width: 55em;
|
43
|
-
padding: 0;
|
44
|
-
margin: 0 auto;
|
45
|
-
}
|
46
|
-
.coda {
|
47
|
-
text-align: right;
|
48
|
-
color: #77f;
|
49
|
-
font-size: smaller;
|
50
|
-
}
|
51
|
-
|
52
|
-
table {
|
53
|
-
font-size: 90%;
|
54
|
-
line-height: 1.4em;
|
55
|
-
color: #ff8;
|
56
|
-
background-color: #111;
|
57
|
-
padding: 2px 10px 2px 10px;
|
58
|
-
border-style: dashed;
|
59
|
-
}
|
60
|
-
|
61
|
-
th {
|
62
|
-
color: #fff;
|
63
|
-
}
|
64
|
-
|
65
|
-
td {
|
66
|
-
padding: 2px 10px 2px 10px;
|
67
|
-
}
|
68
|
-
|
69
|
-
.success {
|
70
|
-
color: #0CC52B;
|
71
|
-
}
|
72
|
-
|
73
|
-
.failed {
|
74
|
-
color: #E90A1B;
|
75
|
-
}
|
76
|
-
|
77
|
-
.unknown {
|
78
|
-
color: #995000;
|
79
|
-
}
|
80
|
-
pre, code {
|
81
|
-
font-family: monospace;
|
82
|
-
font-size: 90%;
|
83
|
-
line-height: 1.4em;
|
84
|
-
color: #ff8;
|
85
|
-
background-color: #111;
|
86
|
-
width: 40em;
|
87
|
-
padding: 2px 10px 2px 10px;
|
88
|
-
}
|
89
|
-
.comment { color: #aaa; font-style: italic; }
|
90
|
-
.keyword { color: #eff; font-weight: bold; }
|
91
|
-
.punct { color: #eee; font-weight: bold; }
|
92
|
-
.symbol { color: #0bb; }
|
93
|
-
.string { color: #6b4; }
|
94
|
-
.ident { color: #ff8; }
|
95
|
-
.constant { color: #66f; }
|
96
|
-
.regex { color: #ec6; }
|
97
|
-
.number { color: #F99; }
|
98
|
-
.expr { color: #227; }
|
99
|
-
|
100
|
-
.sidebar {
|
101
|
-
float: right;
|
102
|
-
}
|
103
|
-
|
104
|
-
#version {
|
105
|
-
width: 217px;
|
106
|
-
text-align: right;
|
107
|
-
font-family: sans-serif;
|
108
|
-
font-weight: normal;
|
109
|
-
color: #141331;
|
110
|
-
padding: 15px 20px 10px 20px;
|
111
|
-
margin: 0 auto;
|
112
|
-
margin-top: 15px;
|
113
|
-
background-color: #9A5535;
|
114
|
-
border: 3px solid #7E393E;
|
115
|
-
}
|
116
|
-
|
117
|
-
#version .numbers {
|
118
|
-
display: block;
|
119
|
-
font-size: 4em;
|
120
|
-
line-height: 0.8em;
|
121
|
-
letter-spacing: -0.1ex;
|
122
|
-
margin-bottom: 15px;
|
123
|
-
}
|
124
|
-
|
125
|
-
#version p {
|
126
|
-
text-decoration: none;
|
127
|
-
color: #F1F4FF;
|
128
|
-
background-color: #9A5535;
|
129
|
-
margin: 0;
|
130
|
-
padding: 0;
|
131
|
-
}
|
132
|
-
|
133
|
-
#version a {
|
134
|
-
text-decoration: none;
|
135
|
-
color: #F1F4FF;
|
136
|
-
background-color: #9A5535;
|
137
|
-
}
|
138
|
-
|
139
|
-
.clickable {
|
140
|
-
cursor: pointer;
|
141
|
-
cursor: hand;
|
142
|
-
}
|
143
|
-
|
144
|
-
#twitter_search {
|
145
|
-
margin: 40px 0 10px 15px;
|
146
|
-
color: #F1F4FF;
|
147
|
-
background-color: #9A5535;
|
148
|
-
border: 3px solid #7E393E;
|
149
|
-
}
|
150
|
-
|
151
|
-
#twitter_search h3 {
|
152
|
-
color: #F1F4FF;
|
153
|
-
margin-bottom: 0px;
|
154
|
-
}
|
155
|
-
|
156
|
-
#twitter_search center b {
|
157
|
-
display: none;
|
158
|
-
}
|
159
|
-
|
data/website/template.html.erb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
7
|
-
<title>
|
8
|
-
<%= title %>
|
9
|
-
</title>
|
10
|
-
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
|
11
|
-
<style>
|
12
|
-
|
13
|
-
</style>
|
14
|
-
<script type="text/javascript">
|
15
|
-
window.onload = function() {
|
16
|
-
settings = {
|
17
|
-
tl: { radius: 10 },
|
18
|
-
tr: { radius: 10 },
|
19
|
-
bl: { radius: 10 },
|
20
|
-
br: { radius: 10 },
|
21
|
-
antiAlias: true,
|
22
|
-
autoPad: true,
|
23
|
-
validTags: ["div"]
|
24
|
-
}
|
25
|
-
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
|
-
versionBox.applyCornersToAll();
|
27
|
-
}
|
28
|
-
</script>
|
29
|
-
</head>
|
30
|
-
<body>
|
31
|
-
<div id="main">
|
32
|
-
|
33
|
-
<h1><%= title %></h1>
|
34
|
-
<div class="sidebar">
|
35
|
-
<div id="version" class="clickable" onclick='document.location = "<%= download %>"; return false'>
|
36
|
-
<p>Get Version</p>
|
37
|
-
<a href="<%= download %>" class="numbers"><%= version %></a>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
<%= body %>
|
41
|
-
<p class="coda">
|
42
|
-
<a href="nj@belighted.com">Nicolas Jacobeus</a>, <%= modified.pretty %><br>
|
43
|
-
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
44
|
-
</p>
|
45
|
-
</div>
|
46
|
-
|
47
|
-
<!-- insert site tracking codes here, like Google Urchin -->
|
48
|
-
|
49
|
-
</body>
|
50
|
-
</html>
|