Pimki 1.0.092 → 1.1.092
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README-PIMKI +44 -15
 - data/app/controllers/wiki.rb +26 -11
 - data/app/models/chunks/category.rb +2 -2
 - data/app/models/chunks/chunk.rb +2 -2
 - data/app/models/chunks/include.rb +2 -2
 - data/app/models/chunks/nowiki.rb +2 -2
 - data/app/models/chunks/todo.rb +2 -2
 - data/app/models/chunks/uri.rb +2 -2
 - data/app/models/chunks/wiki.rb +25 -4
 - data/app/models/web.rb +15 -12
 - data/app/models/wiki_content.rb +2 -2
 - data/app/models/wiki_service.rb +2 -1
 - data/app/views/wiki/bliki_new.rhtml +5 -6
 - data/app/views/wiki/bliki_revision.rhtml +10 -10
 - data/app/views/wiki/edit_menu.rhtml +9 -1
 - data/app/views/wiki/list.rhtml +4 -4
 - data/app/views/wiki/mind.rhtml +5 -3
 - data/app/views/wiki/new_system.rhtml +2 -2
 - data/app/views/wiki/todo.rhtml +31 -3
 - data/libraries/madeleine_service.rb +2 -2
 - data/pimki.rb +2 -2
 - metadata +2 -2
 
    
        data/README-PIMKI
    CHANGED
    
    | 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <pre>
         
     | 
| 
       2 
1 
     | 
    
         
             
            What is Pimki?
         
     | 
| 
       3 
2 
     | 
    
         
             
            ================
         
     | 
| 
       4 
3 
     | 
    
         | 
| 
       5 
4 
     | 
    
         
             
            Pimki is a Personal Information Manager based on Instiki's Wiki technology.
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            It has some added features over Instiki, while keeping the simplicity  
     | 
| 
      
 6 
     | 
    
         
            +
            It has some added features over Instiki, while keeping (most of) the simplicity 
         
     | 
| 
      
 7 
     | 
    
         
            +
            of Instiki. Add added complication is installing GraphViz on the path. GraphViz
         
     | 
| 
      
 8 
     | 
    
         
            +
            is available from: http://www.research.att.com/sw/tools/graphviz.
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
            Instiki Features:
         
     | 
| 
       10 
11 
     | 
    
         
             
            * Regular expression search: Find deep stuff really fast
         
     | 
| 
         @@ -24,19 +25,21 @@ Instiki Features: 
     | 
|
| 
       24 
25 
     | 
    
         
             
            Pimki added features:
         
     | 
| 
       25 
26 
     | 
    
         
             
            * Mind Map: a graph of wiki connections (made with GraphViz). All graphs can be 
         
     | 
| 
       26 
27 
     | 
    
         
             
              laid-out with the 4 GraphViz engines. Graph contents can be arranged as:
         
     | 
| 
       27 
     | 
    
         
            -
               * Page  
     | 
| 
       28 
     | 
    
         
            -
               * Authors  
     | 
| 
       29 
     | 
    
         
            -
               * Categories  
     | 
| 
      
 28 
     | 
    
         
            +
               * Page -> linked pages
         
     | 
| 
      
 29 
     | 
    
         
            +
               * Authors -> pages
         
     | 
| 
      
 30 
     | 
    
         
            +
               * Categories -> pages
         
     | 
| 
       30 
31 
     | 
    
         
             
            * Bliki: a blog integrated with the wiki. Blog entries are simply wiki-pages in
         
     | 
| 
       31 
     | 
    
         
            -
              a special space. Can link from an entry to wiki pages 
     | 
| 
      
 32 
     | 
    
         
            +
              a special space. Can link from an entry to wiki pages via PageName or [[page name]]
         
     | 
| 
      
 33 
     | 
    
         
            +
              and from pages to Bliki entries via [bliki[page name]].
         
     | 
| 
       32 
34 
     | 
    
         
             
            * Todo Items & List:
         
     | 
| 
       33 
     | 
    
         
            -
               *  
     | 
| 
      
 35 
     | 
    
         
            +
               * 'todo:' items are highlighted on each page.
         
     | 
| 
       34 
36 
     | 
    
         
             
               * Added a capacity to pull and list todo items from all pages.
         
     | 
| 
       35 
37 
     | 
    
         
             
               * On main list, items are highlighted according to date (if there is one).
         
     | 
| 
       36 
38 
     | 
    
         
             
            * Added capacity to (persistently :) delete/rename pages through the 'All Pages'
         
     | 
| 
       37 
39 
     | 
    
         
             
              list.
         
     | 
| 
       38 
40 
     | 
    
         
             
            * Added left-side menu. Content options are:
         
     | 
| 
       39 
41 
     | 
    
         
             
               * Only pages that reference other pages (default)
         
     | 
| 
      
 42 
     | 
    
         
            +
               * Only pages that belong to a specific category
         
     | 
| 
       40 
43 
     | 
    
         
             
               * All pages: by name
         
     | 
| 
       41 
44 
     | 
    
         
             
               * All pages: recently revised
         
     | 
| 
       42 
45 
     | 
    
         
             
               * All pages: recently visited
         
     | 
| 
         @@ -47,15 +50,16 @@ Pimki added features: 
     | 
|
| 
       47 
50 
     | 
    
         
             
               * Now showing part of sentance around match in search-results page
         
     | 
| 
       48 
51 
     | 
    
         
             
            * Removed unnecessary (for me) stuff from the nav-bar: RSS, authors, export. 
         
     | 
| 
       49 
52 
     | 
    
         
             
              Moved to bottom of Home Page.
         
     | 
| 
      
 53 
     | 
    
         
            +
            * Minor stylesheet tweaks.
         
     | 
| 
       50 
54 
     | 
    
         | 
| 
       51 
55 
     | 
    
         
             
            Missing:
         
     | 
| 
       52 
56 
     | 
    
         | 
| 
       53 
57 
     | 
    
         
             
            * Expand todo with more task types?
         
     | 
| 
       54 
58 
     | 
    
         
             
            * Expand Search
         
     | 
| 
       55 
     | 
    
         
            -
               * Highlight on individual page when clicked form search results
         
     | 
| 
      
 59 
     | 
    
         
            +
               * Highlight match on individual page when clicked form search results
         
     | 
| 
       56 
60 
     | 
    
         
             
               * Advanced Search (not just regexp, case sensitivity)?
         
     | 
| 
       57 
61 
     | 
    
         
             
            * Editable left-side menu options: by search results? by author?
         
     | 
| 
       58 
     | 
    
         
            -
            * Bliki 
     | 
| 
      
 62 
     | 
    
         
            +
            * Bliki entries revision diff.
         
     | 
| 
       59 
63 
     | 
    
         | 
| 
       60 
64 
     | 
    
         | 
| 
       61 
65 
     | 
    
         
             
            Command-line options:
         
     | 
| 
         @@ -63,15 +67,40 @@ Run "ruby pimki.rb --help" 
     | 
|
| 
       63 
67 
     | 
    
         | 
| 
       64 
68 
     | 
    
         
             
            History:
         
     | 
| 
       65 
69 
     | 
    
         | 
