narf 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +163 -0
- data/InstalledFiles +2227 -0
- data/README +124 -0
- data/TODO +88 -0
- data/bin/narftest +17 -0
- data/bug.rb +9 -0
- data/build.rb +314 -0
- data/build.rb~ +314 -0
- data/config.save +12 -0
- data/doc/apache_cgi.txt +17 -0
- data/doc/fastcgi.txt +19 -0
- data/doc/mod_ruby.txt +7 -0
- data/doc/rdoc/classes/Web.html +366 -0
- data/doc/rdoc/classes/Web.src/M000002.html +15 -0
- data/doc/rdoc/classes/Web.src/M000003.html +15 -0
- data/doc/rdoc/classes/Web.src/M000004.html +15 -0
- data/doc/rdoc/classes/Web.src/M000005.html +15 -0
- data/doc/rdoc/classes/Web.src/M000006.html +20 -0
- data/doc/rdoc/classes/Web.src/M000007.html +18 -0
- data/doc/rdoc/classes/Web.src/M000008.html +18 -0
- data/doc/rdoc/classes/Web.src/M000009.html +18 -0
- data/doc/rdoc/classes/Web.src/M000010.html +15 -0
- data/doc/rdoc/classes/Web.src/M000011.html +15 -0
- data/doc/rdoc/classes/Web.src/M000012.html +15 -0
- data/doc/rdoc/classes/Web/CGD.html +173 -0
- data/doc/rdoc/classes/Web/CGD.src/M000037.html +24 -0
- data/doc/rdoc/classes/Web/CGD.src/M000038.html +23 -0
- data/doc/rdoc/classes/Web/CGD.src/M000039.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000040.html +15 -0
- data/doc/rdoc/classes/Web/CGD.src/M000041.html +23 -0
- data/doc/rdoc/classes/Web/CGI.html +946 -0
- data/doc/rdoc/classes/Web/CGI.src/M000051.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000052.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000053.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000054.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000055.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000056.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000057.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000058.html +34 -0
- data/doc/rdoc/classes/Web/CGI.src/M000059.html +22 -0
- data/doc/rdoc/classes/Web/CGI.src/M000060.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000061.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000062.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000063.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000064.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000065.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000066.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000067.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000068.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000069.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000070.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000071.html +13 -0
- data/doc/rdoc/classes/Web/CGI.src/M000072.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000073.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000074.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000075.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000076.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000077.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000078.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000079.html +36 -0
- data/doc/rdoc/classes/Web/CGI.src/M000080.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000081.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000082.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000083.html +17 -0
- data/doc/rdoc/classes/Web/CGI.src/M000084.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000085.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000086.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000087.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000088.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000089.html +16 -0
- data/doc/rdoc/classes/Web/CGI.src/M000090.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000091.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000092.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000093.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000094.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000095.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000096.html +19 -0
- data/doc/rdoc/classes/Web/CGI.src/M000097.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000098.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000099.html +43 -0
- data/doc/rdoc/classes/Web/CGI.src/M000100.html +18 -0
- data/doc/rdoc/classes/Web/CGI.src/M000101.html +20 -0
- data/doc/rdoc/classes/Web/CGI.src/M000102.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000103.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000104.html +15 -0
- data/doc/rdoc/classes/Web/CGI.src/M000105.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000106.html +24 -0
- data/doc/rdoc/classes/Web/CGI.src/M000107.html +22 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +104 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +15 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +15 -0
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +15 -0
- data/doc/rdoc/classes/Web/Mime.html +122 -0
- data/doc/rdoc/classes/Web/Mime.src/M000118.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000119.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000120.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000121.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000122.html +15 -0
- data/doc/rdoc/classes/Web/Mime.src/M000123.html +23 -0
- data/doc/rdoc/classes/Web/Mime.src/M000124.html +15 -0
- data/doc/rdoc/classes/Web/Narflates.html +132 -0
- data/doc/rdoc/classes/Web/Parser.html +219 -0
- data/doc/rdoc/classes/Web/Parser.src/M000013.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000014.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000015.html +21 -0
- data/doc/rdoc/classes/Web/Parser.src/M000016.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000017.html +30 -0
- data/doc/rdoc/classes/Web/Parser.src/M000018.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000019.html +19 -0
- data/doc/rdoc/classes/Web/Parser.src/M000020.html +27 -0
- data/doc/rdoc/classes/Web/Parser.src/M000021.html +15 -0
- data/doc/rdoc/classes/Web/Parser.src/M000022.html +16 -0
- data/doc/rdoc/classes/Web/Parser.src/M000023.html +18 -0
- data/doc/rdoc/classes/Web/Session.html +178 -0
- data/doc/rdoc/classes/Web/Session.src/M000042.html +20 -0
- data/doc/rdoc/classes/Web/Session.src/M000043.html +19 -0
- data/doc/rdoc/classes/Web/Session.src/M000044.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000045.html +21 -0
- data/doc/rdoc/classes/Web/Session.src/M000046.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000047.html +17 -0
- data/doc/rdoc/classes/Web/Session.src/M000048.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000049.html +15 -0
- data/doc/rdoc/classes/Web/Session.src/M000050.html +16 -0
- data/doc/rdoc/classes/Web/Testing.html +474 -0
- data/doc/rdoc/classes/Web/Testing.src/M000024.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000025.html +25 -0
- data/doc/rdoc/classes/Web/Testing.src/M000026.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000027.html +28 -0
- data/doc/rdoc/classes/Web/Testing.src/M000028.html +58 -0
- data/doc/rdoc/classes/Web/Testing.src/M000029.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000030.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000031.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000032.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000033.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000034.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000035.html +15 -0
- data/doc/rdoc/classes/Web/Testing.src/M000036.html +18 -0
- data/doc/rdoc/classes/Web/Upload.html +160 -0
- data/doc/rdoc/classes/Web/Upload.src/M000108.html +25 -0
- data/doc/rdoc/classes/Web/Upload.src/M000109.html +18 -0
- data/doc/rdoc/classes/Web/Upload.src/M000110.html +16 -0
- data/doc/rdoc/classes/Web/Upload.src/M000111.html +16 -0
- data/doc/rdoc/classes/Web/Wiki.html +249 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000112.html +25 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000113.html +15 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000114.html +26 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000115.html +21 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000116.html +18 -0
- data/doc/rdoc/classes/Web/Wiki.src/M000117.html +19 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/README.html +226 -0
- data/doc/rdoc/files/doc/apache_cgi_txt.html +82 -0
- data/doc/rdoc/files/doc/fastcgi_txt.html +82 -0
- data/doc/rdoc/files/doc/mod_ruby_txt.html +62 -0
- data/doc/rdoc/files/doc/webrick_txt.html +79 -0
- data/doc/rdoc/files/examples/examples_rdoc.html +73 -0
- data/doc/rdoc/files/lib/web/cgi_rb.html +75 -0
- data/doc/rdoc/files/lib/web/mime_rb.html +67 -0
- data/doc/rdoc/files/lib/web/parser_rb.html +73 -0
- data/doc/rdoc/files/lib/web/session_rb.html +73 -0
- data/doc/rdoc/files/lib/web/template_rb.html +73 -0
- data/doc/rdoc/files/lib/web/testing_rb.html +67 -0
- data/doc/rdoc/files/lib/web/upload_rb.html +73 -0
- data/doc/rdoc/files/lib/web/wiki_rb.html +79 -0
- data/doc/rdoc/files/lib/web_rb.html +116 -0
- data/doc/rdoc/files/lib/web_rb.src/M000001.html +15 -0
- data/doc/rdoc/fr_class_index.html +47 -0
- data/doc/rdoc/fr_file_index.html +52 -0
- data/doc/rdoc/fr_method_index.html +158 -0
- data/doc/rdoc/index.html +22 -0
- data/doc/rdoc/rdoc-style.css +99 -0
- data/doc/webrick.txt +23 -0
- data/examples/admin.rb +8 -0
- data/examples/admin.rb~ +5 -0
- data/examples/cookbook.rdoc +247 -0
- data/examples/cookbook.rdoc~ +238 -0
- data/examples/examples.rdoc +19 -0
- data/examples/examples.rdoc~ +17 -0
- data/examples/hello.world.rb +5 -0
- data/examples/hello.world.rb~ +3 -0
- data/examples/session.rb +34 -0
- data/examples/session.rb~ +31 -0
- data/examples/test/test.hello.world.rb +9 -0
- data/examples/test/test.hello.world.rb~ +9 -0
- data/examples/test/test.session.rb +37 -0
- data/examples/test/test.session.rb~ +37 -0
- data/examples/webunit/COPYING +340 -0
- data/examples/webunit/Makefile +14 -0
- data/examples/webunit/TIPS-ja.html +126 -0
- data/examples/webunit/TIPS-ja.rd +154 -0
- data/examples/webunit/TODO-ja.html +35 -0
- data/examples/webunit/TODO-ja.rd +28 -0
- data/examples/webunit/changes.rd +185 -0
- data/examples/webunit/conv/digit-0.cgi +40 -0
- data/examples/webunit/conv/digit-0.rb +21 -0
- data/examples/webunit/conv/digit-1.cgi +44 -0
- data/examples/webunit/conv/digit-1.rb +17 -0
- data/examples/webunit/conv/digit.cgi +59 -0
- data/examples/webunit/conv/digit.rb +23 -0
- data/examples/webunit/conv/test_digit-0.rb +16 -0
- data/examples/webunit/conv/test_digit-1.rb +19 -0
- data/examples/webunit/conv/test_digit.rb +26 -0
- data/examples/webunit/conv/test_digit_view-0.rb +76 -0
- data/examples/webunit/conv/test_digit_view-1.rb +102 -0
- data/examples/webunit/conv/test_digit_view.rb +134 -0
- data/examples/webunit/example.rd +37 -0
- data/examples/webunit/index-en.html +263 -0
- data/examples/webunit/index-en.rd +60 -0
- data/examples/webunit/index-ja.html +263 -0
- data/examples/webunit/index-ja.rd +60 -0
- data/examples/wiki.rb +7 -0
- data/examples/wiki.rb~ +5 -0
- data/install.rb +1022 -0
- data/lib/web.rb +290 -0
- data/lib/web.rb~ +290 -0
- data/lib/web/#assertinclude.rb# +110 -0
- data/lib/web/action.rb +82 -0
- data/lib/web/assertinclude.rb +110 -0
- data/lib/web/assertinclude.rb~ +110 -0
- data/lib/web/buffer.rb +20 -0
- data/lib/web/cgi.rb +641 -0
- data/lib/web/cgi.rb~ +640 -0
- data/lib/web/formreader.rb +317 -0
- data/lib/web/forms.rb +104 -0
- data/lib/web/htmlparser/html-parser.rb +429 -0
- data/lib/web/htmlparser/html-parser.rb~ +429 -0
- data/lib/web/htmlparser/sgml-parser.rb +332 -0
- data/lib/web/htmlparser/sgml-parser.rb~ +332 -0
- data/lib/web/htmltools/element.rb +296 -0
- data/lib/web/htmltools/element.rb~ +296 -0
- data/lib/web/htmltools/stparser.rb +276 -0
- data/lib/web/htmltools/stparser.rb~ +276 -0
- data/lib/web/htmltools/tags.rb +286 -0
- data/lib/web/htmltools/tags.rb~ +286 -0
- data/lib/web/htmltools/tree.rb +139 -0
- data/lib/web/htmltools/tree.rb~ +139 -0
- data/lib/web/htmltools/xmltree.rb +160 -0
- data/lib/web/htmltools/xmltree.rb~ +160 -0
- data/lib/web/htmltools/xpath.rb +71 -0
- data/lib/web/htmltools/xpath.rb~ +71 -0
- data/lib/web/mime.rb +82 -0
- data/lib/web/parser.rb +266 -0
- data/lib/web/parser.rb~ +266 -0
- data/lib/web/request.rb~ +238 -0
- data/lib/web/resources/mime.types +483 -0
- data/lib/web/runner.rb +26 -0
- data/lib/web/runner.rb~ +26 -0
- data/lib/web/sapi/fastcgi.rb +26 -0
- data/lib/web/sapi/fastcgi.rb~ +25 -0
- data/lib/web/sapi/mod_ruby.rb +46 -0
- data/lib/web/sapi/mod_ruby.rb~ +46 -0
- data/lib/web/sapi/webrick.rb +91 -0
- data/lib/web/sapi/webrick.rb~ +89 -0
- data/lib/web/session.rb +75 -0
- data/lib/web/session.rb~ +75 -0
- data/lib/web/simpledispatcher.rb +155 -0
- data/lib/web/strscanparser.rb +24 -0
- data/lib/web/tagparser.rb +96 -0
- data/lib/web/tagparser.rb~ +96 -0
- data/lib/web/template.rb +613 -0
- data/lib/web/template.rb~ +613 -0
- data/lib/web/testing.rb +546 -0
- data/lib/web/testing.rb~ +546 -0
- data/lib/web/traceoutput.rb +32 -0
- data/lib/web/unit.rb +27 -0
- data/lib/web/unit/assert.rb +154 -0
- data/lib/web/unit/converter.rb +148 -0
- data/lib/web/unit/cookie.rb +120 -0
- data/lib/web/unit/domwalker.rb +187 -0
- data/lib/web/unit/exception.rb +15 -0
- data/lib/web/unit/form.rb +118 -0
- data/lib/web/unit/formatter.rb +314 -0
- data/lib/web/unit/frame.rb +39 -0
- data/lib/web/unit/html-parser.rb +432 -0
- data/lib/web/unit/htmlelem.rb +124 -0
- data/lib/web/unit/htmlrepair.rb +116 -0
- data/lib/web/unit/htmlsplit.rb +840 -0
- data/lib/web/unit/image.rb +27 -0
- data/lib/web/unit/jscript.rb +32 -0
- data/lib/web/unit/link.rb +35 -0
- data/lib/web/unit/params.rb +323 -0
- data/lib/web/unit/parser.rb +226 -0
- data/lib/web/unit/resources/assert.html +101 -0
- data/lib/web/unit/resources/auth/index.html +5 -0
- data/lib/web/unit/resources/badtags.html +7 -0
- data/lib/web/unit/resources/cookie.cgi +33 -0
- data/lib/web/unit/resources/document.xml +13 -0
- data/lib/web/unit/resources/form.html +150 -0
- data/lib/web/unit/resources/frame-0.html +10 -0
- data/lib/web/unit/resources/frame-1.html +10 -0
- data/lib/web/unit/resources/frame.html +10 -0
- data/lib/web/unit/resources/image.html +17 -0
- data/lib/web/unit/resources/images/x.gif +0 -0
- data/lib/web/unit/resources/images/y.gif +0 -0
- data/lib/web/unit/resources/jscript-0.html +10 -0
- data/lib/web/unit/resources/jscript-1.html +10 -0
- data/lib/web/unit/resources/jscript.html +19 -0
- data/lib/web/unit/resources/link.html +19 -0
- data/lib/web/unit/resources/multipart.cgi +28 -0
- data/lib/web/unit/resources/multipart.html +74 -0
- data/lib/web/unit/resources/params.html +65 -0
- data/lib/web/unit/resources/redirect.cgi +13 -0
- data/lib/web/unit/resources/response.html +67 -0
- data/lib/web/unit/resources/simple.cgi +14 -0
- data/lib/web/unit/resources/stock.cgi +35 -0
- data/lib/web/unit/resources/table.html +83 -0
- data/lib/web/unit/response.rb +469 -0
- data/lib/web/unit/response.rb~ +461 -0
- data/lib/web/unit/runtest.rb +44 -0
- data/lib/web/unit/sgml-parser.rb +336 -0
- data/lib/web/unit/table.rb +150 -0
- data/lib/web/unit/testcase.rb +49 -0
- data/lib/web/unit/ui/cui/testrunner.rb +52 -0
- data/lib/web/unit/ui/cui/testrunner.rb~ +50 -0
- data/lib/web/unit/utils.rb +70 -0
- data/lib/web/unit/webunit.rb +28 -0
- data/lib/web/upload.rb +55 -0
- data/lib/web/upload.rb~ +262 -0
- data/lib/web/wiki.rb +506 -0
- data/lib/web/wiki.rb~ +506 -0
- data/lib/web/wiki/linker.rb +72 -0
- data/lib/web/wiki/linker.rb~ +72 -0
- data/lib/web/wiki/mime.rb~ +68 -0
- data/lib/web/wiki/page.rb +192 -0
- data/lib/web/wiki/page.rb~ +192 -0
- data/lib/web/wiki/resources/#edit.html# +65 -0
- data/lib/web/wiki/resources/admin.html +13 -0
- data/lib/web/wiki/resources/admin.html~ +13 -0
- data/lib/web/wiki/resources/asset_history.html +3 -0
- data/lib/web/wiki/resources/basic.html +1 -0
- data/lib/web/wiki/resources/default-content_editor.html +1 -0
- data/lib/web/wiki/resources/default-content_editor.html~ +1 -0
- data/lib/web/wiki/resources/edit.html +1 -1
- data/lib/web/wiki/resources/edit.html~ +1 -1
- data/lib/web/wiki/resources/ekit-content_editor.html +1 -0
- data/lib/web/wiki/resources/home.html +10 -0
- data/lib/web/wiki/resources/home.html~ +10 -0
- data/lib/web/wiki/resources/htmlarea/ChangeLog +1185 -0
- data/lib/web/wiki/resources/htmlarea/dialog.js +72 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +16 -0
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +158 -0
- data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +95 -0
- data/lib/web/wiki/resources/htmlarea/examples/core.html +184 -0
- data/lib/web/wiki/resources/htmlarea/examples/css.html +88 -0
- data/lib/web/wiki/resources/htmlarea/examples/custom.css +29 -0
- data/lib/web/wiki/resources/htmlarea/examples/full-page.html +75 -0
- data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +248 -0
- data/lib/web/wiki/resources/htmlarea/examples/index.html +40 -0
- data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +132 -0
- data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +116 -0
- data/lib/web/wiki/resources/htmlarea/examples/test.cgi +21 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.css +180 -0
- data/lib/web/wiki/resources/htmlarea/htmlarea.js +2175 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/index.html +199 -0
- data/lib/web/wiki/resources/htmlarea/lang/b5.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/cz.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/da.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/de.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ee.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/el.js +75 -0
- data/lib/web/wiki/resources/htmlarea/lang/en.js +88 -0
- data/lib/web/wiki/resources/htmlarea/lang/es.js +51 -0
- data/lib/web/wiki/resources/htmlarea/lang/fi.js +46 -0
- data/lib/web/wiki/resources/htmlarea/lang/fr.js +61 -0
- data/lib/web/wiki/resources/htmlarea/lang/gb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/he.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/it.js +54 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/lt.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/lv.js +55 -0
- data/lib/web/wiki/resources/htmlarea/lang/nb.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/lang/no.js +79 -0
- data/lib/web/wiki/resources/htmlarea/lang/pl.js +36 -0
- data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +37 -0
- data/lib/web/wiki/resources/htmlarea/lang/ro.js +80 -0
- data/lib/web/wiki/resources/htmlarea/lang/ru.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/se.js +38 -0
- data/lib/web/wiki/resources/htmlarea/lang/si.js +63 -0
- data/lib/web/wiki/resources/htmlarea/lang/vn.js +51 -0
- data/lib/web/wiki/resources/htmlarea/license.txt +30 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +116 -0
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +2 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +416 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +59 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +57 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +64 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +143 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +25 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +131 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +89 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +38 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +28 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +37 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +114 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +210 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +10 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +122 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +397 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +79 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +66 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +63 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +81 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +91 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +90 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +1160 -0
- data/lib/web/wiki/resources/htmlarea/popupdiv.js +369 -0
- data/lib/web/wiki/resources/htmlarea/popups/about.html +378 -0
- data/lib/web/wiki/resources/htmlarea/popups/blank.html +2 -0
- data/lib/web/wiki/resources/htmlarea/popups/custom2.html +35 -0
- data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +16 -0
- data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +133 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +191 -0
- data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +174 -0
- data/lib/web/wiki/resources/htmlarea/popups/link.html +142 -0
- data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +131 -0
- data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +206 -0
- data/lib/web/wiki/resources/htmlarea/popups/popup.js +109 -0
- data/lib/web/wiki/resources/htmlarea/popups/select_color.html +347 -0
- data/lib/web/wiki/resources/htmlarea/popupwin.js +139 -0
- data/lib/web/wiki/resources/htmlarea/reference.html +523 -0
- data/lib/web/wiki/resources/htmlarea/release-notes.html +165 -0
- data/lib/web/wiki/resources/ie-content_editor.html +1 -0
- data/lib/web/wiki/resources/ie-content_editor.js +196 -0
- data/lib/web/wiki/resources/illustration.html +1 -0
- data/lib/web/wiki/resources/illustration.html~ +1 -0
- data/lib/web/wiki/resources/images.html +1 -0
- data/lib/web/wiki/resources/index.html +4 -0
- data/lib/web/wiki/resources/index.html~ +4 -0
- data/lib/web/wiki/resources/more_news.html +5 -0
- data/lib/web/wiki/resources/more_news.html~ +5 -0
- data/lib/web/wiki/resources/more_news_rss_0.91.html +23 -0
- data/lib/web/wiki/resources/narf-logo.gif +0 -0
- data/lib/web/wiki/resources/page_history.html +19 -0
- data/lib/web/wiki/resources/page_history.html~ +19 -0
- data/lib/web/wiki/resources/template.html +13 -0
- data/lib/web/wiki/resources/template.html~ +13 -0
- data/lib/web/wiki/resources/test_upload.gif +0 -0
- data/lib/web/wiki/resources/text-styles.css +1 -0
- data/lib/web/writableio.rb +33 -0
- data/narf-0.5.1.gem +0 -0
- data/narf.gemspec +40 -0
- data/narf.gemspec~ +52 -0
- data/pre-setup.rb +5 -0
- data/sapi/apache_cgi/INSTALL.txt~ +9 -0
- data/sapi/apache_cgi/README~ +0 -0
- data/sapi/apache_cgi/src/narf.c +13 -0
- data/sapi/fastcgi/INSTALL.txt~ +17 -0
- data/sapi/mod_ruby/INSTALL.txt~ +5 -0
- data/sapi/webrick/INSTALL.txt~ +21 -0
- data/sapi/webrick/run_webrick.rb~ +16 -0
- data/scripts/dump.rb +14 -0
- data/scripts/makedist.rb +49 -0
- data/scripts/upload.html +5 -0
- data/scripts/uri.rb +41 -0
- data/scripts/uri/common.rb +432 -0
- data/scripts/uri/ftp.rb +149 -0
- data/scripts/uri/generic.rb +1106 -0
- data/scripts/uri/http.rb +76 -0
- data/scripts/uri/https.rb +26 -0
- data/scripts/uri/ldap.rb +238 -0
- data/scripts/uri/mailto.rb +260 -0
- data/scripts/urireg.rb +174 -0
- data/test/bufferedtestrunner.rb +112 -0
- data/test/mod_ruby_stub.rb +39 -0
- data/test/mod_ruby_stub.rb~ +38 -0
- data/test/stringio.rb +2 -0
- data/test/test.action.rb +142 -0
- data/test/test.action.rb~ +142 -0
- data/test/test.app.rb +0 -0
- data/test/test.assertinclude.rb +109 -0
- data/test/test.assertinclude.rb~ +109 -0
- data/test/test.formreader-2.0.rb +352 -0
- data/test/test.formreader.rb +465 -0
- data/test/test.mime-type.rb +23 -0
- data/test/test.narf.cgi.rb +101 -0
- data/test/test.narf.cgi.rb~ +105 -0
- data/test/test.request.rb +328 -0
- data/test/test.request.rb~ +318 -0
- data/test/test.response.rb +565 -0
- data/test/test.response.rb~ +556 -0
- data/test/test.session.rb +50 -0
- data/test/test.simpledispatcher.rb +188 -0
- data/test/test.tagparser.rb +65 -0
- data/test/test.template.rb +831 -0
- data/test/test.template.rb~ +832 -0
- data/test/test.testing2.rb +341 -0
- data/test/test.web.test.rb +463 -0
- data/test/test.web.test.rb~ +461 -0
- data/test/testfiles/basictemplate.tpl +1 -0
- data/test/testfiles/explorer5.multipart.data +9 -0
- data/test/testfiles/form.html +7 -0
- data/test/testfiles/mozilla.multipart.data +9 -0
- data/test/testfiles/netscape4.multipart.data +9 -0
- data/test/testfiles/pic hydra.png +1 -0
- data/test/testfiles/post.data +1 -0
- data/test/testfiles/print.text +1 -0
- data/test/testfiles/text +1 -0
- data/test/webunit/dont_get_it.test_webunit.rb +27 -0
- data/test/webunit/ref +38 -0
- data/test/webunit/resources/uploadfile1.txt +1 -0
- data/test/webunit/resources/uploadfile2.txt +1 -0
- data/test/webunit/test_assert.rb +169 -0
- data/test/webunit/test_cookie.rb +128 -0
- data/test/webunit/test_cookie.rb~ +128 -0
- data/test/webunit/test_domwalker.rb +83 -0
- data/test/webunit/test_form.rb +43 -0
- data/test/webunit/test_form.rb~ +43 -0
- data/test/webunit/test_frame.rb +43 -0
- data/test/webunit/test_htmlelem.rb +75 -0
- data/test/webunit/test_image.rb +46 -0
- data/test/webunit/test_jscript.rb +58 -0
- data/test/webunit/test_link.rb +87 -0
- data/test/webunit/test_multipart.rb +53 -0
- data/test/webunit/test_multipart.rb~ +53 -0
- data/test/webunit/test_params.rb +212 -0
- data/test/webunit/test_params.rb~ +211 -0
- data/test/webunit/test_parser.rb +31 -0
- data/test/webunit/test_response.rb +145 -0
- data/test/webunit/test_response.rb~ +145 -0
- data/test/webunit/test_site/assert.html +101 -0
- data/test/webunit/test_site/assert.html~ +1 -0
- data/test/webunit/test_site/auth/index.html +5 -0
- data/test/webunit/test_site/auth/index.html~ +1 -0
- data/test/webunit/test_site/badtags.html +7 -0
- data/test/webunit/test_site/badtags.html~ +1 -0
- data/test/webunit/test_site/cookie.cgi +37 -0
- data/test/webunit/test_site/cookie.cgi~ +35 -0
- data/test/webunit/test_site/document.xml +13 -0
- data/test/webunit/test_site/document.xml~ +1 -0
- data/test/webunit/test_site/form.html +150 -0
- data/test/webunit/test_site/form.html~ +1 -0
- data/test/webunit/test_site/frame-0.html +10 -0
- data/test/webunit/test_site/frame-0.html~ +1 -0
- data/test/webunit/test_site/frame-1.html +10 -0
- data/test/webunit/test_site/frame-1.html~ +1 -0
- data/test/webunit/test_site/frame.html +10 -0
- data/test/webunit/test_site/frame.html~ +1 -0
- data/test/webunit/test_site/image.html +17 -0
- data/test/webunit/test_site/image.html~ +1 -0
- data/test/webunit/test_site/images/x.gif +0 -0
- data/test/webunit/test_site/images/y.gif +0 -0
- data/test/webunit/test_site/include.cgi~ +10 -0
- data/test/webunit/test_site/jscript-0.html +10 -0
- data/test/webunit/test_site/jscript-0.html~ +1 -0
- data/test/webunit/test_site/jscript-1.html +10 -0
- data/test/webunit/test_site/jscript-1.html~ +1 -0
- data/test/webunit/test_site/jscript.html +19 -0
- data/test/webunit/test_site/jscript.html~ +1 -0
- data/test/webunit/test_site/link.html +19 -0
- data/test/webunit/test_site/link.html~ +1 -0
- data/test/webunit/test_site/multipart.cgi +27 -0
- data/test/webunit/test_site/multipart.cgi~ +25 -0
- data/test/webunit/test_site/multipart.html +74 -0
- data/test/webunit/test_site/multipart.html~ +1 -0
- data/test/webunit/test_site/params.html +65 -0
- data/test/webunit/test_site/params.html~ +1 -0
- data/test/webunit/test_site/redirect.cgi +14 -0
- data/test/webunit/test_site/redirect.cgi~ +14 -0
- data/test/webunit/test_site/response.html +67 -0
- data/test/webunit/test_site/response.html~ +1 -0
- data/test/webunit/test_site/simple.cgi +17 -0
- data/test/webunit/test_site/simple.cgi~ +17 -0
- data/test/webunit/test_site/stock.cgi +36 -0
- data/test/webunit/test_site/stock.cgi~ +34 -0
- data/test/webunit/test_site/table.html +83 -0
- data/test/webunit/test_site/table.html~ +1 -0
- data/test/webunit/test_site/test.cgi~ +25 -0
- data/test/webunit/test_table.rb +70 -0
- data/test/webunit/test_utils.rb +107 -0
- data/test/wiki/test.history.rb +277 -0
- data/test/wiki/test.history.rb~ +254 -0
- data/test/wiki/test.illustration_page.rb +287 -0
- data/test/wiki/test.illustration_page.rb~ +287 -0
- data/test/wiki/test.linker.rb +197 -0
- data/test/wiki/test.tarpit.rb +40 -0
- data/test/wiki/test.wiki.rb +295 -0
- data/test/wiki/test.wiki.rb~ +295 -0
- data/test/wikitestroot/big_image.jpg +0 -0
- data/test/wikitestroot/mime.types +483 -0
- data/test/wikitestroot/test_upload.gif +0 -0
- data/vandals.test.txt +3 -0
- metadata +768 -0
@@ -0,0 +1,139 @@
|
|
1
|
+
// (c) dynarch.com 2003-2004
|
2
|
+
// Distributed under the same terms as HTMLArea itself.
|
3
|
+
|
4
|
+
function PopupWin(editor, title, handler, initFunction) {
|
5
|
+
this.editor = editor;
|
6
|
+
this.handler = handler;
|
7
|
+
var dlg = window.open("", "__ha_dialog",
|
8
|
+
"toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
|
9
|
+
"scrollbars=no,resizable=no");
|
10
|
+
this.window = dlg;
|
11
|
+
var doc = dlg.document;
|
12
|
+
this.doc = doc;
|
13
|
+
var self = this;
|
14
|
+
|
15
|
+
var base = document.baseURI || document.URL;
|
16
|
+
if (base && base.match(/(.*)\/([^\/]+)/)) {
|
17
|
+
base = RegExp.$1 + "/";
|
18
|
+
}
|
19
|
+
if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
|
20
|
+
// _editor_url doesn't start with '/' which means it's relative
|
21
|
+
// FIXME: there's a problem here, it could be http:// which
|
22
|
+
// doesn't start with slash but it's not relative either.
|
23
|
+
base += _editor_url;
|
24
|
+
} else
|
25
|
+
base = _editor_url;
|
26
|
+
if (!/\/$/.test(base)) {
|
27
|
+
// base does not end in slash, add it now
|
28
|
+
base += '/';
|
29
|
+
}
|
30
|
+
this.baseURL = base;
|
31
|
+
|
32
|
+
doc.open();
|
33
|
+
var html = "<html><head><title>" + title + "</title>\n";
|
34
|
+
// html += "<base href='" + base + "htmlarea.js' />\n";
|
35
|
+
html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
|
36
|
+
html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
|
37
|
+
doc.write(html);
|
38
|
+
doc.close();
|
39
|
+
|
40
|
+
// sometimes I Hate Mozilla... ;-(
|
41
|
+
function init2() {
|
42
|
+
var body = doc.body;
|
43
|
+
if (!body) {
|
44
|
+
setTimeout(init2, 25);
|
45
|
+
return false;
|
46
|
+
}
|
47
|
+
dlg.title = title;
|
48
|
+
doc.documentElement.style.padding = "0px";
|
49
|
+
doc.documentElement.style.margin = "0px";
|
50
|
+
var content = doc.createElement("div");
|
51
|
+
content.className = "content";
|
52
|
+
self.content = content;
|
53
|
+
body.appendChild(content);
|
54
|
+
self.element = body;
|
55
|
+
initFunction(self);
|
56
|
+
dlg.focus();
|
57
|
+
};
|
58
|
+
init2();
|
59
|
+
};
|
60
|
+
|
61
|
+
PopupWin.prototype.callHandler = function() {
|
62
|
+
var tags = ["input", "textarea", "select"];
|
63
|
+
var params = new Object();
|
64
|
+
for (var ti in tags) {
|
65
|
+
var tag = tags[ti];
|
66
|
+
var els = this.content.getElementsByTagName(tag);
|
67
|
+
for (var j = 0; j < els.length; ++j) {
|
68
|
+
var el = els[j];
|
69
|
+
var val = el.value;
|
70
|
+
if (el.tagName.toLowerCase() == "input") {
|
71
|
+
if (el.type == "checkbox") {
|
72
|
+
val = el.checked;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
params[el.name] = val;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
this.handler(this, params);
|
79
|
+
return false;
|
80
|
+
};
|
81
|
+
|
82
|
+
PopupWin.prototype.close = function() {
|
83
|
+
this.window.close();
|
84
|
+
};
|
85
|
+
|
86
|
+
PopupWin.prototype.addButtons = function() {
|
87
|
+
var self = this;
|
88
|
+
var div = this.doc.createElement("div");
|
89
|
+
this.content.appendChild(div);
|
90
|
+
div.className = "buttons";
|
91
|
+
for (var i = 0; i < arguments.length; ++i) {
|
92
|
+
var btn = arguments[i];
|
93
|
+
var button = this.doc.createElement("button");
|
94
|
+
div.appendChild(button);
|
95
|
+
button.innerHTML = HTMLArea.I18N.buttons[btn];
|
96
|
+
switch (btn) {
|
97
|
+
case "ok":
|
98
|
+
button.onclick = function() {
|
99
|
+
self.callHandler();
|
100
|
+
self.close();
|
101
|
+
return false;
|
102
|
+
};
|
103
|
+
break;
|
104
|
+
case "cancel":
|
105
|
+
button.onclick = function() {
|
106
|
+
self.close();
|
107
|
+
return false;
|
108
|
+
};
|
109
|
+
break;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
};
|
113
|
+
|
114
|
+
PopupWin.prototype.showAtElement = function() {
|
115
|
+
var self = this;
|
116
|
+
// Mozilla needs some time to realize what's goin' on..
|
117
|
+
setTimeout(function() {
|
118
|
+
var w = self.content.offsetWidth + 4;
|
119
|
+
var h = self.content.offsetHeight + 4;
|
120
|
+
// size to content -- that's fuckin' buggy in all fuckin' browsers!!!
|
121
|
+
// so that we set a larger size for the dialog window and then center
|
122
|
+
// the element inside... phuck!
|
123
|
+
|
124
|
+
// center...
|
125
|
+
var el = self.content;
|
126
|
+
var s = el.style;
|
127
|
+
// s.width = el.offsetWidth + "px";
|
128
|
+
// s.height = el.offsetHeight + "px";
|
129
|
+
s.position = "absolute";
|
130
|
+
s.left = (w - el.offsetWidth) / 2 + "px";
|
131
|
+
s.top = (h - el.offsetHeight) / 2 + "px";
|
132
|
+
if (HTMLArea.is_gecko) {
|
133
|
+
self.window.innerWidth = w;
|
134
|
+
self.window.innerHeight = h;
|
135
|
+
} else {
|
136
|
+
self.window.resizeTo(w + 8, h + 35);
|
137
|
+
}
|
138
|
+
}, 25);
|
139
|
+
};
|
@@ -0,0 +1,523 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
|
2
|
+
<html> <head>
|
3
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
4
|
+
<title>HTMLArea-3.0 Reference</title>
|
5
|
+
|
6
|
+
<style type="text/css">
|
7
|
+
@import url(htmlarea.css);
|
8
|
+
body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
|
9
|
+
h1, h2 { font-family:tahoma,sans-serif; }
|
10
|
+
h1 { border-bottom: 2px solid #000; }
|
11
|
+
h2 { border-bottom: 1px solid #aaa; }
|
12
|
+
h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
|
13
|
+
h4 { font-size: 90%; margin-left: 1em; }
|
14
|
+
acronym { border-bottom: 1px dotted #063; color: #063; }
|
15
|
+
p { margin-left: 2em; margin-top: 0.3em; }
|
16
|
+
li p { margin-left: 0px; }
|
17
|
+
.abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
|
18
|
+
li { margin-left: 2em; }
|
19
|
+
em { color: #042; }
|
20
|
+
a { color: #00f; }
|
21
|
+
a:hover { color: #f00; }
|
22
|
+
a:active { color: #f80; }
|
23
|
+
span.browser { font-weight: bold; color: #864; }
|
24
|
+
.fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
|
25
|
+
padding: 5px; text-align: center; }
|
26
|
+
.code {
|
27
|
+
background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
|
28
|
+
font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
|
29
|
+
}
|
30
|
+
.note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
|
31
|
+
.warning { color: #a00; }
|
32
|
+
|
33
|
+
.string {
|
34
|
+
color: #06c;
|
35
|
+
} /* font-lock-string-face */
|
36
|
+
.comment {
|
37
|
+
color: #840;
|
38
|
+
} /* font-lock-comment-face */
|
39
|
+
.variable-name {
|
40
|
+
color: #000;
|
41
|
+
} /* font-lock-variable-name-face */
|
42
|
+
.type {
|
43
|
+
color: #008;
|
44
|
+
font-weight: bold;
|
45
|
+
} /* font-lock-type-face */
|
46
|
+
.reference {
|
47
|
+
color: #048;
|
48
|
+
} /* font-lock-reference-face */
|
49
|
+
.preprocessor {
|
50
|
+
color: #808;
|
51
|
+
} /* font-lock-preprocessor-face */
|
52
|
+
.keyword {
|
53
|
+
color: #00f;
|
54
|
+
font-weight: bold;
|
55
|
+
} /* font-lock-keyword-face */
|
56
|
+
.function-name {
|
57
|
+
color: #044;
|
58
|
+
} /* font-lock-function-name-face */
|
59
|
+
.html-tag {
|
60
|
+
font-weight: bold;
|
61
|
+
} /* html-tag-face */
|
62
|
+
.html-helper-italic {
|
63
|
+
font-style: italic;
|
64
|
+
} /* html-helper-italic-face */
|
65
|
+
.html-helper-bold {
|
66
|
+
font-weight: bold;
|
67
|
+
} /* html-helper-bold-face */
|
68
|
+
|
69
|
+
</style>
|
70
|
+
|
71
|
+
<script type="text/javascript">
|
72
|
+
_editor_url = './';
|
73
|
+
_editor_lang = 'en';
|
74
|
+
</script>
|
75
|
+
<script type="text/javascript" src="htmlarea.js"></script>
|
76
|
+
<script type="text/javascript" src="dialog.js"></script>
|
77
|
+
<script tyle="text/javascript" src="lang/en.js"></script>
|
78
|
+
|
79
|
+
</head>
|
80
|
+
|
81
|
+
<body onload="HTMLArea.replace('TA')">
|
82
|
+
|
83
|
+
|
84
|
+
<h1>HTMLArea-3.0 Documentation</h1>
|
85
|
+
|
86
|
+
<div class="abstract" style="color: red; font-weight: bold">
|
87
|
+
|
88
|
+
This documentation contains valid information, but is outdated in the
|
89
|
+
terms that it does not covers all the features of HTMLArea. A new
|
90
|
+
documentation project will be started, based on LaTeX.
|
91
|
+
|
92
|
+
</div>
|
93
|
+
|
94
|
+
|
95
|
+
<h2>Introduction</h2>
|
96
|
+
|
97
|
+
<h3>What is HTMLArea?</h3>
|
98
|
+
|
99
|
+
<p>HTMLArea is a free <acronym title="What You See Is What You Get"
|
100
|
+
>WYSIWYG</acronym> editor replacement for <code><textarea></code>
|
101
|
+
fields. By adding a few simple lines of JavaScript code to your web page
|
102
|
+
you can replace a regular textarea with a rich text editor that lets your
|
103
|
+
users do the following:</p>
|
104
|
+
|
105
|
+
<ul>
|
106
|
+
<li>Format text to be bold, italicized, or underlined.</li>
|
107
|
+
<li>Change the face, size, style and color.</li>
|
108
|
+
<li>Left, center, or right-justify paragraphs.</li>
|
109
|
+
<li>Make bulleted or numbered lists.</li>
|
110
|
+
<li>Indent or un-indent paragraphs.</li>
|
111
|
+
<li>Insert a horizontal line.</li>
|
112
|
+
<li>Insert hyperlinks and images.</li>
|
113
|
+
<li>View the raw HTML source of what they're editing.</li>
|
114
|
+
<li>and much more...</li>
|
115
|
+
</ul>
|
116
|
+
|
117
|
+
<p>Some of the interesting features of HTMLArea that set's it apart from
|
118
|
+
other web based WYSIWYG editors are as follows:</p>
|
119
|
+
|
120
|
+
<ul>
|
121
|
+
<li>It's lightweight, fast loading and can transform a regular textarea
|
122
|
+
into a rich-text editor with a single line of JavaScript.</li>
|
123
|
+
<li>Generates clean, valid HTML.</li>
|
124
|
+
<li>It degrades gracefully to older or non-supported browsers
|
125
|
+
(they get the original textarea field).</li>
|
126
|
+
<li>It's free and can be incorporated into any free or commercial
|
127
|
+
program.</li>
|
128
|
+
<li>It works with any server-side languages (ASP, PHP, Perl, Java,
|
129
|
+
etc).</li>
|
130
|
+
<li>It's written in JavaScript and can be easily viewed, modified or
|
131
|
+
extended.</li>
|
132
|
+
<li>It remembers entered content when a user navigates away and then hits
|
133
|
+
"back" in their browser.</li>
|
134
|
+
<li>Since it replaces existing textareas it doesn't require a lot of code
|
135
|
+
to add it to your pages (just one line).</li>
|
136
|
+
<li>Did we mention it was free? ;-)</li>
|
137
|
+
</ul>
|
138
|
+
|
139
|
+
<h3>Is it really free? What's the catch?</h3>
|
140
|
+
|
141
|
+
<p>Yes! It's really free. You can use it, modify it, distribute it with your
|
142
|
+
software, or do just about anything you like with it.</p>
|
143
|
+
|
144
|
+
<h3>What are the browser requirements?</h3>
|
145
|
+
|
146
|
+
<p>HTMLArea requires <span class="browser"><a
|
147
|
+
href="http://www.microsoft.com/ie">Internet Explorer</a> >= 5.5</span>
|
148
|
+
(Windows only), or <span class="browser"><a
|
149
|
+
href="http://mozilla.org">Mozilla</a> >= 1.3-Beta</span> on any platform.
|
150
|
+
Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
|
151
|
+
also work, provided that Gecko version is at least the one included in
|
152
|
+
Mozilla-1.3-Beta (for example, <a
|
153
|
+
href="http://galeon.sf.net">Galeon-1.2.8</a>). However, it degrades
|
154
|
+
gracefully to other browsers. They will get a regular textarea field
|
155
|
+
instead of a WYSIWYG editor.</p>
|
156
|
+
|
157
|
+
<h3>Can I see an example of what it looks like?</h3>
|
158
|
+
|
159
|
+
<p>Just make sure you're using one of the browsers mentioned above and see
|
160
|
+
below.</p>
|
161
|
+
|
162
|
+
<form onsubmit="return false;">
|
163
|
+
<textarea id="TA" style="width: 100%; height: 15em;">
|
164
|
+
<p>Here is some sample text in textarea that's been transformed with <font
|
165
|
+
color="#0000CC"><b>HTMLArea</b></font>.<br />
|
166
|
+
You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>. You can change the
|
167
|
+
<font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
|
168
|
+
And lots more...</p>
|
169
|
+
|
170
|
+
<p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
|
171
|
+
today!</u></b></font><br /></p>
|
172
|
+
</textarea>
|
173
|
+
</form>
|
174
|
+
|
175
|
+
<h3>Where can I find out more info, download the latest version and talk to
|
176
|
+
other HTMLArea users?</h3>
|
177
|
+
|
178
|
+
<p>You can find out more about HTMLArea and download the latest version on
|
179
|
+
the <a href="http://dynarch.com/htmlarea/">HTMLArea
|
180
|
+
homepage</a> and you can talk to other HTMLArea users and post any comments
|
181
|
+
or suggestions you have in the <a
|
182
|
+
href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
|
183
|
+
>HTMLArea forum</a>.</p>
|
184
|
+
|
185
|
+
<h2>Keyboard shortcuts</h2>
|
186
|
+
|
187
|
+
<p>The editor provides the following key combinations:</p>
|
188
|
+
|
189
|
+
<ul>
|
190
|
+
<li>CTRL-A -- select all</li>
|
191
|
+
<li>CTRL-B -- bold</li>
|
192
|
+
<li>CTRL-I -- italic</li>
|
193
|
+
<li>CTRL-U -- underline</li>
|
194
|
+
<li>CTRL-S -- strikethrough</li>
|
195
|
+
<li>CTRL-L -- justify left</li>
|
196
|
+
<li>CTRL-E -- justify center</li>
|
197
|
+
<li>CTRL-R -- justify right</li>
|
198
|
+
<li>CTRL-J -- justify full</li>
|
199
|
+
<li>CTRL-1 .. CTRL-6 -- headings (<h1> .. <h6>)</li>
|
200
|
+
<li>CTRL-0 (zero) -- clean content pasted from Word</li>
|
201
|
+
</ul>
|
202
|
+
|
203
|
+
<h2>Installation</h2>
|
204
|
+
|
205
|
+
<h3>How do I add HTMLArea to my web page?</h3>
|
206
|
+
|
207
|
+
<p>It's easy. First you need to upload HTMLArea files to your website.
|
208
|
+
Just follow these steps.</p>
|
209
|
+
|
210
|
+
<ol>
|
211
|
+
<li>Download the latest version from the <a
|
212
|
+
href="http://www.interactivetools.com/products/htmlarea/">htmlArea
|
213
|
+
homepage</a>.</li>
|
214
|
+
<li>Unzip the files onto your local computer (making sure to maintain the
|
215
|
+
directory structure contained in the zip).</li>
|
216
|
+
<li>Create a new folder on your website called /htmlarea/ (make sure it's
|
217
|
+
NOT inside the cgi-bin).</li>
|
218
|
+
<li>Transfer all the HTMLArea files from your local computer into the
|
219
|
+
/htmlarea/ folder on your website.</li>
|
220
|
+
<li>Open the example page /htmlarea/examples/core.html with your browser to make
|
221
|
+
sure everything works.</li>
|
222
|
+
</ol>
|
223
|
+
|
224
|
+
<p>Once htmlArea is on your website all you need to do is add some
|
225
|
+
JavaScript to any pages that you want to add WYSIWYG editors to. Here's how
|
226
|
+
to do that.</p>
|
227
|
+
|
228
|
+
<ol>
|
229
|
+
|
230
|
+
<li>Define some global variables. "_editor_url" has to be the absolute
|
231
|
+
URL where HTMLArea resides within your
|
232
|
+
website; as we discussed, this would be “/htmlarea/”. "_editor_lang" must
|
233
|
+
be the language code in which you want HTMLArea to appear. This defaults
|
234
|
+
to "en" (English); for a list of supported languages, please look into
|
235
|
+
the "lang" subdirectory in the distribution.
|
236
|
+
<pre class="code"
|
237
|
+
><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span><span class="function-name">></span>
|
238
|
+
_editor_url = <span class="string">"/htmlarea/"</span>;
|
239
|
+
_editor_lang = <span class="string">"en"</span>;
|
240
|
+
<span class="function-name"><</span><span class="html-tag">/script</span><span class="function-name">></span></pre>
|
241
|
+
|
242
|
+
<li>Include the "htmlarea.js" script:
|
243
|
+
<pre class="code"
|
244
|
+
><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">src=</span><span class="string">"/htmlarea/htmlarea.js"</span><span class="function-name">></span><span class="paren-face-match"><</span><span class="html-tag">/script</span><span class="paren-face-match">></span></pre>
|
245
|
+
</li>
|
246
|
+
|
247
|
+
<li><p>If you want to change all your <textarea>-s into
|
248
|
+
HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
|
249
|
+
<pre class="code"
|
250
|
+
><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">defer=</span><span class="string">"1"</span><span class="function-name">></span>
|
251
|
+
HTMLArea.replaceAll<span class="function-name">()</span>;
|
252
|
+
<span class="paren-face-match"><</span><span class="html-tag">/script</span><span class="paren-face-match">></span></pre>
|
253
|
+
<p><span class="note">Note:</span> you can also add the
|
254
|
+
<code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
|
255
|
+
event handler for the <code>body</code> element, if you find it more appropriate.</p>
|
256
|
+
|
257
|
+
<p>A different approach, if you have more than one textarea and only want
|
258
|
+
to change one of them, is to use <code>HTMLArea.replace("id")</code> --
|
259
|
+
pass the <code>id</code> of your textarea. Do not use the
|
260
|
+
<code>name</code> attribute anymore, it's not a standard solution!</p>
|
261
|
+
|
262
|
+
</ol>
|
263
|
+
|
264
|
+
<p>This section applies to HTMLArea-3.0 release candidate 1 or later; prior
|
265
|
+
to this version, one needed to include more files; however, now HTMLArea is
|
266
|
+
able to include other files too (such as stylesheet, language definition
|
267
|
+
file, etc.) so you only need to define the editor path and load
|
268
|
+
"htmlarea.js". Nice, eh? ;-)</p>
|
269
|
+
|
270
|
+
<h3>I want to change the editor settings, how do I do that?</h3>
|
271
|
+
|
272
|
+
<p>While it's true that all you need is one line of JavaScript to create an
|
273
|
+
htmlArea WYSIWYG editor, you can also specify more config settings in the
|
274
|
+
code to control how the editor works and looks. Here's an example of some of
|
275
|
+
the available settings:</p>
|
276
|
+
|
277
|
+
<pre class="code"
|
278
|
+
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
|
279
|
+
</span> <span class="comment">// having all the default values
|
280
|
+
</span>config.width = '<span class="string">90%</span>';
|
281
|
+
config.height = '<span class="string">200px</span>';
|
282
|
+
|
283
|
+
<span class="comment">// the following sets a style for the page body (black text on yellow page)
|
284
|
+
// and makes all paragraphs be bold by default
|
285
|
+
</span>config.pageStyle =
|
286
|
+
'<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
|
287
|
+
'<span class="string">p { font-width: bold; } </span>';
|
288
|
+
|
289
|
+
<span class="comment">// the following replaces the textarea with the given id with a new
|
290
|
+
// HTMLArea object having the specified configuration
|
291
|
+
</span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
|
292
|
+
|
293
|
+
<p><span class="warning">Important:</span> It's recommended that you add
|
294
|
+
custom features and configuration to a separate file. This will ensure you
|
295
|
+
that when we release a new official version of HTMLArea you'll have less
|
296
|
+
trouble upgrading it.</p>
|
297
|
+
|
298
|
+
<h3>How do I customize the toolbar?</h3>
|
299
|
+
|
300
|
+
<p>Using the configuration object introduced above allows you to completely
|
301
|
+
control what the toolbar contains. Following is an example of a one-line,
|
302
|
+
customized toolbar, much simpler than the default one:</p>
|
303
|
+
|
304
|
+
<pre class="code"
|
305
|
+
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
|
306
|
+
config.toolbar = [
|
307
|
+
['<span class="string">fontname</span>', '<span class="string">space</span>',
|
308
|
+
'<span class="string">fontsize</span>', '<span class="string">space</span>',
|
309
|
+
'<span class="string">formatblock</span>', '<span class="string">space</span>',
|
310
|
+
'<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
|
311
|
+
];
|
312
|
+
HTMLArea.replace('<span class="string">id</span>', config);</pre>
|
313
|
+
|
314
|
+
<p>The toolbar is an Array of Array objects. Each array in the toolbar
|
315
|
+
defines a new line. The default toolbar looks like this:</p>
|
316
|
+
|
317
|
+
<pre class="code"
|
318
|
+
>config.toolbar = [
|
319
|
+
[ "<span class="string">fontname</span>", "<span class="string">space</span>",
|
320
|
+
"<span class="string">fontsize</span>", "<span class="string">space</span>",
|
321
|
+
"<span class="string">formatblock</span>", "<span class="string">space</span>",
|
322
|
+
"<span class="string">bold</span>", "<span class="string">italic</span>", "<span class="string">underline</span>", "<span class="string">separator</span>",
|
323
|
+
"<span class="string">strikethrough</span>", "<span class="string">subscript</span>", "<span class="string">superscript</span>", "<span class="string">separator</span>",
|
324
|
+
"<span class="string">copy</span>", "<span class="string">cut</span>", "<span class="string">paste</span>", "<span class="string">space</span>", "<span class="string">undo</span>", "<span class="string">redo</span>" ],
|
325
|
+
|
326
|
+
[ "<span class="string">justifyleft</span>", "<span class="string">justifycenter</span>", "<span class="string">justifyright</span>", "<span class="string">justifyfull</span>", "<span class="string">separator</span>",
|
327
|
+
"<span class="string">insertorderedlist</span>", "<span class="string">insertunorderedlist</span>", "<span class="string">outdent</span>", "<span class="string">indent</span>", "<span class="string">separator</span>",
|
328
|
+
"<span class="string">forecolor</span>", "<span class="string">hilitecolor</span>", "<span class="string">textindicator</span>", "<span class="string">separator</span>",
|
329
|
+
"<span class="string">inserthorizontalrule</span>", "<span class="string">createlink</span>", "<span class="string">insertimage</span>", "<span class="string">inserttable</span>", "<span class="string">htmlmode</span>", "<span class="string">separator</span>",
|
330
|
+
"<span class="string">popupeditor</span>", "<span class="string">separator</span>", "<span class="string">showhelp</span>", "<span class="string">about</span>" ]
|
331
|
+
];</pre>
|
332
|
+
|
333
|
+
<p>Except three strings, all others in the examples above need to be defined
|
334
|
+
in the <code>config.btnList</code> object (detailed a bit later in this
|
335
|
+
document). The three exceptions are: 'space', 'separator' and 'linebreak'.
|
336
|
+
These three have the following meaning, and need not be present in
|
337
|
+
<code>btnList</code>:</p>
|
338
|
+
|
339
|
+
<ul>
|
340
|
+
<li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
|
341
|
+
<acronym title="Cascading Style Sheets">CSS</acronym>) at the current
|
342
|
+
position in the toolbar.</li>
|
343
|
+
<li>'separator' -- Inserts a small vertical separator, for visually grouping related
|
344
|
+
buttons.</li>
|
345
|
+
<li>'linebreak' -- Starts a new line in the toolbar. Subsequent controls will be
|
346
|
+
inserted on the new line.</li>
|
347
|
+
</ul>
|
348
|
+
|
349
|
+
<p><span class="warning">Important:</span> It's recommended that you add
|
350
|
+
custom features and configuration to a separate file. This will ensure you
|
351
|
+
that when we release a new official version of HTMLArea you'll have less
|
352
|
+
trouble upgrading it.</p>
|
353
|
+
|
354
|
+
<h3>How do I create custom buttons?</h3>
|
355
|
+
|
356
|
+
<p>By design, the toolbar is easily extensible. For adding a custom button
|
357
|
+
one needs to follow two steps.</p>
|
358
|
+
|
359
|
+
<h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
|
360
|
+
|
361
|
+
<p>For each button in the toolbar, HTMLArea needs to know the following
|
362
|
+
information:</p>
|
363
|
+
<ul>
|
364
|
+
<li>a name for it (we call it the ID of the button);</li>
|
365
|
+
<li>the path to an image to be displayed in the toolbar;</li>
|
366
|
+
<li>a tooltip for it;</li>
|
367
|
+
<li>whether the button is enabled or not in text mode;</li>
|
368
|
+
<li>what to do when the button is clicked;</li>
|
369
|
+
</ul>
|
370
|
+
<p>You need to provide all this information for registering a new button
|
371
|
+
too. The button ID can be any string identifier and it's used when
|
372
|
+
defining the toolbar, as you saw above. We recommend starting
|
373
|
+
it with "my-" so that it won't clash with the standard ID-s (those from
|
374
|
+
the default toolbar).</p>
|
375
|
+
|
376
|
+
<p class="note">Register button example #1</p>
|
377
|
+
|
378
|
+
<pre class="code"
|
379
|
+
><span class="comment">// get a default configuration
|
380
|
+
</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
|
381
|
+
<span class="comment">// register the new button using Config.registerButton.
|
382
|
+
// parameters: button ID, tooltip, image, textMode,
|
383
|
+
</span>config.registerButton("<span class="string">my-hilite</span>", "<span class="string">Highlight text</span>", "<span class="string">my-hilite.gif</span>", <span class="keyword">false</span>,
|
384
|
+
<span class="comment">// function that gets called when the button is clicked
|
385
|
+
</span> <span class="keyword">function</span>(editor, id) {
|
386
|
+
editor.surroundHTML('<span class="string"><span class="hilite"></span>', '<span class="string"></span></span>');
|
387
|
+
}
|
388
|
+
);</pre>
|
389
|
+
|
390
|
+
<p>An alternate way of calling registerButton is exemplified above. Though
|
391
|
+
the code might be a little bit larger, using this form makes your code more
|
392
|
+
maintainable. It doesn't even needs comments as it's pretty clear.</p>
|
393
|
+
|
394
|
+
<p class="note">Register button example #2</p>
|
395
|
+
|
396
|
+
<pre class="code"
|
397
|
+
><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
|
398
|
+
config.registerButton({
|
399
|
+
id : "<span class="string">my-hilite</span>",
|
400
|
+
tooltip : "<span class="string">Highlight text</span>",
|
401
|
+
image : "<span class="string">my-hilite.gif</span>",
|
402
|
+
textMode : <span class="keyword">false</span>,
|
403
|
+
action : <span class="keyword">function</span>(editor, id) {
|
404
|
+
editor.surroundHTML('<span class="string"><span class="hilite"></span>', '<span class="string"></span></span>');
|
405
|
+
}
|
406
|
+
});</pre>
|
407
|
+
|
408
|
+
<p>You might notice that the "action" function receives two parameters:
|
409
|
+
<b>editor</b> and <b>id</b>. In the examples above we only used the
|
410
|
+
<b>editor</b> parameter. But it could be helpful for you to understand
|
411
|
+
both:</p>
|
412
|
+
|
413
|
+
<ul>
|
414
|
+
<li><b>editor</b> is a reference to the HTMLArea object. Since our entire
|
415
|
+
code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
|
416
|
+
design, you need to have a reference to
|
417
|
+
the editor object in order to do things with it. In previous versions of
|
418
|
+
HTMLArea, in order to identify the object an ID was used -- the ID of the
|
419
|
+
HTML element. In this version ID-s are no longer necessary.</li>
|
420
|
+
|
421
|
+
<li><b>id</b> is the button ID. Wondering why is this useful? Well, you
|
422
|
+
could use the same handler function (presuming that it's not an anonymous
|
423
|
+
function like in the examples above) for more buttons. You can <a
|
424
|
+
href="#btnex">see an example</a> a bit later in this document.</li>
|
425
|
+
</ul>
|
426
|
+
|
427
|
+
<h4>2. Inserting it into the toolbar</h4>
|
428
|
+
|
429
|
+
<p>At this step you need to specify where in the toolbar to insert the
|
430
|
+
button, or just create the whole toolbar again as you saw in the previous
|
431
|
+
section. You use the button ID, as shown in the examples of customizing the
|
432
|
+
toolbar in the previous section.</p>
|
433
|
+
|
434
|
+
<p>For the sake of completion, following there are another examples.</p>
|
435
|
+
|
436
|
+
<p class="note">Append your button to the default toolbar</p>
|
437
|
+
|
438
|
+
<pre class="code"
|
439
|
+
>config.toolbar.push([ "<span class="string">my-hilite</span>" ]);</pre>
|
440
|
+
|
441
|
+
<p class="note">Customized toolbar</p>
|
442
|
+
|
443
|
+
<pre class="code"
|
444
|
+
>config.toolbar = [
|
445
|
+
['<span class="string">fontname</span>', '<span class="string">space</span>',
|
446
|
+
'<span class="string">fontsize</span>', '<span class="string">space</span>',
|
447
|
+
'<span class="string">formatblock</span>', '<span class="string">space</span>',
|
448
|
+
'<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
|
449
|
+
</span> '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
|
450
|
+
];</pre>
|
451
|
+
|
452
|
+
<p><span class="note">Note:</span> in the example above our new button is
|
453
|
+
between two vertical separators. But this is by no means required. You can
|
454
|
+
put it wherever you like. Once registered in the btnList (<a
|
455
|
+
href="#regbtn">step 1</a>) your custom button behaves just like a default
|
456
|
+
button.</p>
|
457
|
+
|
458
|
+
<p><span class="warning">Important:</span> It's recommended that you add
|
459
|
+
custom features and configuration to a separate file. This will ensure you
|
460
|
+
that when we release a new official version of HTMLArea you'll have less
|
461
|
+
trouble upgrading it.</p>
|
462
|
+
|
463
|
+
<h4 id="btnex">A complete example</h4>
|
464
|
+
|
465
|
+
<p>Please note that it is by no means necessary to include the following
|
466
|
+
code into the htmlarea.js file. On the contrary, it might not work there.
|
467
|
+
The configuration system is designed such that you can always customize the
|
468
|
+
editor <em>from outside files</em>, thus keeping the htmlarea.js file
|
469
|
+
intact. This will make it easy for you to upgrade your HTMLArea when we
|
470
|
+
release a new official version. OK, I promise it's the last time I said
|
471
|
+
this. ;)</p>
|
472
|
+
|
473
|
+
<pre class="code"
|
474
|
+
><span class="comment">// All our custom buttons will call this function when clicked.
|
475
|
+
// We use the <b>buttonId</b> parameter to determine what button
|
476
|
+
// triggered the call.
|
477
|
+
</span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
|
478
|
+
<span class="keyword">switch</span> (buttonId) {
|
479
|
+
<span class="keyword">case</span> "<span class="string">my-toc</span>":
|
480
|
+
editor.insertHTML("<span class="string"><h1>Table Of Contents</h1></span>");
|
481
|
+
<span class="keyword">break</span>;
|
482
|
+
<span class="keyword">case</span> "<span class="string">my-date</span>":
|
483
|
+
editor.insertHTML((<span class="keyword">new</span> Date()).toString());
|
484
|
+
<span class="keyword">break</span>;
|
485
|
+
<span class="keyword">case</span> "<span class="string">my-bold</span>":
|
486
|
+
editor.execCommand("<span class="string">bold</span>");
|
487
|
+
editor.execCommand("<span class="string">italic</span>");
|
488
|
+
<span class="keyword">break</span>;
|
489
|
+
<span class="keyword">case</span> "<span class="string">my-hilite</span>":
|
490
|
+
editor.surroundHTML("<span class="string"><span class=\"hilite\"></span>", "<span class="string"></span></span>");
|
491
|
+
<span class="keyword">break</span>;
|
492
|
+
}
|
493
|
+
};
|
494
|
+
|
495
|
+
<span class="comment">// Create a new configuration object
|
496
|
+
</span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
|
497
|
+
|
498
|
+
<span class="comment">// Register our custom buttons
|
499
|
+
</span>config.registerButton("<span class="string">my-toc</span>", "<span class="string">Insert TOC</span>", "<span class="string">my-toc.gif</span>", <span class="keyword">false</span>, clickHandler);
|
500
|
+
config.registerButton("<span class="string">my-date</span>", "<span class="string">Insert date/time</span>", "<span class="string">my-date.gif</span>", <span class="keyword">false</span>, clickHandler);
|
501
|
+
config.registerButton("<span class="string">my-bold</span>", "<span class="string">Toggle bold/italic</span>", "<span class="string">my-bold.gif</span>", <span class="keyword">false</span>, clickHandler);
|
502
|
+
config.registerButton("<span class="string">my-hilite</span>", "<span class="string">Hilite selection</span>", "<span class="string">my-hilite.gif</span>", <span class="keyword">false</span>, clickHandler);
|
503
|
+
|
504
|
+
<span class="comment">// Append the buttons to the default toolbar
|
505
|
+
</span>config.toolbar.push(["<span class="string">linebreak</span>", "<span class="string">my-toc</span>", "<span class="string">my-date</span>", "<span class="string">my-bold</span>", "<span class="string">my-hilite</span>"]);
|
506
|
+
|
507
|
+
<span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
|
508
|
+
</span>HTMLArea.replace("<span class="string">textAreaID</span>", config);</pre>
|
509
|
+
|
510
|
+
|
511
|
+
<hr />
|
512
|
+
<address>© <a href="http://interactivetools.com" title="Visit our website"
|
513
|
+
>InteractiveTools.com</a> 2002-2004.
|
514
|
+
<br />
|
515
|
+
© <a href="http://dynarch.com">dynarch.com</a> 2003-2004<br />
|
516
|
+
HTMLArea v3.0 developed by <a
|
517
|
+
href="http://dynarch.com/mishoo/">Mihai Bazon</a>.
|
518
|
+
<br />
|
519
|
+
Documentation written by Mihai Bazon.
|
520
|
+
</address>
|
521
|
+
<!-- hhmts start --> Last modified: Wed Jan 28 12:18:23 EET 2004 <!-- hhmts end -->
|
522
|
+
<!-- doc-lang: English -->
|
523
|
+
</body> </html>
|