Better Display of Interweb Wikilinks

Perhaps not the most creative use of CSS. But,
at least, this will read better.
This commit is contained in:
Jacques Distler 2010-01-03 13:19:47 -06:00
parent 7b7d2e80dc
commit e3aa626489
11 changed files with 57 additions and 24 deletions

View file

@ -155,6 +155,7 @@ module WikiChunk
if web_match
@web_name = normalize_whitespace(web_match[1])
@page_name = web_match[2]
@link_text = @page_name if @link_text == web_match[0]
end
end

View file

@ -180,7 +180,8 @@ class UrlGenerator < AbstractUrlGenerator
action = web.published? && (web != @web || [:publish, :s5].include?(mode) ) ? 'published' : 'show'
href = @controller.url_for :controller => 'wiki', :web => web_address, :action => action,
:id => name, :only_path => true
%{<a class="existingWikiWord" href="#{href}">#{text}</a>}
title = web == @web ? '' : %{ title="#{web_address}"}
%{<a class="existingWikiWord" href="#{href}"#{title}>#{text}</a>}
end
def html_ext

View file

@ -380,6 +380,10 @@ a,li span {
color:#000;
}
a.existingWikiWord[title]{
border: 1px dashed #000;
}
a:hover,a.nav:hover, a:hover math {
background-color:#000;
color:#FFF;

View file

@ -61,3 +61,9 @@ liquor:
web_id: 1
name: liquor
instiki_page:
id: 10
created_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
updated_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
web_id: 2
name: HomePage

View file

@ -91,3 +91,13 @@ liquor_first_revision:
content: "[[!redirects booze]]\n Drinky-poo. [[Instiki:HomePage|go there]]"
author: Guest
ip: 127.0.0.2
instiki_home_page_first_revision:
id: 11
created_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
updated_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
revised_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
page_id: 10
content: First revision of the HomePage end
author: AnAuthor
ip: 127.0.0.1

View file

@ -1,6 +1,6 @@
#!/usr/bin/env ruby
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
require Rails.root.join('test', 'test_helper')
require 'file_controller'
require 'fileutils'
require 'stringio'

View file

@ -4,7 +4,7 @@
# commiting to SVN
# $INSTIKI_TEST_PDFLATEX = true
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
require Rails.root.join('test', 'test_helper')
require 'wiki_controller'
require 'rexml/document'
require 'tempfile'
@ -361,13 +361,13 @@ class WikiControllerTest < ActionController::TestCase
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage' title='instiki'>go there<\/a>/, r.body
r = process('show', 'web' => 'wiki1', 'id' => 'liquor')
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage' title='instiki'>go there<\/a>/, r.body
Web.find_by_address('instiki').update_attribute(:published, true)
@ -375,13 +375,13 @@ class WikiControllerTest < ActionController::TestCase
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage' title='instiki'>go there<\/a>/, r.body
r = process('show', 'web' => 'wiki1', 'id' => 'liquor')
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage' title='instiki'>go there<\/a>/, r.body
set_web_property :published, false
@ -389,7 +389,7 @@ class WikiControllerTest < ActionController::TestCase
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/published\/HomePage' title='instiki'>go there<\/a>/, r.body
Web.find_by_address('instiki').update_attribute(:published, false)
@ -397,7 +397,7 @@ class WikiControllerTest < ActionController::TestCase
assert_response(:success)
assert_equal @liquor, r.template_objects['page']
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage'>go there<\/a>/, r.body
assert_match /<a class='existingWikiWord' href='\/instiki\/show\/HomePage' title='instiki'>go there<\/a>/, r.body
end

View file

@ -2,7 +2,7 @@ ENV['RAILS_ENV'] = 'test'
# Expand the path to environment so that Ruby does not load it multiple times
# File.expand_path can be removed if Ruby 1.9 is in use.
require File.expand_path(File.dirname(__FILE__) + '/../config/environment')
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'test_help'
require 'wiki_content'
@ -20,7 +20,7 @@ class ActiveSupport::TestCase
self.pre_loaded_fixtures = false
self.use_transactional_fixtures = true
self.use_instantiated_fixtures = false
self.fixture_path = File.dirname(__FILE__) + "/fixtures/"
self.fixture_path = Rails.root.join('test', 'fixtures', '')
end
# activate PageObserver
@ -28,7 +28,7 @@ PageObserver.instance
class Test::Unit::TestCase
def create_fixtures(*table_names)
Fixtures.create_fixtures(File.dirname(__FILE__) + "/fixtures", table_names)
Fixtures.create_fixtures(Rails.root.join('test', 'fixtures'), table_names)
end
# Add more helper methods to be used by all tests here...
@ -128,16 +128,21 @@ class StubUrlGenerator < AbstractUrlGenerator
def page_link(mode, name, text, web_address, known_page)
link = CGI.escape(name)
return %{<span class='wikilink-error'><b>Illegal link (target contains a '.'):</b> #{name}</span>} if name.include?('.')
title = web_address == 'wiki1' ? '' : " title='#{web_address}'"
case mode
when :export
if known_page then %{<a class="existingWikiWord" href="#{link}.html">#{text}</a>}
else %{<span class="newWikiWord">#{text}</span>} end
when :publish
if known_page then %{<a class="existingWikiWord" href="../published/#{link}">#{text}</a>}
if known_page then %{<a class="existingWikiWord" href="../published/#{link}"#{title}>#{text}</a>}
else %{<span class="newWikiWord">#{text}</span>} end
else
if known_page
%{<a class="existingWikiWord" href="../show/#{link}">#{text}</a>}
if web_address == 'instiki'
%{<a class="existingWikiWord" href="../../#{web_address}/show/#{link}"#{title}>#{text}</a>}
else
%{<a class="existingWikiWord" href="../show/#{link}"#{title}>#{text}</a>}
end
else
if web_address == 'instiki'
%{<span class="newWikiWord">#{text}<a href="../../#{web_address}/show/#{link}">?</a></span>}

View file

@ -1,7 +1,7 @@
#!/usr/bin/env ruby
# encoding: UTF-8
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
require Rails.root.join('test', 'test_helper')
require 'chunks/wiki'
class WikiTest < Test::Unit::TestCase
@ -115,7 +115,7 @@ class WikiTest < Test::Unit::TestCase
# empty link type
assert_link_parsed_as 'page name', 'link?:', :show, '[[page name|link?:]]'
# unknown link type
assert_link_parsed_as 'create_system', 'page name:create_system', :show,
assert_link_parsed_as 'create_system', 'create_system', :show,
'[[page name:create_system]]'
end

View file

@ -1,7 +1,7 @@
#!/usr/bin/env ruby
# encoding: UTF-8
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
require Rails.root.join('test', 'test_helper')
class PageRendererTest < ActiveSupport::TestCase
fixtures :webs, :pages, :revisions, :system, :wiki_references
@ -662,8 +662,14 @@ END_THM
def test_wiki_link_with_colon
assert_markup_parsed_as(
"<p><span class='newWikiWord'>Instiki:Colon<a href='../../instiki/show/Colon'>?</a></span></p>",
'[[Instiki:Colon]]')
"<p><a class='existingWikiWord' href='../show/HomePage'>HomePage</a></p>",
'[[wiki1:HomePage]]')
end
def test_wiki_link_with_colon_interwiki
assert_markup_parsed_as(
"<p><a class='existingWikiWord' href='../../instiki/show/HomePage' title='instiki'>HomePage</a></p>",
'[[instiki:HomePage]]')
end
def test_list_with_tildas

View file

@ -14,7 +14,7 @@ class WebTest < ActiveSupport::TestCase
def test_pages_by_match
add_sample_pages
assert_equal 2, @web.select { |page| page.content =~ /me/i }.length
assert_equal 3, @web.select { |page| page.content =~ /me/i }.length
assert_equal 1, @web.select { |page| page.content =~ /Who/i }.length
assert_equal 0, @web.select { |page| page.content =~ /none/i }.length
end
@ -27,9 +27,9 @@ class WebTest < ActiveSupport::TestCase
def test_delete
add_sample_pages
assert_equal 2, @web.pages.length
assert_equal 3, @web.pages.length
@web.remove_pages([ @web.page('EverBeenInLove') ])
assert_equal 1, @web.pages(true).length
assert_equal 2, @web.pages(true).length
end
def test_initialize