| 
      
 70 
     | 
    
         
            +
            1.1.092 Bug-fix and minor enhancements release
         
     | 
| 
      
 71 
     | 
    
         
            +
                - Changed storage path to be relative to CWD to avoid storing under gem
         
     | 
| 
      
 72 
     | 
    
         
            +
                  version directory. When running/installing service should normally
         
     | 
| 
      
 73 
     | 
    
         
            +
                  provide the --storage command-line parameter. (Chad)
         
     | 
| 
      
 74 
     | 
    
         
            +
                - Fixed a problem with the bliki_new form that prevented saving the entry
         
     | 
| 
      
 75 
     | 
    
         
            +
                  due to debug code in the JS validation code of the entry name. (PragDave)
         
     | 
| 
      
 76 
     | 
    
         
            +
                - Fixed problem with export and storage path relating to app-dir instead
         
     | 
| 
      
 77 
     | 
    
         
            +
                  of storage dir in Instiki core. (Prag Dave)
         
     | 
| 
      
 78 
     | 
    
         
            +
                - Fixed problem of missing files in in tgz packaging (rake needs 
         
     | 
| 
      
 79 
     | 
    
         
            +
                  PackagingTask defined _before_ GemPackageTask). (Ruben)
         
     | 
| 
      
 80 
     | 
    
         
            +
                - Fixed require 'YAML' to correct 'yaml' in Instiki core. (Chad)
         
     | 
| 
      
 81 
     | 
    
         
            +
                - Added capability to link from pages to Bliki entries. To use link via:
         
     | 
| 
      
 82 
     | 
    
         
            +
                  [bliki[entry name]]
         
     | 
| 
      
 83 
     | 
    
         
            +
                - ToDo list picks up items from bliki entries and links to the entry (Ruben)
         
     | 
| 
      
 84 
     | 
    
         
            +
                - Menu can be set as all pages belonging to a specific category. If you set
         
     | 
| 
      
 85 
     | 
    
         
            +
                  some page to a category e.g. 'menu', only those pages will appear on the
         
     | 
| 
      
 86 
     | 
    
         
            +
                  left-side menu.
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            1.0.092 Updated Initial Release
         
     | 
| 
      
 89 
     | 
    
         
            +
                - Finalized Numbering scheme.
         
     | 
| 
      
 90 
     | 
    
         
            +
                - Made available as a gem.
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
       66 
92 
     | 
    
         
             
            0.9.2-7 Initial Public Release
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
                I have been working on Pimki for my own use for quite some time. It is
         
     | 
| 
      
 94 
     | 
    
         
            +
                fairly mature and stable. The version number reflects the base Instiki
         
     | 
