Soks 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +14 -4
- data/bin/soks-create-wiki.rb +2 -2
- data/contrib/redcloth-3.0.3.rb +0 -1
- data/lib/helpers/default-helpers.rb +13 -12
- data/lib/helpers/mail2wiki-helper.rb +12 -7
- data/lib/helpers/mail2wiki-test.rb +15 -0
- data/lib/helpers/wiki2html.rb +60 -0
- data/lib/soks-drb.rb +20 -0
- data/lib/soks-fcgi.rb +127 -0
- data/lib/soks-model.rb +11 -3
- data/lib/soks-servlet.rb +68 -45
- data/lib/soks-storage.rb +11 -3
- data/lib/soks-utils.rb +32 -3
- data/lib/soks-view.rb +48 -69
- data/lib/soks.rb +6 -3
- data/templates/default/attachment/blank.gif +0 -0
- data/templates/default/attachment/logo.jpg +0 -0
- data/templates/default/attachment/newpage.js +9 -0
- data/templates/default/attachment/pngbehavior.htc +86 -0
- data/templates/default/attachment/robots.txt +2 -1
- data/templates/default/attachment/stylesheet.css +144 -37
- data/templates/default/banned_titles.txt +36 -0
- data/templates/default/content/Api%20for%20classes%20to%20modify%20the%20wiki.textile +24 -0
- data/templates/default/content/Author.textile +3 -3
- data/templates/default/content/Automatic%20Summaries.textile +14 -14
- data/templates/default/content/Automatic%20linking%20between%20pages.textile +2 -0
- data/templates/default/content/Bug%3A%20RSS%20feed%20does%20not%20validate.textile +10 -0
- data/templates/default/content/Bug%3A%20Textile%20mishandles%20paragraphs.textile +33 -0
- data/templates/default/content/Bug%3A%20Unanticipated%20Rollbacks.textile +21 -0
- data/templates/default/content/Home%20Page.textile +3 -2
- data/templates/default/content/How%20to%20administrate%20this%20wiki.textile +4 -19
- data/templates/default/content/How%20to%20get%20the%20latest%20Soks%20from%20cvs.textile +21 -0
- data/templates/default/content/How%20to%20import%20data%20to%20this%20wiki.textile +45 -0
- data/templates/default/content/How%20to%20install%20Soks.textile +12 -8
- data/templates/default/content/How%20to%20password%20protect%20your%20wiki.textile +43 -0
- data/templates/default/content/How%20to%20report%20a%20bug.textile +1 -1
- data/templates/default/content/How%20to%20use%20the%20keyboard%20shortcuts.textile +2 -0
- data/templates/default/content/How%20to%20use%20this%20wiki.textile +1 -0
- data/templates/default/content/Instructions%20and%20Howtos.textile +4 -1
- data/templates/default/content/Known%20bugs.textile +5 -2
- data/templates/default/content/List%20of%20changes.textile +49 -0
- data/templates/default/content/New%20Recent%20Changes%20class.textile +58 -0
- data/templates/default/content/New%20page%20templates%20or%20categories%20code.textile +68 -0
- data/templates/default/content/Per%20Wiki%20Templates.textile +35 -0
- data/templates/default/content/Planned%20Features.textile +29 -8
- data/templates/default/content/README.textile +14 -4
- data/templates/default/content/RSS%20feed.textile +2 -0
- data/templates/default/content/Recent%20Changes%20to%20This%20Site.textile +200 -202
- data/templates/default/content/SOKS%20features.textile +2 -1
- data/templates/default/content/Sidebar%20Page.textile +3 -0
- data/templates/default/content/Type%20a%20title%20here.textile +1 -0
- data/templates/default/content/bug%3A%20competing%20edits.textile +13 -0
- data/templates/default/content/ctrl%2Dn.textile +1 -0
- data/templates/default/content/tamc.textile +1 -0
- data/templates/default/start.rb +38 -15
- data/templates/default/version.txt +1 -1
- data/templates/default/views/Page_edit.rhtml +71 -57
- data/templates/default/views/Page_meta.rhtml +6 -2
- data/templates/default/views/Page_revisions.rhtml +17 -9
- data/templates/default/views/Page_rss.rhtml +3 -1
- data/templates/default/views/Page_search_results.rhtml +11 -1
- data/templates/default/views/Page_view.rhtml +6 -2
- data/templates/default/views/UploadPage_edit.rhtml +58 -33
- data/templates/default/views/frame.rhtml +46 -27
- data/test/test_soks-utils.rb +37 -0
- metadata +27 -229
- data/templates/default/content/Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20picture%2.textile +0 -1
- data/templates/default/content/Bug%3A%20Automatic%20link%20links%20to%20stuff%20inside%20%3Chtml.textile +0 -1
- data/templates/default/content/Bug%3A%20Does%20not%20make%20use%20of%20if%2Dmodified%2Dsince%20r.textile +0 -1
- data/templates/default/content/Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20appear.textile +0 -1
- data/templates/default/content/Bug%3A%20External%20links%20incorrectly%20include%20trailing%20pu.textile +0 -1
- data/templates/default/content/Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20link%20is%2.textile +0 -1
- data/templates/default/content/Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%20new%20.textile +0 -1
- data/templates/default/content/Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -1
- data/templates/default/content/Bug%3A%20Page%20titles%20cannot%20have%20html%20tags%20in%20them.textile +0 -1
- data/templates/default/content/Bug%3A%20Punctuation%20in%20page%20titles%20still%20problematic.textile +0 -7
- data/templates/default/content/Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%28not%20.textile +0 -1
- data/templates/default/content/Bug%3A%20Search%20box%20width%20does%20not%20match%20column%20wid.textile +0 -1
- data/templates/default/content/Bug%3A%20Search%20includes%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/default/content/Bug%3A%20Search%20inluced%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/default/content/Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -1
- data/templates/default/content/Bug%3A%20Symbols%20are%20not%20always%20correctly%20rendered%20in.textile +0 -1
- data/templates/default/content/Bug%3A%20Uploads%20are%20not%20password%20protected.textile +0 -3
- data/templates/default/content/Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fbase64.textile +0 -1
- data/templates/default/content/Fixed%20Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20p.textile +0 -34
- data/templates/default/content/Fixed%20Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20.textile +0 -3
- data/templates/default/content/Fixed%20Bug%3A%20External%20links%20incorrectly%20include%20trail.textile +0 -3
- data/templates/default/content/Fixed%20Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20lin.textile +0 -13
- data/templates/default/content/Fixed%20Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%.textile +0 -9
- data/templates/default/content/Fixed%20Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -4
- data/templates/default/content/Fixed%20Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%.textile +0 -15
- data/templates/default/content/Fixed%20Bug%3A%20Search%20box%20width%20does%20not%20match%20colu.textile +0 -3
- data/templates/default/content/Fixed%20Bug%3A%20Search%20includes%20leading%20and%20trailing%20s.textile +0 -3
- data/templates/default/content/Fixed%20Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -3
- data/templates/default/content/Fixed%20Bug%3A%20Symbols%20are%20not%20always%20correctly%20rende.textile +0 -5
- data/templates/default/content/Fixed%20Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fba.textile +0 -3
- data/templates/default/content/Site%20Index.textile +0 -60
- data/templates/default/content/fixed%20bug%3A%20automatic%20link%20links%20to%20stuff%20inside%2.textile +0 -3
- data/templates/default/content/sandbox.textile +0 -2
- data/templates/default/content/test%20page.textile +0 -1
- data/templates/instiki/attachment/header_backdrop.png +0 -0
- data/templates/instiki/attachment/instiki_style_sheet.css +0 -199
- data/templates/instiki/attachment/logo.tiff +0 -0
- data/templates/instiki/attachment/logotext.png +0 -0
- data/templates/instiki/attachment/newpage.js +0 -41
- data/templates/instiki/attachment/rss.png +0 -0
- data/templates/instiki/banned_titles.txt +0 -31
- data/templates/instiki/content/All%20News.textile +0 -9
- data/templates/instiki/content/Attached%20ruby%20logo.textile +0 -1
- data/templates/instiki/content/Attached%20test%20thing.textile +0 -1
- data/templates/instiki/content/Author.textile +0 -12
- data/templates/instiki/content/Automatic%20Summaries.textile +0 -77
- data/templates/instiki/content/Automatic%20linking%20between%20pages.textile +0 -5
- data/templates/instiki/content/Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20picture%2.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Automatic%20link%20links%20to%20stuff%20inside%20%3Chtml.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Does%20not%20make%20use%20of%20if%2Dmodified%2Dsince%20r.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20appear.textile +0 -1
- data/templates/instiki/content/Bug%3A%20External%20links%20incorrectly%20include%20trailing%20pu.textile +0 -1
- data/templates/instiki/content/Bug%3A%20GEM%20limits%20title%20lengths.textile +0 -1
- data/templates/instiki/content/Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20link%20is%2.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%20new%20.textile +0 -1
- data/templates/instiki/content/Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Page%20titles%20cannot%20have%20html%20tags%20in%20them.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Punctuation%20in%20page%20titles%20still%20problematic.textile +0 -7
- data/templates/instiki/content/Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%28not%20.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Search%20box%20width%20does%20not%20match%20column%20wid.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Search%20includes%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Search%20inluced%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Symbols%20are%20not%20always%20correctly%20rendered%20in.textile +0 -1
- data/templates/instiki/content/Bug%3A%20Uploads%20are%20not%20password%20protected.textile +0 -3
- data/templates/instiki/content/Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fbase64.textile +0 -1
- data/templates/instiki/content/Bug%3A%20notextile%20does%20not%20prevent%20page%20inserts.textile +0 -1
- data/templates/instiki/content/Fixed%20Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20p.textile +0 -34
- data/templates/instiki/content/Fixed%20Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20.textile +0 -3
- data/templates/instiki/content/Fixed%20Bug%3A%20External%20links%20incorrectly%20include%20trail.textile +0 -3
- data/templates/instiki/content/Fixed%20Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20lin.textile +0 -13
- data/templates/instiki/content/Fixed%20Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%.textile +0 -9
- data/templates/instiki/content/Fixed%20Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -4
- data/templates/instiki/content/Fixed%20Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%.textile +0 -15
- data/templates/instiki/content/Fixed%20Bug%3A%20Search%20box%20width%20does%20not%20match%20colu.textile +0 -3
- data/templates/instiki/content/Fixed%20Bug%3A%20Search%20includes%20leading%20and%20trailing%20s.textile +0 -3
- data/templates/instiki/content/Fixed%20Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -3
- data/templates/instiki/content/Fixed%20Bug%3A%20Symbols%20are%20not%20always%20correctly%20rende.textile +0 -5
- data/templates/instiki/content/Fixed%20Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fba.textile +0 -3
- data/templates/instiki/content/Home%20Page.textile +0 -19
- data/templates/instiki/content/How%20to%20administrate%20this%20wiki.textile +0 -62
- data/templates/instiki/content/How%20to%20change%20the%20way%20this%20wiki%20looks.textile +0 -30
- data/templates/instiki/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +0 -60
- data/templates/instiki/content/How%20to%20hack%20soks.textile +0 -61
- data/templates/instiki/content/How%20to%20import%20a%20site%20from%20instiki.textile +0 -13
- data/templates/instiki/content/How%20to%20install%20Soks.textile +0 -27
- data/templates/instiki/content/How%20to%20report%20a%20bug.textile +0 -8
- data/templates/instiki/content/How%20to%20use%20the%20keyboard%20shortcuts.textile +0 -13
- data/templates/instiki/content/How%20to%20use%20this%20wiki.textile +0 -27
- data/templates/instiki/content/Instructions%20and%20Howtos.textile +0 -18
- data/templates/instiki/content/Known%20bugs.textile +0 -15
- data/templates/instiki/content/Latest%20News.textile +0 -9
- data/templates/instiki/content/List%20of%20changes.textile +0 -67
- data/templates/instiki/content/Picture%20of%20Type%20a%20title%20here.textile +0 -1
- data/templates/instiki/content/Picture%20of%20a%20logo%20for%20the%20ruby%20language.textile +0 -1
- data/templates/instiki/content/Picture%20of%20a%20pair%20of%20soks.textile +0 -1
- data/templates/instiki/content/Picture%20of%20powered%20by%20ruby%20logo.textile +0 -1
- data/templates/instiki/content/Planned%20Features.textile +0 -19
- data/templates/instiki/content/README.textile +0 -63
- data/templates/instiki/content/RSS%20feed.textile +0 -7
- data/templates/instiki/content/Recent%20Blog%20Entries.textile +0 -5
- data/templates/instiki/content/Recent%20Changes%20to%20This%20Site.textile +0 -211
- data/templates/instiki/content/Recent%20News.textile +0 -9
- data/templates/instiki/content/Ruby.textile +0 -9
- data/templates/instiki/content/SOKS%20features.textile +0 -16
- data/templates/instiki/content/Site%20Index.textile +0 -60
- data/templates/instiki/content/Soks%20Licence.textile +0 -64
- data/templates/instiki/content/fixed%20bug%3A%20automatic%20link%20links%20to%20stuff%20inside%2.textile +0 -3
- data/templates/instiki/content/let%20me%20know.textile +0 -1
- data/templates/instiki/content/sandbox.textile +0 -2
- data/templates/instiki/content/tamc2.textile +0 -1
- data/templates/instiki/content/test%20page.textile +0 -1
- data/templates/instiki/start.rb +0 -112
- data/templates/instiki/version.txt +0 -1
- data/templates/instiki/views/Page_content.rhtml +0 -1
- data/templates/instiki/views/Page_edit.rhtml +0 -8
- data/templates/instiki/views/Page_meta.rhtml +0 -34
- data/templates/instiki/views/Page_print.rhtml +0 -6
- data/templates/instiki/views/Page_revisions.rhtml +0 -17
- data/templates/instiki/views/Page_rss.rhtml +0 -55
- data/templates/instiki/views/Page_search_results.rhtml +0 -18
- data/templates/instiki/views/Page_view.rhtml +0 -2
- data/templates/instiki/views/UploadPage_edit.rhtml +0 -16
- data/templates/instiki/views/frame.rhtml +0 -90
- data/templates/instiki/views/messages.yaml +0 -6
- data/templates/rails/attachment/2colheader.css +0 -77
- data/templates/rails/attachment/basics.css +0 -98
- data/templates/rails/attachment/header_backdrop.png +0 -0
- data/templates/rails/attachment/logo.tiff +0 -0
- data/templates/rails/attachment/logotext.png +0 -0
- data/templates/rails/attachment/newpage.js +0 -41
- data/templates/rails/attachment/rss.png +0 -0
- data/templates/rails/banned_titles.txt +0 -31
- data/templates/rails/content/All%20News.textile +0 -9
- data/templates/rails/content/Attached%20ruby%20logo.textile +0 -1
- data/templates/rails/content/Attached%20test%20thing.textile +0 -1
- data/templates/rails/content/Author.textile +0 -12
- data/templates/rails/content/Automatic%20Summaries.textile +0 -77
- data/templates/rails/content/Automatic%20linking%20between%20pages.textile +0 -5
- data/templates/rails/content/Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20picture%2.textile +0 -1
- data/templates/rails/content/Bug%3A%20Automatic%20link%20links%20to%20stuff%20inside%20%3Chtml.textile +0 -1
- data/templates/rails/content/Bug%3A%20Does%20not%20make%20use%20of%20if%2Dmodified%2Dsince%20r.textile +0 -1
- data/templates/rails/content/Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20appear.textile +0 -1
- data/templates/rails/content/Bug%3A%20External%20links%20incorrectly%20include%20trailing%20pu.textile +0 -1
- data/templates/rails/content/Bug%3A%20GEM%20limits%20title%20lengths.textile +0 -1
- data/templates/rails/content/Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20link%20is%2.textile +0 -1
- data/templates/rails/content/Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%20new%20.textile +0 -1
- data/templates/rails/content/Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -1
- data/templates/rails/content/Bug%3A%20Page%20titles%20cannot%20have%20html%20tags%20in%20them.textile +0 -1
- data/templates/rails/content/Bug%3A%20Punctuation%20in%20page%20titles%20still%20problematic.textile +0 -7
- data/templates/rails/content/Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%28not%20.textile +0 -1
- data/templates/rails/content/Bug%3A%20Search%20box%20width%20does%20not%20match%20column%20wid.textile +0 -1
- data/templates/rails/content/Bug%3A%20Search%20includes%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/rails/content/Bug%3A%20Search%20inluced%20leading%20and%20trailing%20spaces.textile +0 -1
- data/templates/rails/content/Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -1
- data/templates/rails/content/Bug%3A%20Symbols%20are%20not%20always%20correctly%20rendered%20in.textile +0 -1
- data/templates/rails/content/Bug%3A%20Uploads%20are%20not%20password%20protected.textile +0 -3
- data/templates/rails/content/Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fbase64.textile +0 -1
- data/templates/rails/content/Bug%3A%20notextile%20does%20not%20prevent%20page%20inserts.textile +0 -1
- data/templates/rails/content/Fixed%20Bug%3A%20%5BFATAL%5D%20When%20renaming%20upload%20%2F%20p.textile +0 -34
- data/templates/rails/content/Fixed%20Bug%3A%20Duplicate%20links%2Dto%20a%20page%20sometimes%20.textile +0 -3
- data/templates/rails/content/Fixed%20Bug%3A%20External%20links%20incorrectly%20include%20trail.textile +0 -3
- data/templates/rails/content/Fixed%20Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20lin.textile +0 -13
- data/templates/rails/content/Fixed%20Bug%3A%20Inserted%20pages%20are%20not%20refreshed%20when%.textile +0 -9
- data/templates/rails/content/Fixed%20Bug%3A%20No%20robots%2Etxt%20or%20favicon%2Eico.textile +0 -4
- data/templates/rails/content/Fixed%20Bug%3A%20RSS%20feed%20shows%20oldest%2015%20revisions%20%.textile +0 -15
- data/templates/rails/content/Fixed%20Bug%3A%20Search%20box%20width%20does%20not%20match%20colu.textile +0 -3
- data/templates/rails/content/Fixed%20Bug%3A%20Search%20includes%20leading%20and%20trailing%20s.textile +0 -3
- data/templates/rails/content/Fixed%20Bug%3A%20Site%20Index%20updates%20on%20every%20revision.textile +0 -3
- data/templates/rails/content/Fixed%20Bug%3A%20Symbols%20are%20not%20always%20correctly%20rende.textile +0 -5
- data/templates/rails/content/Fixed%20Bug%3A%20no%20superclass%20method%20%60%5Fdeprecated%5Fba.textile +0 -3
- data/templates/rails/content/Home%20Page.textile +0 -19
- data/templates/rails/content/How%20to%20administrate%20this%20wiki.textile +0 -62
- data/templates/rails/content/How%20to%20change%20the%20way%20this%20wiki%20looks.textile +0 -30
- data/templates/rails/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +0 -60
- data/templates/rails/content/How%20to%20hack%20soks.textile +0 -61
- data/templates/rails/content/How%20to%20import%20a%20site%20from%20instiki.textile +0 -13
- data/templates/rails/content/How%20to%20install%20Soks.textile +0 -27
- data/templates/rails/content/How%20to%20report%20a%20bug.textile +0 -8
- data/templates/rails/content/How%20to%20use%20the%20keyboard%20shortcuts.textile +0 -13
- data/templates/rails/content/How%20to%20use%20this%20wiki.textile +0 -27
- data/templates/rails/content/Instructions%20and%20Howtos.textile +0 -18
- data/templates/rails/content/Known%20bugs.textile +0 -15
- data/templates/rails/content/Latest%20News.textile +0 -9
- data/templates/rails/content/List%20of%20changes.textile +0 -67
- data/templates/rails/content/Picture%20of%20Type%20a%20title%20here.textile +0 -1
- data/templates/rails/content/Picture%20of%20a%20logo%20for%20the%20ruby%20language.textile +0 -1
- data/templates/rails/content/Picture%20of%20a%20pair%20of%20soks.textile +0 -1
- data/templates/rails/content/Picture%20of%20powered%20by%20ruby%20logo.textile +0 -1
- data/templates/rails/content/Planned%20Features.textile +0 -19
- data/templates/rails/content/README.textile +0 -63
- data/templates/rails/content/RSS%20feed.textile +0 -7
- data/templates/rails/content/Recent%20Blog%20Entries.textile +0 -5
- data/templates/rails/content/Recent%20Changes%20to%20This%20Site.textile +0 -211
- data/templates/rails/content/Recent%20News.textile +0 -9
- data/templates/rails/content/Ruby.textile +0 -9
- data/templates/rails/content/SOKS%20features.textile +0 -16
- data/templates/rails/content/Site%20Index.textile +0 -60
- data/templates/rails/content/Soks%20Licence.textile +0 -64
- data/templates/rails/content/fixed%20bug%3A%20automatic%20link%20links%20to%20stuff%20inside%2.textile +0 -3
- data/templates/rails/content/let%20me%20know.textile +0 -1
- data/templates/rails/content/sandbox.textile +0 -2
- data/templates/rails/content/tamc2.textile +0 -1
- data/templates/rails/content/test%20page.textile +0 -1
- data/templates/rails/start.rb +0 -113
- data/templates/rails/version.txt +0 -1
- data/templates/rails/views/Page_content.rhtml +0 -1
- data/templates/rails/views/Page_edit.rhtml +0 -61
- data/templates/rails/views/Page_meta.rhtml +0 -38
- data/templates/rails/views/Page_print.rhtml +0 -6
- data/templates/rails/views/Page_revisions.rhtml +0 -19
- data/templates/rails/views/Page_rss.rhtml +0 -55
- data/templates/rails/views/Page_search_results.rhtml +0 -19
- data/templates/rails/views/Page_view.rhtml +0 -3
- data/templates/rails/views/UploadPage_edit.rhtml +0 -38
- data/templates/rails/views/frame.rhtml +0 -60
- data/templates/rails/views/messages.yaml +0 -6
- /data/templates/default/attachment/{logo_thumb.bmp → tiny-logo thumb.bmp} +0 -0
data/lib/soks-storage.rb
CHANGED
@@ -55,9 +55,17 @@ module WikiFlatFileStore
|
|
55
55
|
def load_revisions( page )
|
56
56
|
return [] unless File.exists?( filename_for_revisions( page.name ) )
|
57
57
|
revisions = []
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
begin
|
59
|
+
File.open( filename_for_revisions( page.name ) ) { |file|
|
60
|
+
YAML.each_document( file ) { |array|
|
61
|
+
next unless array.is_a? Array
|
62
|
+
next unless array.size == 4
|
63
|
+
next unless array[0].is_a? Integer
|
64
|
+
revisions[ array[0] ] = Revision.new( page, *array ) }
|
65
|
+
}
|
66
|
+
rescue
|
67
|
+
$stderr.puts "Error loading revisions with #{$!.to_s} in file #{page.name}"
|
68
|
+
end
|
61
69
|
revisions.each_with_index { |r,i| $stderr.puts "#{page.name} missing revision #{i}" unless r }
|
62
70
|
revisions
|
63
71
|
end
|
data/lib/soks-utils.rb
CHANGED
@@ -12,12 +12,14 @@ module Notify
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def notify( event, *messages)
|
15
|
+
raise "Sorry! Shutting down..." if @shutting_down
|
15
16
|
self.event_queue.event( event, messages )
|
16
17
|
end
|
17
18
|
|
18
19
|
def event_queue
|
19
20
|
@event_queue ||= EventQueue.new
|
20
21
|
end
|
22
|
+
|
21
23
|
end
|
22
24
|
|
23
25
|
class EventQueue
|
@@ -43,6 +45,10 @@ class EventQueue
|
|
43
45
|
events.each { |event| attentive_watchers_for(event) << action_block }
|
44
46
|
end
|
45
47
|
|
48
|
+
def empty?
|
49
|
+
@queue.empty?
|
50
|
+
end
|
51
|
+
|
46
52
|
private
|
47
53
|
|
48
54
|
def check_thread_ok
|
@@ -103,8 +109,6 @@ class EventQueue
|
|
103
109
|
|
104
110
|
end
|
105
111
|
|
106
|
-
|
107
|
-
|
108
112
|
class String
|
109
113
|
# Return the left bit of a string e.g. "String".left(2) => "St"
|
110
114
|
def left( length ) self.slice( 0, length ) end
|
@@ -113,7 +117,7 @@ class String
|
|
113
117
|
def url_encode
|
114
118
|
self.gsub(/([^a-zA-Z0-9]+)/n) do
|
115
119
|
'%' + $1.unpack('H2' * $1.size).join('%').upcase
|
116
|
-
end
|
120
|
+
end
|
117
121
|
end
|
118
122
|
|
119
123
|
# Decode a string url encoded so it can be used in urls (code coppied from CGI)
|
@@ -188,3 +192,28 @@ class FiniteUniqueList
|
|
188
192
|
@list = @list.sort_by { |item| item.send( @sort_by ) }
|
189
193
|
end
|
190
194
|
end
|
195
|
+
|
196
|
+
# Kindly written by Bil Kleb
|
197
|
+
class Numeric
|
198
|
+
# similar to distance_of_time_in_words as found in
|
199
|
+
# actionpack-1.1.0/lib/action_view/helpers/date_helper.rb
|
200
|
+
def to_time_units
|
201
|
+
seconds = self.round
|
202
|
+
case seconds
|
203
|
+
when 0: "fraction of a second"
|
204
|
+
when 1: "second"
|
205
|
+
when 2..45: "#{seconds} seconds"
|
206
|
+
when 46..90: "minute"
|
207
|
+
when 91..(60*45): "#{(seconds.to_f/60.0).round} minutes"
|
208
|
+
when (60*45)..(60*90): "hour"
|
209
|
+
when (60*90)..(60*60*22): "#{(seconds.to_f/60.0/60.0).round} hours"
|
210
|
+
when (60*60*22)..(60*60*36): "day"
|
211
|
+
when (60*60*36)..(60*60*24*26): "#{(seconds.to_f/60.0/60.0/24.0).round} days"
|
212
|
+
when (60*60*24*26)..(60*60*24*45): "month"
|
213
|
+
when (60*60*24*45)..(60*60*24*30*11): "#{(seconds.to_f/60.0/60.0/24.0/30.0).round} months"
|
214
|
+
when (60*60*24*30*11)..(60*60*24*500): "year"
|
215
|
+
else "#{(seconds.to_f/60.0/60.0/24.0/365.0).round} years"
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
data/lib/soks-view.rb
CHANGED
@@ -38,7 +38,6 @@ class Links
|
|
38
38
|
linksto = Array.new
|
39
39
|
@links.each do | pagefrom, pagesto |
|
40
40
|
next if pagefrom == thispage
|
41
|
-
next if [ "site index", "recent changes to this site" ].include? pagefrom.name.downcase
|
42
41
|
next if linksto.include? pagefrom
|
43
42
|
linksto << pagefrom if pagesto.include? thispage
|
44
43
|
end
|
@@ -46,73 +45,48 @@ class Links
|
|
46
45
|
end
|
47
46
|
end
|
48
47
|
|
49
|
-
|
50
|
-
|
51
|
-
# the first thing it can, rather than skipping a shorter match to enable
|
52
|
-
# a longer one that starts at a later point in the text
|
53
|
-
class RollingMatch
|
54
|
-
WORD_REGEX = /\w*/
|
55
|
-
SPACE_REGEX = /\W*/
|
48
|
+
class BruteMatch
|
49
|
+
|
56
50
|
IGNORE_CASE = true
|
57
|
-
|
51
|
+
|
58
52
|
def initialize
|
59
|
-
@
|
53
|
+
@matches = Hash.new
|
54
|
+
@titles = Array.new #sorted array for speed
|
60
55
|
end
|
61
|
-
|
56
|
+
|
62
57
|
def []( title ) @matches[ lower_case(title) ] end
|
63
58
|
alias :object_for :[]
|
64
59
|
|
65
60
|
def delete( title )
|
66
61
|
@matches.delete( title )
|
62
|
+
update_titles
|
67
63
|
end
|
68
64
|
|
69
65
|
# Use this to add a string to match and an associated object to return
|
70
66
|
# if an object is matched.
|
71
67
|
def []=( title, object )
|
72
68
|
@matches[lower_case(title)] = object
|
73
|
-
|
74
|
-
(lengths_for_first_word_of( title ) << title.length).sort!
|
75
|
-
end
|
69
|
+
update_titles
|
76
70
|
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
return text.left(length)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
nil
|
87
|
-
end
|
88
|
-
|
89
|
-
# This iterates through the text returning the longest matches
|
90
|
-
def rolling_match( text, *dont_match )
|
91
|
-
text = text.dup
|
92
|
-
skipped_text = ""
|
93
|
-
until text.empty?
|
94
|
-
skipped_text << text.slice!( SPACE_REGEX ) # Skip to the end of the next space
|
95
|
-
matching_title = longest_match( text, *dont_match )
|
96
|
-
if matching_title
|
97
|
-
yield skipped_text, matching_title, object_for( matching_title )
|
98
|
-
text.slice!( 0, matching_title.length ) # Skip to the end of the matched bit
|
99
|
-
skipped_text = ""
|
100
|
-
else
|
101
|
-
skipped_text << text.slice!( WORD_REGEX ) # Skip to the next word
|
102
|
-
end
|
71
|
+
|
72
|
+
def match( text )
|
73
|
+
@titles.each do |title|
|
74
|
+
regexp = /#{Regexp.escape(title)}/i
|
75
|
+
page = @matches[ title ]
|
76
|
+
text.gsub!( regexp ) { |match| yield match, page }
|
103
77
|
end
|
104
|
-
|
78
|
+
text
|
105
79
|
end
|
106
|
-
|
80
|
+
|
107
81
|
private
|
108
|
-
|
109
|
-
def
|
110
|
-
|
82
|
+
|
83
|
+
def update_titles
|
84
|
+
@titles = @matches.keys.sort_by { |title| title.length }.reverse
|
111
85
|
end
|
112
|
-
|
86
|
+
|
113
87
|
def lower_case( text )
|
114
88
|
IGNORE_CASE ? text.downcase : text
|
115
|
-
end
|
89
|
+
end
|
116
90
|
end
|
117
91
|
|
118
92
|
# This adds some extra match types to (a bodged version of) RedCloth
|
@@ -130,6 +104,7 @@ class WikiRedCloth < RedCloth
|
|
130
104
|
@wiki, @page = wiki, page
|
131
105
|
@internal_links_from_page = []
|
132
106
|
super(insert_sub_strings( string.dup ), [ :no_span_caps])
|
107
|
+
self.hard_breaks = true if $SETTINGS[:redcloth_hard_breaks]
|
133
108
|
end
|
134
109
|
|
135
110
|
def to_html
|
@@ -143,7 +118,7 @@ class WikiRedCloth < RedCloth
|
|
143
118
|
inline_soks_automatic_link text
|
144
119
|
unhide text
|
145
120
|
@wiki.links.set_links_from( @page, @internal_links_from_page )
|
146
|
-
|
121
|
+
text
|
147
122
|
end
|
148
123
|
|
149
124
|
private
|
@@ -153,7 +128,7 @@ class WikiRedCloth < RedCloth
|
|
153
128
|
end
|
154
129
|
|
155
130
|
def hide_html_tags( text )
|
156
|
-
text.gsub!(/<.*?>/) { |m| hide m }
|
131
|
+
text.gsub!(/<.*?>/m) { |m| hide m }
|
157
132
|
end
|
158
133
|
|
159
134
|
def unhide( text )
|
@@ -174,13 +149,17 @@ class WikiRedCloth < RedCloth
|
|
174
149
|
|
175
150
|
def insert_sub_strings( text, count = 0 )
|
176
151
|
return text if count > 5 # Stops us getting locked into a cycle if people mess up the insert
|
177
|
-
text.gsub!(/\[\[\s*insert (.+?)\]\]/i) do |m|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
152
|
+
text.gsub!(/\[\[\s*(insert (.+?))\s*\]\]/i) do |m|
|
153
|
+
unless @wiki.exists? $1 # So we don't accidentlaly match a page whose name starts 'insert'
|
154
|
+
inserted_page = @wiki.page( $2 )
|
155
|
+
if @wiki.exists? inserted_page.name
|
156
|
+
@internal_links_from_page << inserted_page
|
157
|
+
inserted_page.is_inserted_into( @page )
|
158
|
+
end
|
159
|
+
insert_sub_strings( "#{inserted_page.textile}\n", count + 1 )
|
160
|
+
else
|
161
|
+
m
|
162
|
+
end
|
184
163
|
end
|
185
164
|
text
|
186
165
|
end
|
@@ -205,13 +184,8 @@ class WikiRedCloth < RedCloth
|
|
205
184
|
end
|
206
185
|
end
|
207
186
|
|
208
|
-
|
209
|
-
|
210
|
-
@wiki.rollingmatch.rolling_match( text, @page.name.downcase ) do |skip, title, page|
|
211
|
-
linkedtext << skip
|
212
|
-
linkedtext << wiki_link( page.name, title, 'automatic' ) if title
|
213
|
-
end
|
214
|
-
text.replace( linkedtext )
|
187
|
+
def inline_soks_automatic_link( text )
|
188
|
+
@wiki.rollingmatch.match( text ) { |title, page| wiki_link( page.name, title, 'automatic' ) }
|
215
189
|
end
|
216
190
|
|
217
191
|
def wiki_link( pagename, title, css_class = nil )
|
@@ -241,7 +215,7 @@ class View
|
|
241
215
|
|
242
216
|
def initialize( wiki, name )
|
243
217
|
@wikiname = name
|
244
|
-
@rollingmatch, @links, @redcloth_cache, @erb_cache =
|
218
|
+
@rollingmatch, @links, @redcloth_cache, @erb_cache = BruteMatch.new, Links.new, Hash.new, Hash.new
|
245
219
|
@wiki = wiki
|
246
220
|
wiki.watch_attentively_for( :page_revised ) { |event,page,revision| refresh_redcloth( page ) }
|
247
221
|
end
|
@@ -275,8 +249,7 @@ class View
|
|
275
249
|
@wiki.revise( newpagename, content, person )
|
276
250
|
else
|
277
251
|
@wiki.revise( newpagename, content, person )
|
278
|
-
end
|
279
|
-
|
252
|
+
end
|
280
253
|
end
|
281
254
|
|
282
255
|
def move( oldpagename, person, newpagename )
|
@@ -297,8 +270,8 @@ class View
|
|
297
270
|
|
298
271
|
def refresh_redcloth( page )
|
299
272
|
$stderr.puts "Refreshing #{page}"
|
300
|
-
|
301
|
-
|
273
|
+
@redcloth_cache[page] = "" if page.textile.strip == ""
|
274
|
+
@redcloth_cache[ page ] = WikiRedCloth.new( self, page, page.textile ).to_html
|
302
275
|
end
|
303
276
|
|
304
277
|
def redcloth( page )
|
@@ -311,7 +284,7 @@ class View
|
|
311
284
|
end
|
312
285
|
|
313
286
|
def html( klass, view, _binding )
|
314
|
-
|
287
|
+
@erb_cache.clear if $SETTINGS[:reload_erb_each_request]
|
315
288
|
( @erb_cache[ path_for( klass, view ) ] ||= ERB.new( IO.readlines( erb_filename( klass, view ) ).join ) ).result( _binding )
|
316
289
|
end
|
317
290
|
|
@@ -334,6 +307,7 @@ class View
|
|
334
307
|
end
|
335
308
|
|
336
309
|
def frame_erb
|
310
|
+
@frame_erb = nil if $SETTINGS[:reload_erb_each_request]
|
337
311
|
@frame_erb ||= load_frame_erb
|
338
312
|
end
|
339
313
|
|
@@ -345,6 +319,11 @@ class View
|
|
345
319
|
end
|
346
320
|
end
|
347
321
|
|
322
|
+
# CGI and FCGI can't access this global directly, so call through here
|
323
|
+
def settings
|
324
|
+
$SETTINGS
|
325
|
+
end
|
326
|
+
|
348
327
|
def method_missing( method, *args, &block )
|
349
328
|
@wiki.send( method, *args, &block )
|
350
329
|
end
|
data/lib/soks.rb
CHANGED
@@ -22,15 +22,18 @@ Socket.do_not_reverse_lookup = true
|
|
22
22
|
|
23
23
|
# These are the default settings. Can be overriden in the call to soks-servlet.rb#start_wiki
|
24
24
|
$SETTINGS = {
|
25
|
-
:name => '
|
25
|
+
:name => 'A Soks Wiki',
|
26
26
|
:description => 'A Soks Wiki',
|
27
27
|
:root_directory => 'soks-wiki',
|
28
28
|
:check_files_every => 60, # Seconds
|
29
29
|
:url => 'http://localhost:8000',
|
30
30
|
:port => 8000,
|
31
|
+
:home_page => 'Home Page',
|
31
32
|
:dont_frame_templates => ['print','rss'],
|
32
|
-
:
|
33
|
-
:
|
33
|
+
:force_no_cache => false, # Adds headers to restrict the cacheing of pages
|
34
|
+
:redcloth_hard_breaks => false, # Set Redcloth to use hard breaks
|
35
|
+
:server_type => WEBrick::SimpleServer, # Could be WEBrick::Daemon if you wish to fork
|
36
|
+
:authenticators => [ [ %r{/(view|rss|print|find|meta|attachment)/.*}, WEBrick::HTTPAuth::NoAuthenticationRequired.new ],
|
34
37
|
# [ %r{/upload/.*}, WEBrick::HTTPAuth::NotPermitted.new ],
|
35
38
|
# [ %r{/(edit|save)/home page}, WEBrick::HTTPAuth::SiteWidePassword.new('password','You need to enter the site wide password to edit the home page') ],
|
36
39
|
# [ %r{/(view|edit|save)/private.*},WEBrick::HTTPAuth::BasicAuth.new( :UserDB => htpasswd, :Realm => realm ) ], # See webrick documentation
|
Binary file
|
Binary file
|
@@ -38,4 +38,13 @@ function hotkey( event )
|
|
38
38
|
}
|
39
39
|
}
|
40
40
|
}
|
41
|
+
}
|
42
|
+
|
43
|
+
function validateTitle( proposed_title )
|
44
|
+
{
|
45
|
+
var illegalcharacters = /[\\\[\]\?<>&\^]/;
|
46
|
+
if (illegalcharacters.test( proposed_title ) == true )
|
47
|
+
{
|
48
|
+
alert( 'Unfortunately the characters \ [ ] ? < > & ^ in titles cause problems with Soks. Please try not to use them');
|
49
|
+
}
|
41
50
|
}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<public:component lightWeight="true">
|
2
|
+
<public:attach event="onpropertychange" onevent="propertyChanged()" />
|
3
|
+
<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
|
4
|
+
<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
|
5
|
+
<script>
|
6
|
+
|
7
|
+
/*
|
8
|
+
* PNG Behavior
|
9
|
+
*
|
10
|
+
* This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
|
11
|
+
* for WebFX (http://webfx.eae.net)
|
12
|
+
* Copyright 2002-2004
|
13
|
+
*
|
14
|
+
* For usage see license at http://webfx.eae.net/license.html
|
15
|
+
*
|
16
|
+
* Version: 1.02
|
17
|
+
* Created: 2001-??-?? First working version
|
18
|
+
* Updated: 2002-03-28 Fixed issue when starting with a non png image and
|
19
|
+
* switching between non png images
|
20
|
+
* 2003-01-06 Fixed RegExp to correctly work with IE 5.0x
|
21
|
+
* 2004-05-09 When printing revert to original
|
22
|
+
*
|
23
|
+
*/
|
24
|
+
|
25
|
+
var supported = /MSIE ((5\.5)|[6789])/.test(navigator.userAgent) &&
|
26
|
+
navigator.platform == "Win32";
|
27
|
+
|
28
|
+
var realSrc;
|
29
|
+
var blankSrc = "blank.gif";
|
30
|
+
var isPrinting = false;
|
31
|
+
|
32
|
+
if (supported) fixImage();
|
33
|
+
|
34
|
+
function propertyChanged() {
|
35
|
+
if (!supported || isPrinting) return;
|
36
|
+
|
37
|
+
var pName = event.propertyName;
|
38
|
+
if (pName != "src") return;
|
39
|
+
// if not set to blank
|
40
|
+
if (!new RegExp(blankSrc).test(src))
|
41
|
+
fixImage();
|
42
|
+
};
|
43
|
+
|
44
|
+
function fixImage() {
|
45
|
+
// get src
|
46
|
+
var src = element.src;
|
47
|
+
|
48
|
+
// check for real change
|
49
|
+
if (src == realSrc && /\.png$/i.test(src)) {
|
50
|
+
element.src = blankSrc;
|
51
|
+
return;
|
52
|
+
}
|
53
|
+
|
54
|
+
if ( ! new RegExp(blankSrc).test(src)) {
|
55
|
+
// backup old src
|
56
|
+
realSrc = src;
|
57
|
+
}
|
58
|
+
|
59
|
+
// test for png
|
60
|
+
if (/\.png$/i.test(realSrc)) {
|
61
|
+
// set blank image
|
62
|
+
element.src = blankSrc;
|
63
|
+
// set filter
|
64
|
+
element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
|
65
|
+
"AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
|
66
|
+
}
|
67
|
+
else {
|
68
|
+
// remove filter
|
69
|
+
element.runtimeStyle.filter = "";
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
function beforePrint() {
|
74
|
+
isPrinting = true;
|
75
|
+
element.src = realSrc;
|
76
|
+
element.runtimeStyle.filter = "";
|
77
|
+
realSrc = null;
|
78
|
+
}
|
79
|
+
|
80
|
+
function afterPrint() {
|
81
|
+
isPrinting = false;
|
82
|
+
fixImage();
|
83
|
+
}
|
84
|
+
|
85
|
+
</script>
|
86
|
+
</public:component>
|
@@ -1,55 +1,106 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
a
|
1
|
+
body { margin:0px;
|
2
|
+
padding:0px;
|
3
|
+
font-size:small;
|
4
|
+
color:#333;
|
5
|
+
font-family: arial, sans-serif;
|
6
|
+
background-color:white;
|
7
|
+
}
|
8
|
+
|
9
|
+
h1, h1 a, h1 a:visited { color:#008000; }
|
10
|
+
h2, h2 a, h2 a:visited { color:#008000; }
|
11
|
+
|
12
|
+
a {
|
13
|
+
color:#888;
|
14
|
+
text-decoration:none;
|
15
|
+
}
|
16
|
+
|
17
|
+
a:visited {color:#888;}
|
11
18
|
|
12
|
-
a:hover {
|
19
|
+
a:hover {
|
20
|
+
text-decoration:underline;
|
21
|
+
color: #000;
|
22
|
+
}
|
13
23
|
|
14
24
|
a.missing {
|
15
25
|
color:#E00000;
|
16
26
|
}
|
17
27
|
|
18
|
-
#content { margin:0px 210px 50px 10px; padding:10px; }
|
19
|
-
|
20
|
-
#menu { position:absolute; top:12px; right:10px; width:162px; padding:10px; background-color:#E00000; border:1px solid #000000;/* Again, the ugly brilliant hack. */ voice-family: "\"}\""; voice-family:inherit; width:150px; }/* Again, "be nice to Opera 5". */body>#menu {width:150px;}
|
21
|
-
|
22
28
|
td {
|
23
29
|
font-size:smaller;
|
30
|
+
}
|
31
|
+
|
32
|
+
img {
|
33
|
+
border-style: none;
|
34
|
+
max-width: 300px;
|
24
35
|
}
|
25
36
|
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
#content {
|
38
|
+
margin:0px 210px 50px 10px;
|
39
|
+
padding:10px;
|
40
|
+
}
|
41
|
+
|
42
|
+
/* Based, with permission, on bluerobot.com */
|
43
|
+
#menu {
|
44
|
+
position:absolute;
|
45
|
+
top:40px;
|
46
|
+
right:10px;
|
47
|
+
width:162px;
|
48
|
+
text-align: center;
|
49
|
+
background-color:#E00000;
|
50
|
+
border:1px solid #000000;
|
51
|
+
/* Again, the ugly brilliant hack. */ voice-family: "\"}\""; voice-family:inherit; width:152px; }/* Again, "be nice to Opera 5". */body>#menu {width:152px;}
|
52
|
+
|
53
|
+
#menu input.search {
|
54
|
+
width:149px;
|
30
55
|
}
|
31
56
|
|
32
|
-
#menu
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
57
|
+
#menu h1 {
|
58
|
+
font-size: smaller;
|
59
|
+
background-color: #900000;
|
60
|
+
color: white;
|
61
|
+
padding: 5px;
|
62
|
+
margin: 0px;
|
63
|
+
font-weight: bold;
|
64
|
+
}
|
38
65
|
|
39
|
-
|
40
|
-
font-size:
|
66
|
+
#menu h2 {
|
67
|
+
font-size: smaller;
|
68
|
+
background-color: #900000;
|
69
|
+
color: white;
|
70
|
+
padding: 5px;
|
71
|
+
margin: 12px 0px 0px 0px;
|
72
|
+
font-weight: bold;
|
73
|
+
}
|
74
|
+
|
75
|
+
#menu h2 a, #menu h2 a:visited {
|
76
|
+
color: white;
|
77
|
+
}
|
78
|
+
|
79
|
+
.linklist {
|
80
|
+
}
|
81
|
+
|
82
|
+
.linklist a, .linklist a:visited {
|
83
|
+
margin: 0px;
|
84
|
+
padding: 3px 5px;
|
85
|
+
color: black;
|
41
86
|
display: block;
|
42
87
|
}
|
43
88
|
|
44
|
-
|
45
|
-
|
46
|
-
|
89
|
+
.linklist a:hover {
|
90
|
+
background-color:#F4E600;
|
91
|
+
text-decoration: none;
|
47
92
|
}
|
48
93
|
|
49
|
-
.
|
94
|
+
.pagename {
|
50
95
|
font-size: xx-small;
|
51
96
|
display: block;
|
52
97
|
}
|
98
|
+
|
99
|
+
.command {
|
100
|
+
border-top: 1px solid #333;
|
101
|
+
padding-top: 5px;
|
102
|
+
margin-top: 20px;
|
103
|
+
}
|
53
104
|
|
54
105
|
.subpage {
|
55
106
|
padding: 10px;
|
@@ -62,11 +113,12 @@ p.more {
|
|
62
113
|
font-size: xx-small;
|
63
114
|
text-align: right;
|
64
115
|
padding: 0px;
|
65
|
-
font-color: #grey;
|
66
|
-
color: gray;
|
116
|
+
font-color: #grey;
|
117
|
+
color: gray;
|
67
118
|
}
|
68
119
|
|
69
|
-
.subpage h1 {
|
120
|
+
.subpage h1 {
|
121
|
+
color:#008000;
|
70
122
|
}
|
71
123
|
|
72
124
|
.calendar td {
|
@@ -76,7 +128,8 @@ p.more {
|
|
76
128
|
|
77
129
|
.upcomingevents {
|
78
130
|
padding: 0px 10px 0px 10px;
|
79
|
-
margin: 0px;
|
131
|
+
margin: 0px;
|
132
|
+
border: solid 1px #AAAAAA;
|
80
133
|
}
|
81
134
|
|
82
135
|
a.pageview {
|
@@ -87,12 +140,66 @@ pre.change {
|
|
87
140
|
margin: 0px;
|
88
141
|
padding: 0px;
|
89
142
|
}
|
143
|
+
|
144
|
+
.change {
|
145
|
+
margin-top: 20px;
|
146
|
+
border-top: solid 1px #AAAAAA;
|
147
|
+
}
|
148
|
+
|
149
|
+
#fileedittitle input {
|
150
|
+
width: 85%;
|
151
|
+
}
|
152
|
+
|
153
|
+
#edittitle input {
|
154
|
+
width: 95%;
|
155
|
+
}
|
156
|
+
|
157
|
+
#editcontent textarea {
|
158
|
+
width: 100%;
|
159
|
+
height: 75%;
|
160
|
+
}
|
161
|
+
|
162
|
+
#tips h1 {
|
163
|
+
padding-left: 5px;
|
164
|
+
margin-top: 0px;
|
165
|
+
}
|
90
166
|
|
91
|
-
|
92
|
-
list-style-type: none;
|
167
|
+
#tips li, #tips ul {
|
168
|
+
list-style-type: none;
|
169
|
+
padding-left: 5px;
|
93
170
|
}
|
94
171
|
|
95
172
|
.metacolumn {
|
96
173
|
display: inline;
|
97
174
|
font-size: smaller;
|
98
175
|
}
|
176
|
+
|
177
|
+
form.editpage {
|
178
|
+
display: inline;
|
179
|
+
}
|
180
|
+
|
181
|
+
div.undochange {
|
182
|
+
border-top: solid 1px #AAAAAA;
|
183
|
+
margin-top: 10px;
|
184
|
+
}
|
185
|
+
|
186
|
+
.undochange li {
|
187
|
+
list-style-type: none;
|
188
|
+
padding-left: 0px;
|
189
|
+
}
|
190
|
+
|
191
|
+
.undochange input {
|
192
|
+
margin-left: 40px;
|
193
|
+
margin-top: 0px;
|
194
|
+
margin-bottom: 10px;
|
195
|
+
}
|
196
|
+
|
197
|
+
.undochange p {
|
198
|
+
font-weight: bold;
|
199
|
+
margin-top: 5px;
|
200
|
+
}
|
201
|
+
|
202
|
+
.help {
|
203
|
+
color: red;
|
204
|
+
text-align: center;
|
205
|
+
}
|