| 
      
 95 
     | 
    
         
            +
                version (0.9.2; or actually the latest CVS that's markes so) and the
         
     | 
| 
      
 96 
     | 
    
         
            +
                running number of my feature-addition releases.
         
     | 
| 
       71 
97 
     | 
    
         | 
| 
       72 
98 
     | 
    
         | 
| 
       73 
99 
     | 
    
         
             
            Download latest from: 
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 100 
     | 
    
         
            +
            http://rubyforge.org/project/showfiles.php?group_id=447
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            Or go the Gem way and install through:
         
     | 
| 
      
 103 
     | 
    
         
            +
            gem install pimki
         
     | 
| 
       75 
104 
     | 
    
         | 
| 
       76 
105 
     | 
    
         
             
            Visit the official Pimki home page at:
         
     | 
| 
       77 
106 
     | 
    
         
             
            http://pimki.rubyforge.org/
         
     | 
| 
         @@ -84,4 +113,4 @@ License is the same as Ruby's. 
     | 
|
| 
       84 
113 
     | 
    
         
             
            --
         
     | 
| 
       85 
114 
     | 
    
         
             
            Assaph Mehr
         
     | 
| 
       86 
115 
     | 
    
         
             
            assaph@gmail.com
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
    
        data/app/controllers/wiki.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ require "cgi" 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require "redcloth_for_tex"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            class WikiController < ActionControllerServlet
         
     | 
| 
       5 
     | 
    
         
            -
              EXPORT_DIRECTORY =  
     | 
| 
      
 5 
     | 
    
         
            +
              EXPORT_DIRECTORY = WikiService.storage_path unless const_defined?("EXPORT_DIRECTORY")
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              def index
         
     | 
| 
       8 
8 
     | 
    
         
             
                if web_address
         
     | 
| 
         @@ -184,6 +184,7 @@ class WikiController < ActionControllerServlet 
     | 
|
| 
       184 
184 
     | 
    
         
             
                set_menu_pages
         
     | 
| 
       185 
185 
     | 
    
         
             
                @pages_by_name = @pages_in_category.by_name
         
     | 
| 
       186 
186 
     | 
    
         
             
                @todo_items = Hash.new { Array.new }
         
     | 
| 
      
 187 
     | 
    
         
            +
                @bliki_todo_items = Hash.new { Array.new }
         
     | 
| 
       187 
188 
     | 
    
         
             
                @pages_by_name.each do |page|
         
     | 
| 
       188 
189 
     | 
    
         
             
                  if page.content =~ Todo.pattern
         
     | 
| 
       189 
190 
     | 
    
         
             
                    # Page has todo items. Get the rendered version (marked-up and with links):
         
     | 
| 
         @@ -192,16 +193,26 @@ class WikiController < ActionControllerServlet 
     | 
|
| 
       192 
193 
     | 
    
         
             
                  end
         
     | 
| 
       193 
194 
     | 
    
         
             
                end
         
     | 
| 
       194 
195 
     | 
    
         
             
                @todo_items = @todo_items.sort_by { |page, items| page.name }
         
     | 
| 
      
 196 
     | 
    
         
            +
                web.bliki.each do |pname, entry|
         
     | 
| 
      
 197 
     | 
    
         
            +
                  if entry.content =~ Todo.pattern
         
     | 
| 
      
 198 
     | 
    
         
            +
                    # Entry has todo items. Get the rendered version (marked-up and with links):
         
     | 
| 
      
 199 
     | 
    
         
            +
                    content = entry.revisions.last.display_content
         
     | 
| 
      
 200 
     | 
    
         
            +
                    @bliki_todo_items[entry] = content.scan /<span class="todo"><strong>TODO:<\/strong> (.*?)<\/span>/
         
     | 
| 
      
 201 
     | 
    
         
            +
                  end
         
     | 
| 
      
 202 
     | 
    
         
            +
                end
         
     | 
| 
      
 203 
     | 
    
         
            +
                @bliki_todo_items = @bliki_todo_items.sort_by { |entry, items| entry.name }
         
     | 
| 
       195 
204 
     | 
    
         
             
              end #}}}
         
     | 
| 
       196 
205 
     | 
    
         | 
| 
       197 
206 
     | 
    
         
             
              def set_menu_pages #{{{
         
     | 
| 
       198 
207 
     | 
    
         
             
                parse_category
         
     | 
| 
      
 208 
     | 
    
         
            +
                @all_pages = web.select { true }
         
     | 
| 
       199 
209 
     | 
    
         
             
                @menu_pages = case web.menu_type
         
     | 
| 
       200 
     | 
    
         
            -
                  when 'all' 
     | 
| 
       201 
     | 
    
         
            -
                  when 'recent' 
     | 
| 
       202 
     | 
    
         
            -
                  when 'viewed' 
     | 
| 
       203 
     | 
    
         
            -
                  when 'revised' 
     | 
| 
       204 
     | 
    
         
            -
                  when 'user' 
     | 
| 
      
 210 
     | 
    
         
            +
                  when 'all'      then @all_pages.by_name 
         
     | 
| 
      
 211 
     | 
    
         
            +
                  when 'recent'   then @all_pages.by_last_visited
         
     | 
| 
      
 212 
     | 
    
         
            +
                  when 'viewed'   then @all_pages.by_most_viewed
         
     | 
| 
      
 213 
     | 
    
         
            +
                  when 'revised'  then @all_pages.by_revision
         
     | 
| 
      
 214 
     | 
    
         
            +
                  when 'user'     then @menu_content = web.rendered_menu; nil
         
     | 
| 
      
 215 
     | 
    
         
            +
                  when 'category' then web.select { |page| page.in_category?(web.menu_category) } 
         
     | 
| 
       205 
216 
     | 
    
         
             
                  when 'linkers'
         
     | 
| 
       206 
217 
     | 
    
         
             
                    web.select { |page|
         
     | 
| 
       207 
218 
     | 
    
         
             
                      page.wiki_words.size > 0 
         
     | 
| 
         @@ -254,15 +265,16 @@ class WikiController < ActionControllerServlet 
     | 
|
| 
       254 
265 
     | 
    
         | 
| 
       255 
266 
     | 
    
         
             
              def save_menu #{{{
         
     | 
| 
       256 
267 
     | 
    
         
             
                unless @req.query['action'] == 'Cancel Update'
         
     | 
| 
       257 
     | 
    
         
            -
                  type 
     | 
| 
       258 
     | 
    
         
            -
                  content 
     | 
| 
      
 268 
     | 
    
         
            +
                  type     = @req.query['type']
         
     | 
| 
      
 269 
     | 
    
         
            +
                  content  = @req.query['content']
         
     | 
| 
      
 270 
     | 
    
         
            +
                  category = @req.query['category']
         
     | 
| 
       259 
271 
     | 
    
         | 
| 
       260 
272 
     | 
    
         
             
                  limit = @req.query['limit'].to_i rescue nil
         
     | 
| 
       261 
273 
     | 
    
         
             
                  limit = 20 unless limit
         
     | 
| 
       262 
274 
     | 
    
         
             
                  limit -= 1 if limit >= 0
         
     | 
| 
       263 
275 
     | 
    
         | 
| 
       264 
276 
     | 
    
         
             
                  # need to go through the WikiService to persist the command:
         
     | 
| 
       265 
     | 
    
         
            -
                  wiki.save_menu_pref web, type, limit, content
         
     | 
| 
      
 277 
     | 
    
         
            +
                  wiki.save_menu_pref web, type, limit, content, category
         
     | 
| 
       266 
278 
     | 
    
         
             
                end
         
     | 
| 
       267 
279 
     | 
    
         | 
| 
       268 
280 
     | 
    
         
             
                if web_address
         
     | 
| 
         @@ -417,7 +429,7 @@ class WikiController < ActionControllerServlet 
     | 
|
| 
       417 
429 
     | 
    
         | 
| 
       418 
430 
     | 
    
         
             
              def rollback_bliki
         
     | 
| 
       419 
431 
     | 
    
         
             
                @page = wiki.read_bliki_entry(web_address, page_name)
         
     | 
| 
       420 
     | 
    
         
            -
                wiki.rollback_bliki_entry(web_address, page_name, @params["rev"].to_i 
     | 
| 
      
 432 
     | 
    
         
            +
                wiki.rollback_bliki_entry(web_address, page_name, @params["rev"].to_i, Time.now)
         
     | 
| 
       421 
433 
     | 
    
         
             
                redirect_bliki
         
     | 
| 
       422 
434 
     | 
    
         
             
              end
         
     | 
| 
       423 
435 
     | 
    
         | 
| 
         @@ -455,7 +467,10 @@ class WikiController < ActionControllerServlet 
     | 
|
| 
       455 
467 
     | 
    
         
             
                  redirect_path "/#{web}/#{action}"
         
     | 
| 
       456 
468 
     | 
    
         
             
                end
         
     | 
| 
       457 
469 
     | 
    
         | 
| 
       458 
     | 
    
         
            -
             
     | 
| 
      
 470 
     | 
    
         
            +
                def link_to_bliki(entry, web = web_address) #{{{
         
     | 
| 
      
 471 
     | 
    
         
            +
                  "<a class='existingWikiWord' href='/#{web}/bliki_revision/#{entry.name}?rev=#{entry.revisions.size-1}'>#{entry.name}</a>"
         
     | 
| 
      
 472 
     | 
    
         
            +
                end #}}}
         
     | 
| 
      
 473 
     | 
    
         
            +
                
         
     | 
| 
       459 
474 
     | 
    
         | 
| 
       460 
475 
     | 
    
         
             
              private
         
     | 
| 
       461 
476 
     | 
    
         
             
                def wiki
         
     | 
| 
         @@ -12,8 +12,8 @@ class Category < Chunk::Abstract 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              attr_reader :hidden, :list
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
              def initialize(match_data)
         
     | 
| 
       16 
     | 
    
         
            -
                super(match_data)
         
     | 
| 
      
 15 
     | 
    
         
            +
              def initialize(match_data, revision)
         
     | 
| 
      
 16 
     | 
    
         
            +
                super(match_data, revision)
         
     | 
| 
       17 
17 
     | 
    
         
             
                @hidden = match_data[1]
         
     | 
| 
       18 
18 
     | 
    
         
             
                @list = match_data[2].split(',').map { |c| c.strip }
         
     | 
| 
       19 
19 
     | 
    
         
             
              end
         
     | 
    
        data/app/models/chunks/chunk.rb
    CHANGED
    
    | 
         @@ -8,9 +8,9 @@ require 'uri/common' 
     | 
|
| 
       8 
8 
     | 
    
         
             
            # match by its pattern. 
         
     | 
| 
       9 
9 
     | 
    
         
             
            module Chunk
         
     | 
| 
       10 
10 
     | 
    
         
             
              class Abstract
         
     | 
| 
       11 
     | 
    
         
            -
            	attr_reader :text
         
     | 
| 
      
 11 
     | 
    
         
            +
            	attr_reader :text, :revision
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            	def initialize(match_data) @text = match_data[0] end
         
     | 
| 
      
 13 
     | 
    
         
            +
            	def initialize(match_data, revision) @text = match_data[0]; @revision = revision end
         
     | 
| 
       14 
14 
     | 
    
         
             
            	def pre_mask() "chunk#{self.id}start " end
         
     | 
| 
       15 
15 
     | 
    
         
             
            	def post_mask() " chunk#{self.id}end" end
         
     | 
| 
       16 
16 
     | 
    
         
             
            	def mask(content) "chunk#{self.id}chunk" end
         
     | 
    
        data/app/models/chunks/nowiki.rb
    CHANGED
    
    
    
        data/app/models/chunks/todo.rb
    CHANGED
    
    
    
        data/app/models/chunks/uri.rb
    CHANGED
    
    | 
         @@ -52,8 +52,8 @@ class URIChunk < Chunk::Abstract 
     | 
|
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
              attr_reader :uri, :scheme, :user, :host, :port, :path, :query, :fragment, :link_text
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
              def initialize(match_data)
         
     | 
| 
       56 
     | 
    
         
            -
                super(match_data)
         
     | 
| 
      
 55 
     | 
    
         
            +
              def initialize(match_data, revision)
         
     | 
| 
      
 56 
     | 
    
         
            +
                super(match_data, revision)
         
     | 
| 
       57 
57 
     | 
    
         
             
                # Since the URI_PATTERN is tried twice, there are two sets of
         
     | 
| 
       58 
58 
     | 
    
         
             
                # groups, one from \1 to \7 and the second from \8 to \14.
         
     | 
| 
       59 
59 
     | 
    
         
             
                # The fields are set by which ever group matches.
         
     | 
    
        data/app/models/chunks/wiki.rb
    CHANGED
    
    | 
         @@ -41,8 +41,8 @@ module WikiChunk 
     | 
|
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                attr_reader :page_name
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                def initialize(match_data)
         
     | 
| 
       45 
     | 
    
         
            -
                  super(match_data)
         
     | 
| 
      
 44 
     | 
    
         
            +
                def initialize(match_data, revision)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  super(match_data, revision)
         
     | 
| 
       46 
46 
     | 
    
         
             
                  @escape = match_data[1]
         
     | 
| 
       47 
47 
     | 
    
         
             
                  @page_name = match_data[2]
         
     | 
| 
       48 
48 
     | 
    
         
             
                end
         
     | 
| 
         @@ -66,8 +66,8 @@ module WikiChunk 
     | 
|
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
                attr_reader :page_name, :link_text
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                def initialize(match_data)
         
     | 
| 
       70 
     | 
    
         
            -
                  super(match_data)
         
     | 
| 
      
 69 
     | 
    
         
            +
                def initialize(match_data, revision)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  super(match_data, revision)
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
            	  # If the like is aliased, set the page name to the first bit
         
     | 
| 
       73 
73 
     | 
    
         
             
            	  # and the link text to the second, otherwise set both to the
         
     | 
| 
         @@ -79,4 +79,25 @@ module WikiChunk 
     | 
|
| 
       79 
79 
     | 
    
         
             
                  end
         
     | 
| 
       80 
80 
     | 
    
         
             
                end
         
     | 
| 
       81 
81 
     | 
    
         
             
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              # This chunk handles [bliki[entry name]].
         
     | 
| 
      
 84 
     | 
    
         
            +
              # This format can be easily duplicated for any other pre-configured redirection.
         
     | 
| 
      
 85 
     | 
    
         
            +
              class BlikiLink < WikiLink
         
     | 
| 
      
 86 
     | 
    
         
            +
                def self.pattern() /\[bliki\[([\w\d\s]+)\]\]/ end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                attr_reader :page_name, :link_text, :entry
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                def initialize(match_data, revision)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  super(match_data, revision)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  @page_name, @link_text = match_data[1], match_data[1]
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                def unmask(content)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  return self if content.sub!(regexp) { |match|
         
     | 
| 
      
 97 
     | 
    
         
            +
                    web = revision.page.web
         
     | 
| 
      
 98 
     | 
    
         
            +
                    entry = web.bliki[page_name]
         
     | 
| 
      
 99 
     | 
    
         
            +
                    "<a class='existingWikiWord' href='/#{web.address}/bliki_revision/#{entry.name}?rev=#{entry.revisions.size-1}'>#{entry.name}</a>"
         
     | 
| 
      
 100 
     | 
    
         
            +
                  }
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
              end
         
     | 
| 
       82 
103 
     | 
    
         
             
            end
         
     | 
    
        data/app/models/web.rb
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ require "wiki_words" 
     | 
|
| 
       5 
5 
     | 
    
         
             
            require "zip/zip"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            class Web
         
     | 
| 
       8 
     | 
    
         
            -
              attr_accessor :pages, :name, :address, :password, :menu_type, :menu_content, :rendered_menu, :menu_limit
         
     | 
| 
      
 8 
     | 
    
         
            +
              attr_accessor :pages, :name, :address, :password, :menu_type, :menu_content, :rendered_menu, :menu_limit, :menu_category
         
     | 
| 
       9 
9 
     | 
    
         
             
              attr_accessor :markup, :color, :safe_mode, :additional_style, :published, :brackets_only, :count_pages
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              @@BLIKI_TEMPLATE = "Try a weekly worksheet:\n\n| / | *Morning* | *Afternoon* |\n" +
         
     | 
| 
         @@ -103,9 +103,10 @@ class Web 
     | 
|
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                  # Graph properties:
         
     | 
| 
       105 
105 
     | 
    
         
             
                  file.puts "digraph G {"
         
     | 
| 
       106 
     | 
    
         
            -
                  file.puts 'size 
     | 
| 
       107 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
       108 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
      
 106 
     | 
    
         
            +
                  file.puts 'size="8,8";'
         
     | 
| 
      
 107 
     | 
    
         
            +
                  file.puts 'ratio=fill;'
         
     | 
| 
      
 108 
     | 
    
         
            +
                  file.puts 'concentrate=true;'
         
     | 
| 
      
 109 
     | 
    
         
            +
                  file.puts 'node [fontsize=10,fontname="Tahoma"];'
         
     | 
| 
       109 
110 
     | 
    
         
             
                  file.puts 'edge [len=1.5];'
         
     | 
| 
       110 
111 
     | 
    
         | 
| 
       111 
112 
     | 
    
         
             
                  # Page Special nodes properties:
         
     | 
| 
         @@ -133,7 +134,7 @@ class Web 
     | 
|
| 
       133 
134 
     | 
    
         
             
                  # find missing pages:
         
     | 
| 
       134 
135 
     | 
    
         
             
                  if missing
         
     | 
| 
       135 
136 
     | 
    
         
             
                    missing.each do |wanted|
         
     | 
| 
       136 
     | 
    
         
            -
                      file.puts "#{wanted} [URL=\"/#{@address}/show/#{wanted}\", fontsize= 
     | 
| 
      
 137 
     | 
    
         
            +
                      file.puts "#{wanted} [URL=\"/#{@address}/show/#{wanted}\", fontsize=10,style=filled,color=grey];"
         
     | 
| 
       137 
138 
     | 
    
         
             
                    end
         
     | 
| 
       138 
139 
     | 
    
         
             
                    pages.values.each do |page|
         
     | 
| 
       139 
140 
     | 
    
         
             
                      missing.each do |wanted|
         
     | 
| 
         @@ -162,9 +163,10 @@ class Web 
     | 
|
| 
       162 
163 
     | 
    
         | 
| 
       163 
164 
     | 
    
         
             
                  # Graph properties:
         
     | 
| 
       164 
165 
     | 
    
         
             
                  file.puts "digraph G {"
         
     | 
| 
       165 
     | 
    
         
            -
                  file.puts 'size 
     | 
| 
       166 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
       167 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
      
 166 
     | 
    
         
            +
                  file.puts 'size="8,8";'
         
     | 
| 
      
 167 
     | 
    
         
            +
                  file.puts 'ratio=fill;'
         
     | 
| 
      
 168 
     | 
    
         
            +
                  file.puts 'concentrate=true;'
         
     | 
| 
      
 169 
     | 
    
         
            +
                  file.puts 'node [fontsize=10,fontname="Tahoma"];'
         
     | 
| 
       168 
170 
     | 
    
         
             
                  file.puts 'edge [len=1.5];'
         
     | 
| 
       169 
171 
     | 
    
         | 
| 
       170 
172 
     | 
    
         
             
                  # Links and node properties:
         
     | 
| 
         @@ -199,15 +201,16 @@ class Web 
     | 
|
| 
       199 
201 
     | 
    
         
             
                File.open(dotFile, "w") do |file|
         
     | 
| 
       200 
202 
     | 
    
         
             
                  # Graph properties:
         
     | 
| 
       201 
203 
     | 
    
         
             
                  file.puts "digraph G {"
         
     | 
| 
       202 
     | 
    
         
            -
                  file.puts 'size 
     | 
| 
       203 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
       204 
     | 
    
         
            -
                  file.puts ' 
     | 
| 
      
 204 
     | 
    
         
            +
                  file.puts 'size="8,8";'
         
     | 
| 
      
 205 
     | 
    
         
            +
                  file.puts 'ratio=fill;'
         
     | 
| 
      
 206 
     | 
    
         
            +
                  file.puts 'concentrate=true;'
         
     | 
| 
      
 207 
     | 
    
         
            +
                  file.puts 'node [fontsize=10,fontname="Tahoma"];'
         
     | 
| 
       205 
208 
     | 
    
         
             
                  file.puts 'edge [len=1.5];'
         
     | 
| 
       206 
209 
     | 
    
         | 
| 
       207 
210 
     | 
    
         
             
                  # Page Special nodes properties:
         
     | 
| 
       208 
211 
     | 
    
         
             
                  file.puts "HomePage [color=\"##{color}\",style=bold];"
         
     | 
| 
       209 
212 
     | 
    
         
             
                  categories.each do |category|
         
     | 
| 
       210 
     | 
    
         
            -
                    file.puts "#{category} [style=filled,color=grey];"
         
     | 
| 
      
 213 
     | 
    
         
            +
                    file.puts "#{category} [fontsize=20,style=filled,color=grey,comment=\"#{category}\"];"
         
     | 
| 
       211 
214 
     | 
    
         
             
                  end
         
     | 
| 
       212 
215 
     | 
    
         | 
| 
       213 
216 
     | 
    
         
             
                  # Links and node properties:
         
     | 
    
        data/app/models/wiki_content.rb
    CHANGED
    
    | 
         @@ -43,7 +43,7 @@ class WikiContent < String 
     | 
|
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
              # Moved URIChunk from pre-engine to post-engine, as it clashed with the textile
         
     | 
| 
       45 
45 
     | 
    
         
             
              # markup of "link":URL.
         
     | 
| 
       46 
     | 
    
         
            -
              PRE_ENGINE_ACTIONS  = [ NoWiki, Category, Include, WikiChunk::Link, WikiChunk::Word ] 
         
     | 
| 
      
 46 
     | 
    
         
            +
              PRE_ENGINE_ACTIONS  = [ NoWiki, Category, Include, WikiChunk::BlikiLink, WikiChunk::Link, WikiChunk::Word ] 
         
     | 
| 
       47 
47 
     | 
    
         
             
              POST_ENGINE_ACTIONS = [ Literal::Pre, Literal::Tags, URIChunk, Todo ]
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         | 
| 
         @@ -106,7 +106,7 @@ class WikiContent < String 
     | 
|
| 
       106 
106 
     | 
    
         
             
              # in this content with its mask.
         
     | 
| 
       107 
107 
     | 
    
         
             
              def apply_type!(chunk_type)
         
     | 
| 
       108 
108 
     | 
    
         
             
                self.gsub!( chunk_type.pattern ) do |match|
         
     | 
| 
       109 
     | 
    
         
            -
                  @chunks << chunk_type.new( 
     | 
| 
      
 109 
     | 
    
         
            +
                  @chunks << chunk_type.new($~, @revision)
         
     | 
| 
       110 
110 
     | 
    
         
             
                  @chunks.last.mask(self)
         
     | 
| 
       111 
111 
     | 
    
         
             
                end
         
     | 
| 
       112 
112 
     | 
    
         
             
              end
         
     | 
    
        data/app/models/wiki_service.rb
    CHANGED
    
    | 
         @@ -86,10 +86,11 @@ class WikiService < MadeleineService 
     | 
|
| 
       86 
86 
     | 
    
         
             
                web.pages[new_page_name] = page
         
     | 
| 
       87 
87 
     | 
    
         
             
              end #}}}
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
              def save_menu_pref(web, type, limit, content) #{{{
         
     | 
| 
      
 89 
     | 
    
         
            +
              def save_menu_pref(web, type, limit, content, category) #{{{
         
     | 
| 
       90 
90 
     | 
    
         
             
                web.menu_type = type
         
     | 
| 
       91 
91 
     | 
    
         
             
                web.menu_limit = limit
         
     | 
| 
       92 
92 
     | 
    
         
             
                web.menu_content = content
         
     | 
| 
      
 93 
     | 
    
         
            +
                web.menu_category = category
         
     | 
| 
       93 
94 
     | 
    
         
             
                if web.menu_type == 'user'
         
     | 
| 
       94 
95 
     | 
    
         
             
                  # only calculate the rendered content once:
         
     | 
| 
       95 
96 
     | 
    
         
             
                  web.rendered_menu = Page.new(
         
     | 
| 
         @@ -21,8 +21,7 @@ 
     | 
|
| 
       21 
21 
     | 
    
         
             
            | *Tue* | - | - |
         
     | 
| 
       22 
22 
     | 
    
         
             
            | *Wed* | - | - |
         
     | 
| 
       23 
23 
     | 
    
         
             
            | *Thu* | - | - |
         
     | 
| 
       24 
     | 
    
         
            -
            | *Fri* | - | -  
     | 
| 
       25 
     | 
    
         
            -
                  </textarea></td>
         
     | 
| 
      
 24 
     | 
    
         
            +
            | *Fri* | - | - |</textarea></td>
         
     | 
| 
       26 
25 
     | 
    
         
             
                </tr>
         
     | 
| 
       27 
26 
     | 
    
         
             
                <tr style="background-color:efe">
         
     | 
| 
       28 
27 
     | 
    
         
             
                  <th colspan="2" align="right">
         
     | 
| 
         @@ -39,17 +38,17 @@ 
     | 
|
| 
       39 
38 
     | 
    
         
             
              </p>
         
     | 
| 
       40 
39 
     | 
    
         
             
            </form>
         
     | 
| 
       41 
40 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
            <script language=" 
     | 
| 
      
 41 
     | 
    
         
            +
            <script language="JavaScript">
         
     | 
| 
       43 
42 
     | 
    
         
             
            function validateWikiWords() {
         
     | 
| 
       44 
     | 
    
         
            -
              alert(escape(document.getElementById('newPageName').value));
         
     | 
| 
       45 
     | 
    
         
            -
              return false;
         
     | 
| 
      
 43 
     | 
    
         
            +
              // alert(escape(document.getElementById('newPageName').value));
         
     | 
| 
      
 44 
     | 
    
         
            +
              // return false;
         
     | 
| 
       46 
45 
     | 
    
         
             
              if (/^([A-Z][a-z]+[A-Z]\w+)$/.test(document.getElementById('authorName').value)) {
         
     | 
| 
       47 
46 
     | 
    
         
             
                // return true; skip to validate page name
         
     | 
| 
       48 
47 
     | 
    
         
             
              } else {
         
     | 
| 
       49 
48 
     | 
    
         
             
                alert('You wrote "' + document.getElementById('authorName').value + '" as your name, but it needs to be a wiki word. Try concating first name and last name, like DavidHeinemeierHansson.');
         
     | 
| 
       50 
49 
     | 
    
         
             
                return false;
         
     | 
| 
       51 
50 
     | 
    
         
             
              }
         
     | 
| 
       52 
     | 
    
         
            -
              if (/^[\w\s\d]+)$/.test(document.getElementById('newPageName').value)) {
         
     | 
| 
      
 51 
     | 
    
         
            +
              if (/^([\w\s\d]+)$/.test(document.getElementById('newPageName').value)) {
         
     | 
| 
       53 
52 
     | 
    
         
             
                return true;
         
     | 
| 
       54 
53 
     | 
    
         
             
              } else {
         
     | 
| 
       55 
54 
     | 
    
         
             
                alert('You wrote "' + document.getElementById('newPageName').value + '" as the entry name, but it can only contain letters, digits and space.');
         
     | 
| 
         @@ -20,23 +20,23 @@ 
     | 
|
| 
       20 
20 
     | 
    
         
             
            </div>
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            <div class="navigation">
         
     | 
| 
      
 23 
     | 
    
         
            +
              <a href="../bliki_edit/<%= @page.name %>" class="navlink">Edit</a> |
         
     | 
| 
       23 
24 
     | 
    
         
             
              <% if @revision.previous_revision %>
         
     | 
| 
       24 
25 
     | 
    
         
             
                   <a href="../bliki_revision/<%= @page.name %>?rev=<%= @revision.previous_revision.number %>" class="navlink">Lower</a>
         
     | 
| 
       25 
     | 
    
         
            -
              <% 
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
              <% else %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                   <span style="color:grey">Lower</span>
         
     | 
| 
      
 28 
     | 
    
         
            +
              <% end %> -
         
     | 
| 
      
 29 
     | 
    
         
            +
              <% if @revision.next_revision %>
         
     | 
| 
      
 30 
     | 
    
         
            +
                   <a href="../bliki_revision/<%= @page.name %>?rev=<%= @revision.next_revision.number %>" class="navlink">Higher</a>
         
     | 
| 
      
 31 
     | 
    
         
            +
              <% else %>
         
     | 
| 
      
 32 
     | 
    
         
            +
                   <span style="color:grey">Higher</span>
         
     | 
| 
       32 
33 
     | 
    
         
             
              <% end %>
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
              <%= '|' if @revision.previous_revision or @revision.next_revision %> 
         
     | 
| 
       35 
36 
     | 
    
         
             
              <a href="../bliki_delete/<%= @page.name %>" class="navlink" onClick="return confirm('Are you sure you want delete this entry completely?')">Delete All</a>
         
     | 
| 
       36 
37 
     | 
    
         
             
              <% if @revision.next_revision %>
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                | <a href="../rollback_bliki/<%= @page.name %>?rev=<%= @revision.number - 1 %>" 
         
     | 
| 
      
 38 
     | 
    
         
            +
                | <a href="../bliki_revision/<%= @page.name %>?rev=<%= @page.revisions.length - 1 %>" class="navlink">Back to current</a>
         
     | 
| 
      
 39 
     | 
    
         
            +
                | <a href="../rollback_bliki/<%= @page.name %>?rev=<%= @revision.number %>" 
         
     | 
| 
       40 
40 
     | 
    
         
             
                     class="navlink" onClick="return confirm('Are you sure you want reset the page to this revision?')">Rollback to here</a>
         
     | 
| 
       41 
41 
     | 
    
         
             
              <% end %>
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
         @@ -9,11 +9,19 @@ 
     | 
|
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            <form id="editForm" action="../save_menu" method="post">
         
     | 
| 
       11 
11 
     | 
    
         
             
            <p>Please choose the format you prefer for the left-size menu:</p>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <p><input type="radio" name="type" value="linkers" <%= 'checked' if @menu_type == 'linkers' %>>Only pages that link other pages (default)</p>
         
     | 
| 
       12 
13 
     | 
    
         
             
            <p><input type="radio" name="type" value="all" <%= 'checked' if @menu_type == 'all' %>>All Pages</p>
         
     | 
| 
       13 
14 
     | 
    
         
             
            <p><input type="radio" name="type" value="revised" <%= 'checked' if @menu_type == 'revised' %>>Recently revised pages</p>
         
     | 
| 
       14 
15 
     | 
    
         
             
            <p><input type="radio" name="type" value="recent" <%= 'checked' if @menu_type == 'recent' %>>Recently visited pages</p>
         
     | 
| 
       15 
16 
     | 
    
         
             
            <p><input type="radio" name="type" value="viewed" <%= 'checked' if @menu_type == 'viewed' %>>Most viewed pages</p>
         
     | 
| 
       16 
     | 
    
         
            -
            <p><input type="radio" name="type" value=" 
     | 
| 
      
 17 
     | 
    
         
            +
            <p><input type="radio" name="type" value="category" <%= 'checked' if @menu_type == 'category' %>>Pages in a specific category: 
         
     | 
| 
      
 18 
     | 
    
         
            +
               <select id="category" name="category" size="1" style="width:190">
         
     | 
| 
      
 19 
     | 
    
         
            +
                 <option value="noselect">------------
         
     | 
| 
      
 20 
     | 
    
         
            +
                 <% for category in web.categories %>
         
     | 
| 
      
 21 
     | 
    
         
            +
                   <option value="<%= category %>"><%= category %>
         
     | 
| 
      
 22 
     | 
    
         
            +
                 <% end %>
         
     | 
| 
      
 23 
     | 
    
         
            +
               </select>
         
     | 
| 
      
 24 
     | 
    
         
            +
            </p>
         
     | 
| 
       17 
25 
     | 
    
         
             
            <p>For the above options you can choose if you want to limit the number of results. Enter the number of items you wish, or 0 for all items: <input type="textfield" size="20", name="limit" value="<%= @list_limit %>" /></p>
         
     | 
| 
       18 
26 
     | 
    
         
             
            <p><input type="radio" name="type" value="user" <%= 'checked' if @menu_type == 'user' %>>Or just write your own menu contents (as a regular Wiki page):
         
     | 
| 
       19 
27 
     | 
    
         
             
                <textarea name="content" style="width: 400px; height: 300px"><%= @menu_content %></textarea>
         
     | 
    
        data/app/views/wiki/list.rhtml
    CHANGED
    
    | 
         @@ -100,7 +100,7 @@ 
     | 
|
| 
       100 
100 
     | 
    
         
             
                  <tr>
         
     | 
| 
       101 
101 
     | 
    
         
             
                    <form class="navigation" action="list/" action="get" onSubmit="return validateSelection('sel_delete') && verifyDelete();">
         
     | 
| 
       102 
102 
     | 
    
         
             
                    <td>Delete page:</td>
         
     | 
| 
       103 
     | 
    
         
            -
                    <td><select id="sel_delete" name="sel_page_name" size="1">
         
     | 
| 
      
 103 
     | 
    
         
            +
                    <td><select id="sel_delete" name="sel_page_name" size="1" style="width:190">
         
     | 
| 
       104 
104 
     | 
    
         
             
                          <option value="noselect">------------
         
     | 
| 
       105 
105 
     | 
    
         
             
                          <% for page in @pages_by_name %>
         
     | 
| 
       106 
106 
     | 
    
         
             
                            <option value="<%= page.name %>"><%= page.name %>
         
     | 
| 
         @@ -119,7 +119,7 @@ 
     | 
|
| 
       119 
119 
     | 
    
         
             
                  <tr>
         
     | 
| 
       120 
120 
     | 
    
         
             
                    <form class="navigation" action="../list/" action="get" onSubmit="return validateSelection('sel_rename') && verifyRename() && validatePageName('ren_newpage');">
         
     | 
| 
       121 
121 
     | 
    
         
             
                    <td>Rename:</td>
         
     | 
| 
       122 
     | 
    
         
            -
                    <td><select id="sel_rename" name="sel_page_name" size="1">
         
     | 
| 
      
 122 
     | 
    
         
            +
                    <td><select id="sel_rename" name="sel_page_name" size="1" style="width:190">
         
     | 
| 
       123 
123 
     | 
    
         
             
                          <option value="noselect">------------
         
     | 
| 
       124 
124 
     | 
    
         
             
                          <% for page in @pages_by_name %>
         
     | 
| 
       125 
125 
     | 
    
         
             
                            <option value="<%= page.name %>"><%= page.name %>
         
     | 
| 
         @@ -130,7 +130,7 @@ 
     | 
|
| 
       130 
130 
     | 
    
         
             
                  <tr>
         
     | 
| 
       131 
131 
     | 
    
         
             
                    <td align="center">To:</td>
         
     | 
| 
       132 
132 
     | 
    
         
             
                    <td>
         
     | 
| 
       133 
     | 
    
         
            -
                      <input type="text" name="newpage" id="ren_newpage" size=28>
         
     | 
| 
      
 133 
     | 
    
         
            +
                      <input type="text" name="newpage" id="ren_newpage" size="28">
         
     | 
| 
       134 
134 
     | 
    
         
             
                    </td>
         
     | 
| 
       135 
135 
     | 
    
         
             
                  </tr>
         
     | 
| 
       136 
136 
     | 
    
         
             
                  <tr>
         
     | 
| 
         @@ -145,7 +145,7 @@ 
     | 
|
| 
       145 
145 
     | 
    
         
             
                    <form class="navigation" action="../list/" action="get" onSubmit="return validatePageName('newpage');">
         
     | 
| 
       146 
146 
     | 
    
         
             
                    <td>Create New Page:</td>
         
     | 
| 
       147 
147 
     | 
    
         
             
                    <td>
         
     | 
| 
       148 
     | 
    
         
            -
                      <input type="text" name="newpage" id="newpage"  size=28>
         
     | 
| 
      
 148 
     | 
    
         
            +
                      <input type="text" name="newpage" id="newpage"  size="28">
         
     | 
| 
       149 
149 
     | 
    
         
             
                    </td>
         
     | 
| 
       150 
150 
     | 
    
         
             
                  </tr>
         
     | 
| 
       151 
151 
     | 
    
         
             
                  <tr>
         
     | 
    
        data/app/views/wiki/mind.rhtml
    CHANGED
    
    | 
         @@ -1,12 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <% @title = "Mind Map" 
     | 
| 
      
 1 
     | 
    
         
            +
            <% @title = "Mind Map"
         
     | 
| 
      
 2 
     | 
    
         
            +
               @style_additions = "img { width: 8in; }"
         
     | 
| 
      
 3 
     | 
    
         
            +
            %>
         
     | 
| 
       2 
4 
     | 
    
         
             
            <%= sub_template "top" %>
         
     | 
| 
       3 
5 
     | 
    
         | 
| 
       4 
6 
     | 
    
         
             
            <h4>A "Mind Map" created from the Wiki links.</h4>
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
8 
     | 
    
         
             
            <table border=0>
         
     | 
| 
       7 
9 
     | 
    
         
             
             <tr>
         
     | 
| 
       8 
     | 
    
         
            -
              <td colspan=3>
         
     | 
| 
       9 
     | 
    
         
            -
               <img src="file://<%= @pngFile %>" usemap="#graph.map" 
     | 
| 
      
 10 
     | 
    
         
            +
              <td colspan='3' id='mapcell'>
         
     | 
| 
      
 11 
     | 
    
         
            +
               <img src="file://<%= @pngFile %>" usemap="#graph.map" />
         
     | 
| 
       10 
12 
     | 
    
         
             
               <map name="graph.map"><%= File.read(@mapFile) %></map>
         
     | 
| 
       11 
13 
     | 
    
         
             
              </td>
         
     | 
| 
       12 
14 
     | 
    
         
             
             </tr>
         
     | 
| 
         @@ -15,8 +15,8 @@ 
     | 
|
| 
       15 
15 
     | 
    
         
             
                </div>
         
     | 
| 
       16 
16 
     | 
    
         
             
                <div class="inputBox">
         
     | 
| 
       17 
17 
     | 
    
         
             
                  Name: <input type="text" id="web_name" name="web_name" value="Wiki" onChange="proposeAddress();" 
         
     | 
| 
       18 
     | 
    
         
            -
                      onClick="this.value == ' 
     | 
| 
       19 
     | 
    
         
            -
                  Address: <input type="text" id="web_address" name="web_address" onChange="cleanAddress();" value=" 
     | 
| 
      
 18 
     | 
    
         
            +
                      onClick="this.value == 'Pimki' ? this.value = '' : true">   
         
     | 
| 
      
 19 
     | 
    
         
            +
                  Address: <input type="text" id="web_address" name="web_address" onChange="cleanAddress();" value="pimki">
         
     | 
| 
       20 
20 
     | 
    
         
             
                </div>
         
     | 
| 
       21 
21 
     | 
    
         
             
              </li>
         
     | 
| 
       22 
22 
     | 
    
         | 
    
        data/app/views/wiki/todo.rhtml
    CHANGED
    
    | 
         @@ -1,8 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <% @title = "ToDo" %>
         
     | 
| 
       2 
2 
     | 
    
         
             
            <%= sub_template "top" %>
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            <% num_items = @todo_items.inject(0) { |n, (p,i)| n += i.size }
         
     | 
| 
      
 4 
     | 
    
         
            +
               num_items += @bliki_todo_items.inject(0) { |n, (p,i)| n += i.size }
         
     | 
| 
      
 5 
     | 
    
         
            +
            %>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <h3>There <%= num_items == 1 ? 'is' : 'are' %> <%= num_items.zero? ? "no" : num_items %> ToDo item<%= num_items != 1 ? 's' : '' %>.
         
     | 
| 
       6 
7 
     | 
    
         
             
            </h3>
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
9 
     | 
    
         
             
            <ul>
         
     | 
| 
         @@ -29,6 +30,33 @@ 
     | 
|
| 
       29 
30 
     | 
    
         
             
            <% end %>
         
     | 
| 
       30 
31 
     | 
    
         
             
            </ul>
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            <% if @bliki_todo_items.size > 0 %>
         
     | 
| 
      
 34 
     | 
    
         
            +
              <h4>ToDo items from Bliki:</h4>
         
     | 
| 
      
 35 
     | 
    
         
            +
              <ul>
         
     | 
| 
      
 36 
     | 
    
         
            +
              <% @bliki_todo_items.each do |page, items| %>
         
     | 
| 
      
 37 
     | 
    
         
            +
                <li><%= link_to_bliki(page) %>
         
     | 
| 
      
 38 
     | 
    
         
            +
                    <ul>
         
     | 
| 
      
 39 
     | 
    
         
            +
                      <% items.each do |item|
         
     | 
| 
      
 40 
     | 
    
         
            +
                           # default is the muted 'darkred', to prevent to many bright red
         
     | 
| 
      
 41 
     | 
    
         
            +
                           # items on one page: (See also chunks/todo.rb)
         
     | 
| 
      
 42 
     | 
    
         
            +
                           tclass = "todoFuture"
         
     | 
| 
      
 43 
     | 
    
         
            +
                           # next check is the item is dated:
         
     | 
| 
      
 44 
     | 
    
         
            +
                           d = ParseDate.parsedate(item[0]) rescue nil
         
     | 
| 
      
 45 
     | 
    
         
            +
                           if not d.nil? and not d.all? { |x| x.nil? }
         
     | 
| 
      
 46 
     | 
    
         
            +
                             # there's a date in the todo. display it accordingly
         
     | 
| 
      
 47 
     | 
    
         
            +
                             d[0] ||= today.year    # make sure there's a 'year' component
         
     | 
| 
      
 48 
     | 
    
         
            +
                             d = Date.new(*d[0..2])  rescue nil
         
     | 
| 
      
 49 
     | 
    
         
            +
                             tclass = 'todo' if (not d.nil?) and ((today <=> d) > -1)
         
     | 
| 
      
 50 
     | 
    
         
            +
                           end %>
         
     | 
| 
      
 51 
     | 
    
         
            +
                           <li class="<%= tclass %>"><%= item %></li>
         
     | 
| 
      
 52 
     | 
    
         
            +
                      <% end %>
         
     | 
| 
      
 53 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 54 
     | 
    
         
            +
                </li>
         
     | 
| 
      
 55 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 56 
     | 
    
         
            +
              </ul>
         
     | 
| 
      
 57 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
       32 
60 
     | 
    
         
             
            <% if num_items == 0  %>
         
     | 
| 
       33 
61 
     | 
    
         
             
              <p>To make ToDo items appear here insert a 'todo' item in any page. Simply write at the start of any line 'todo' followed by a colon (':'), followed by a space and some text. For example:
         
     | 
| 
       34 
62 
     | 
    
         
             
              <pre>todo: some text</pre></p>
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'madeleine/automatic'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'madeleine'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'singleton'
         
     | 
| 
       4 
     | 
    
         
            -
            require ' 
     | 
| 
      
 4 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            class MadeleineService
         
     | 
| 
       7 
7 
     | 
    
         
             
              include Madeleine::Automatic::Interceptor
         
     | 
| 
         @@ -34,7 +34,7 @@ class MadeleineService 
     | 
|
| 
       34 
34 
     | 
    
         
             
            end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            class MadeleineServer
         
     | 
| 
       37 
     | 
    
         
            -
              SNAPSHOT_INTERVAL   = 60 * 60 #  
     | 
| 
      
 37 
     | 
    
         
            +
              SNAPSHOT_INTERVAL   = 60 * 60 * 24 # seconds * minutes * hours => Each day
         
     | 
| 
       38 
38 
     | 
    
         
             
              AUTOMATIC_SNAPSHOTS = true
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
              # Clears all the command_log and snapshot files located in the storage directory, so the
         
     | 
    
        data/pimki.rb
    CHANGED
    
    | 
         @@ -44,7 +44,7 @@ end 
     | 
|
| 
       44 
44 
     | 
    
         
             
            OPTIONS = {
         
     | 
| 
       45 
45 
     | 
    
         
             
              :server_type => fork_available ? Daemon : SimpleServer,
         
     | 
| 
       46 
46 
     | 
    
         
             
              :port        => 2500,
         
     | 
| 
       47 
     | 
    
         
            -
              :storage     => "#{ 
     | 
| 
      
 47 
     | 
    
         
            +
              :storage     => "#{Dir.pwd}/storage",
         
     | 
| 
       48 
48 
     | 
    
         
             
              :pdflatex    => pdflatex_available
         
     | 
| 
       49 
49 
     | 
    
         
             
            }
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
         @@ -62,7 +62,7 @@ ARGV.options do |opts| 
     | 
|
| 
       62 
62 
     | 
    
         
             
                      ) { OPTIONS[:server_type] = SimpleServer }
         
     | 
| 
       63 
63 
     | 
    
         
             
              opts.on("-t", "--storage=storage", String,
         
     | 
| 
       64 
64 
     | 
    
         
             
                      "Makes Instiki use the specified directory for storage.",
         
     | 
| 
       65 
     | 
    
         
            -
                      "Default:  
     | 
| 
      
 65 
     | 
    
         
            +
                      "Default: [cwd]/storage/[port]") { |OPTIONS[:storage]| }
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
              opts.separator ""
         
     | 
| 
       68 
68 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -3,8 +3,8 @@ rubygems_version: 0.8.1 
     | 
|
| 
       3 
3 
     | 
    
         
             
            specification_version: 1
         
     | 
| 
       4 
4 
     | 
    
         
             
            name: Pimki
         
     | 
| 
       5 
5 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
              version: 1. 
     | 
| 
       7 
     | 
    
         
            -
            date: 2004- 
     | 
| 
      
 6 
     | 
    
         
            +
              version: 1.1.092
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2004-12-04
         
     | 
| 
       8 
8 
     | 
    
         
             
            summary: A Personal Information Manager (PIM) based on the Wiki technology of Instiki.
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       10 
10 
     | 
    
         
             
              - libraries
         
     |