- °³¿ä
- DeletePage ¾×¼Ç ÷ºÎ ÆÄÀϵµ °°ÀÌ »èÁ¦Çϵµ·Ï º¯°æ
- RenamePage ¾×¼Ç Ãß°¡
- ºñÁö¿À ÆÄÀÏ ÀÎÅÍ³Ý ÀͽºÇ÷η¯¿¡¼ º¸±â
- ³×ÀÌÆ®¿Â ½º¸¶Àϸ® Ãß°¡
- CSV ÇÁ·Î¼¼¼ Ãß°¡
- lua ÆÄ¼ Ãß°¡
- ŸÀÌÆ² ·¹À̾ƿô º¯°æ
- RandomQuote ¹× RandomPage ¸ÅÅ©·Î Ãß°¡
- ³×ºñ°ÔÀ̼ǹ٠nowrap ¼öÁ¤
- RecentChanges ÆäÀÌÁö¿¡¼ RSS Çǵù Á¦´ë·Î ¾È µÇ´Â °Å ¼öÁ¤
- RecentChanges ÆäÀÌÁö¿¡¼ ·¹À̾ƿô ±úÁö´Â °Å ¼öÁ¤
- C/C++ ÄÚµå »ö±ò ³Ö±â
- BOOK ¸ÅÅ©·Î Ãß°¡
- LinkedFrom ¸ÅÅ©·Î Ãß°¡
- NBSP ¸ÅÅ©·Î Ãß°¡
1 °³¿ä
- ÀÌ À§Å°´Â
koMoinMoin 1.0a4 ¹öÀüÀ¸·Î µ¹¾Æ°¡°í ÀÖ´Ù. ³ë½º¸ðÅ© À§Å°µµ Çѹø ½áº¸°í ½ÍÀºµ¥...
- ÀÌ À§Å°¿¡ °¡ÇØÁø º¯°æµéÀ» Á¤¸®Çغ¸°íÀÚ ÇÑ´Ù.
- ±â¾ïÀÌ Èñ¹ÌÇϱ¸³ª... ¤Ñ¤Ñ;
2 DeletePage ¾×¼Ç ÷ºÎ ÆÄÀϵµ °°ÀÌ »èÁ¦Çϵµ·Ï º¯°æ
# Imports
import string, os
from MoinMoin import config, user, webapi, wikiutil
from MoinMoin.PageEditor import PageEditor
from MoinMoin.i18n import _
from AttachFile import getAttachDir
def execute(pagename, request):
actname = string.split(__name__, '.')[-1]
page = PageEditor(pagename)
# be extra paranoid in dangerous actions
if actname in config.excluded_actions \
or not wikiutil.can_delete_page(pagename, request):
return page.send_page(request,
msg='<strong>%s</strong>' %
_('You are not allowed to delete pages in this wiki!'))
# check whether page exists at all
if not page.exists():
return page.send_page(request,
msg='<strong>%s</strong>' %
_('This page is already deleted or was never created!'))
# check whether the user clicked the delete button
if request.form.has_key('button') and request.form.has_key('ticket'):
# check whether this is a valid deletion request (make outside
# attacks harder by requiring two full HTTP transactions)
if not _checkTicket(request.form['ticket'].value):
return page.send_page(request,
msg='<strong>%s</strong>' %
_('Please use the interactive user interface to delete pages!'))
# Delete the page
page.deletePage(request, request.form.getvalue('comment'))
#----- ÀÌ ºÎºÐ º¯°æ --------
# Delete attachments
attach_dir = getAttachDir(pagename)
if os.path.isdir(attach_dir):
files = os.listdir(attach_dir)
if len(files) > 0:
for file in files:
os.remove(attach_dir + "/" + file)
#---------------------------
# Redirect to RecentChanges
return wikiutil.getSysPage('RecentChanges').send_page(request,
msg='<strong>%s</strong>' %
(_('Page "%s" was sucessfully deleted!') % (pagename,)))
# send deletion form
wikiname = wikiutil.quoteWikiname(pagename)
ticket = _createTicket()
querytext = _('Really delete this page?')
button = _(' Delete ')
comment_label = _("Optional reason for the deletion")
formhtml = """
<form method="GET" action="%(wikiname)s">
<strong>%(querytext)s</strong>
<input type="hidden" name="action" value="%(actname)s">
<input type="hidden" name="ticket" value="%(ticket)s">
<input type="submit" name="button" value="%(button)s">
<p>
%(comment_label)s<br>
<input type="text" name="comment" size="60" maxlength="60">
</form>""" % locals()
return page.send_page(request, msg=formhtml)
def _createTicket(tm = None):
"""Create a ticket using a site-specific secret (the config)"""
import sha, time, types
ticket = (tm or "%010x" % time.time())
digest = sha.new()
digest.update(ticket)
cfgvars = vars(config)
for var in cfgvars.values():
if type(var) is types.StringType:
digest.update(repr(var))
return ticket + '.' + digest.hexdigest()
def _checkTicket(ticket):
"""Check validity of a previously created ticket"""
timestamp = string.split(ticket, '.')[0]
ourticket = _createTicket(timestamp)
return ticket == ourticket
3 RenamePage ¾×¼Ç Ãß°¡
¸ðÀθðÀÎ À§Å°¿¡ ÀÖ´Â °É °¡Á®´Ù°¡ ÇöÀç ¹öÀü¿¡¼ µ¹¾Æ°¥ ¼ö ÀÖµµ·Ï º¯°æÇϰí, ÷ºÎ ÆÄÀÏ ¿Å±â±â ±â´Éµµ Ãß°¡Çß´Ù.
# Imports
import string, os
from MoinMoin import config, user, webapi, wikiutil
from MoinMoin.PageEditor import PageEditor
from MoinMoin.i18n import _
from AttachFile import getAttachDir
def execute(pagename, request):
#_ = request.getText
actname = string.split(__name__, '.')[-1]
#page = PageEditor(pagename, request)
page = PageEditor(pagename)
# be extra paranoid in dangerous actions
if actname in config.excluded_actions \
or not wikiutil.can_edit_page(pagename, request) \
or not wikiutil.can_delete_page(pagename, request):
return page.send_page(request,
msg='<strong>%s</strong>' %
_('You are not allowed to delete pages in this wiki!'))
# check whether page exists at all
if not page.exists():
return page.send_page(request,
msg='<strong>%s</strong>' %
_('This page is already deleted or was never created!'))
# check whether the user clicked the delete button
if request.form.has_key('button') \
and request.form.has_key('newpagename') \
and request.form.has_key('ticket'):
# check whether this is a valid renaming request (make outside
# attacks harder by requiring two full HTTP transactions)
if not _checkTicket(request.form['ticket'].value):
return page.send_page(request,
msg='<strong>%s</strong>' %
_('Please use the interactive user interface to rename pages!'))
comment = request.form.getvalue('comment') or ''
newpagename = request.form.getvalue('newpagename')
#newpage = PageEditor(newpagename, request)
newpage = PageEditor(newpagename)
# check whether a page with the new name already exists
if newpage.exists():
return newpage.send_page(request,
msg='<strong>%s</strong>' %
(_('A page with the new name "%s" already exists!') % (newpagename,)))
# read content of old page and save in new page
savetext = page.get_raw_body()
datestamp = '0'
#savemsg = newpage.saveText(savetext, datestamp,
# stripspaces=0, notify=1, comment=comment)
savemsg = newpage.save_text(request, savetext, datestamp,
stripspaces=0, notify=1, comment=comment)
# move attachment
old_attach_dir = getAttachDir(pagename)
new_attach_dir = getAttachDir(newpagename)
files = []
if os.path.isdir(old_attach_dir):
files = os.listdir(old_attach_dir)
if len(files) > 0:
if not os.path.isdir(new_attach_dir):
os.makedirs(new_attach_dir, 0777 & config.umask)
for file in files:
os.rename(old_attach_dir + "/" + file, new_attach_dir + "/" + file)
# Delete the old page
page.deletePage(request, comment)
return newpage.send_page(request,
msg='<strong>%s</strong>' %
(_('Page "%s" was sucessfully renamed to "%s"!') % (pagename,newpagename)))
# send deletion form
wikiname = wikiutil.quoteWikiname(pagename)
ticket = _createTicket()
button = _(' Rename ')
newname_label = _("New name")
comment_label = _("Optional reason for the renaming")
formhtml = """
<form method="GET" action="%(wikiname)s">
<input type="hidden" name="action" value="%(actname)s">
<input type="hidden" name="ticket" value="%(ticket)s">
%(newname_label)s <input type="text" name="newpagename" size="20" value="%(pagename)s">
<input type="submit" name="button" value="%(button)s">
<p>
%(comment_label)s<br>
<input type="text" name="comment" size="60" maxlength="80">
</form>""" % locals()
return page.send_page(request, msg=formhtml)
def _createTicket(tm = None):
"""Create a ticket using a site-specific secret (the config)"""
import sha, time, types
ticket = (tm or "%010x" % time.time())
digest = sha.new()
digest.update(ticket)
cfgvars = vars(config)
for var in cfgvars.values():
if type(var) is types.StringType:
digest.update(repr(var))
return ticket + '.' + digest.hexdigest()
def _checkTicket(ticket):
"""Check validity of a previously created ticket"""
timestamp = string.split(ticket, '.')[0]
ourticket = _createTicket(timestamp)
return ticket == ourticket
4 ºñÁö¿À ÆÄÀÏ ÀÎÅÍ³Ý ÀͽºÇ÷η¯¿¡¼ º¸±â
- ¸ÕÀú
¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼ ºñÁö¿À ºä¾î¸¦ ´Ù¿î·Îµå¹Þ¾Æ ¼³Ä¡ÇÑ´Ù.
- formatter/base.py ÆÄÀÏ¿¡´Ù°¡ ´ÙÀ½°ú °°Àº ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
def visio(self, source):
result = '<OBJECT classid="CLSID:279D6C9A-652E-4833-BEFC-312CA8887857" '
result = result + 'id="viewer1" width="100%" height="100%">'
result = result + '<param name="BackColor" value="16777200">'
result = result + '<param name="AlertsEnabled" value="1">'
result = result + '<param name="ContextMenuEnabled" value="1">'
result = result + '<param name="GridVisible" value="0">'
result = result + '<param name="HighQualityRender" value="0">'
result = result + '<param name="PageColor" value="16777215">'
result = result + '<param name="PageVisible" value="1">'
result = result + '<param name="PropertyDialogEnabled" value="1">'
result = result + '<param name="ScrollbarsVisible" value="1">'
result = result + '<param name="SizeGripVisible" value="1">'
result = result + '<param name="ToolbarVisible" value="1">'
result = result + '<param name="SRC" value="' + source + '">'
result = result + '<param name="CurrentPageIndex" value="0">'
result = result + '<param name="Zoom" value="-1">'
result = result + '</object>'
return result
- parser/wiki.py ÆÄÀÏÀÇ def attachment(self, url_and_text, **kw) ÇÔ¼ö ¾ÈÀÇ Àû´çÇÑ °÷¿¡´Ù°¡ ´ÙÀ½ Á¶°Ç üũ¹®À» Áý¾î³Ö´Â´Ù.
if url[-4:] == ".vsd":
return self.formatter.visio(cgi.escape(AttachFile.getAttachUrl(pagename, url)))
- »ý°¢º¸´Ù º¸±â ½È´Ù. Â÷¶ó¸® ³ë°¡´ÙÇØ¼ À̹ÌÁö·Î ¿Ã¸®´Â °ÍÀÌ º¸±â¿¡´Â ÁÁ´Ù.
5 ³×ÀÌÆ®¿Â ½º¸¶Àϸ® Ãß°¡
³×ÀÌÆ® »çÀÌÆ® ¾îµò°¡¿¡¼ ¹ÞÀº ÅëÂ¥ À̹ÌÁö¸¦ ¼Õ¼ö Àß¶ó ½º¸¶Àϸ®·Î µî·ÏÇß´Ù. ½º¸¶Àϸ® µî·ÏÀº wikiutil.pyÀ» ¼öÁ¤ÇÏ¸é µÈ´Ù. ¾î·µç, ³ë°¡´ÙÀÇ °áÁ¤Ã¼... ÀúÀÛ±Ç ¹®Á¦ ¾î¼±¸ÇÏ¸é »èÁ¦ÇØ¾ß Çϴµ¥...
³Ö¾ú´Ù°¡ Á¦°ÅÇØ ¹ö·È´Ù. -_-;;; À̹ÌÁö Å©±â°¡ ²Ï Ä¿¼ ÁÙ °£°ÝÀÌ º¸±â ¾È ÁÁ¾Ò´Ù. ¾Æ¾Ç, ³» ½Ã°£ µ¹¸®µµ!
6 CSV ÇÁ·Î¼¼¼ Ãß°¡
tar xvfz csv-1.0.tar.gz
cd csv-1.0
python setup.py install
¿ø·¡ ¿©±â±îÁö ÇÏ¸é ¸ðµâ ÀνºÅçÀº ³¡³ª¾ß Çϴµ¥, Ä«Æä21¿¡¼´Â ·çÆ® ±ÇÇÑÀ» ¾È ÁÖ´ÂÁö¶ó...
cd lib.linux-i686-2.3/
mv csv.so ~/moin/lib/python/MoinMoin/processor/
±× ´ÙÀ½ ¿ø·¡ ÀÖ´ø CSV.py¸¦ ¼öÁ¤
# ORIGINAL
import string, sys
# NEW
import string, sys, csv
# ORIGINAL
output.append(formatter.table(1))
for line in lines:
output.append(formatter.table_row(1))
cells = string.split(line, ';')
# NEW
cp = csv.parser();
output.append(formatter.table(1))
for line in lines:
output.append(formatter.table_row(1))
cells = cp.parse(line)
À̷μ CSV ÆÄÀÏÀ» ±×³É °¡Á®´Ù ºÙÀ̱⸸ Çϸé, Å×À̺íÀÌ »ý¼ºµÈ´Ù. ÀÌÈ÷~
À©µµ¿ìÁî¿ë ¹ÙÀ̳ʸ® (Python v2.3)
»çÀÌÆ®¿¡ ¿Ã¶ó¿ÍÀÖ´Â °Ç À©µµ¿ìÁî¿ë ¹ÙÀ̳ʸ®´Â 2.2 ±âÁØÀ¸·Î ÄÄÆÄÀÏµÈ °ÍÀ̶ó, 2.3¿¡¼´Â Á¤»óÀûÀ¸·Î µ¹¾Æ°¡Áö°¡ ¾Ê´Â´Ù. site-packages µð·ºÅ丮 ¶Ç´Â ¸ðÀθðÀÎ ¶óÀ̺귯¸® µð·ºÅ丮¿¡´Ù csv.pyd ÆÄÀÏÀ» º¹»çÇÏ¸é µÈ´Ù.
7 lua ÆÄ¼ Ãß°¡
cpp ÆÄ¼¸¦ Á» ¼öÁ¤Çؼ, ·ç¾Æ ÆÄ¼¸¦ ¸¸µé¾î Ãß°¡Çß´Ù.
8 ŸÀÌÆ² ·¹À̾ƿô º¯°æ
ŸÀÌÆ² ºÎºÐÀÇ ÆùÆ® Å©±â¿Í ºó ÄÀÌ ¸¶À½¿¡ µéÁö ¾Ê¾Æ, wikiutil.py ÆÄÀÏ¿¡¼ Ãâ·ÂÇÏ´Â ºÎºÐÀ» ã¾Æ¼ ¼öÁ¤ÇÏ´Ù.
9 RandomQuote ¹× RandomPage ¸ÅÅ©·Î Ãß°¡
http://moin.sourceforge.net¿¡¼ MoinMoin 1.2.1À» ´Ù¿î·Îµå¹Þ¾Æ¼ ±× ¾È¿¡ ÀÖ´Â ¸ÅÅ©·Î¸¦ °¡Á®¿Í Ãß°¡Çß´Ù. 1.2.1¿¡´Â ÆäÀÌÁö º¸¾È °ü·Ã ±â´ÉÀÌ Ãß°¡µÇ¾ú´Âµ¥, Àû´çÈ÷ ÁÖ¼®Ã³¸®ÇÏ´Ï Á¦´ë·Î µÈ´Ù.
RandomPage ¸ÅÅ©·ÎÀÇ °æ¿ì, ¾µµ¥¾ø´Â ÆäÀÌÁö(¿¹¸¦ µé¸é XXXTemplate °°Àº...)±îÁö º¸¿©Áִµ¥, °£´ÜÇÑ Á¤±Ô½ÄÀ» ÀÌ¿ëÇØ Ãâ·ÂÇÏÁö ¾Êµµ·Ï º¯°æÇß´Ù.
import re
...»ý·«...
while len(pages) < links and all_pages:
page = whrandom.choice(all_pages)
if not re.match(r'.*Template|Help.*)', page):
pages.append(page)
all_pages.remove(page)
...»ý·«...
10 ³×ºñ°ÔÀ̼ǹ٠nowrap ¼öÁ¤
wikiutil.py ÆÄÀÏ ¾È¿¡¼ navi_bar·Î °Ë»öÇϸé Å×À̺í Ãâ·ÂÇÏ´Â ºÎºÐÀÌ Àִµ¥, <td>¿¡´Ù nowrapÀ» Ãß°¡.
11 RecentChanges ÆäÀÌÁö¿¡¼ RSS Çǵù Á¦´ë·Î ¾È µÇ´Â °Å ¼öÁ¤
ÀÌ ¹®Á¦´Â ÆÄÀ̽㠶óÀ̺귯¸® ÀÚüÀûÀ¸·Î ¹ß»ýÇÏ´Â ¹®Á¦Àε¥, Á¦´ë·Î ó¸®ÇÏ·Á¸é
PyXML ÃֽйöÀüÀ» ¹Þ¾Æ¼ ÀνºÅçÇØÁà¾ßÇÑ´Ù.È£½ºÆÃ ¾÷ü¿¡´Ù ¿ä±¸ÇÒ±î ÇÏ´Ù°¡ ±ÍÂú¾Æ¼, ´ÙÀ½°ú °°ÀÌ ¶«»§À¸·Î ó¸®Çß´Ù.
- MOINROOT/lib/python/MoinMoin/wikixml/ ·Î °£´Ù.
- util.py ÆÄÀÏÀ» ¿¾î¼ simpleNode ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ´Ù. (ÁÖ¼®Ã³¸®µÈ ºÎºÐÀÌ ¿ø·¡ ¼Ò½º...)
def simpleNode(self, tag, value, attr={}):
self.startNode(tag, attr)
#if value: self.characters(unicode(value, config.charset))
if value: self.characters(value)
self.endNode(tag)
12 RecentChanges ÆäÀÌÁö¿¡¼ ·¹À̾ƿô ±úÁö´Â °Å ¼öÁ¤
MOINROOT/lib/python/MoinMoin/macro/RecentChanges.py¸¦ ¿¾î¼ <td ¸¦ <td nowrap À¸·Î ġȯÇÑ´Ù.
13 C/C++ ÄÚµå »ö±ò ³Ö±â
- http://moinmoin.wikiwikiweb.de/ParserMarket ¿¡¼ cplusplus.py ¿Í base.py ¸¦ ´Ù¿î·Îµå¹ÞÀº ´ÙÀ½ ÆÄ¼ µð·ºÅ丮¿¡´Ù Ä«ÇÇÇÑ´Ù. (¿À¿À~ ǥżö ´ÔÀÌ ÀÛ¼ºÇϼ̴Ù!)
- cplusplus.py ¸¦ cpp.py ·Î À̸§À» º¯°æÇÑ´Ù.
- °°Àº µð·ºÅ丮 ¾ÈÀÇ wiki.py¸¦ ¿¾î¼, ´ÙÀ½°ú °°ÀÌ ÆíÁýÇÑ´Ù. (ÁÖ¼® ó¸®ÇÑ ºÎºÐÀÌ ¿ø·¡ ¼Ò½º)
#elif string.strip(line)[:2] == "#!" and string.find(line, 'python') > 0:
# from MoinMoin.processor.Colorize import process
# self.processor = process
# self.in_pre = 2
# self.colorize_lines = [line]
# continue
elif string.strip(line)[:2] == "#!":
if string.find(line, 'python') > 0 or string.find(line, 'cpp') > 0:
from MoinMoin.processor.Colorize import process
self.processor = process
self.in_pre = 2
self.colorize_lines = [line]
continue
- preprocessor µð·ºÅ丮ÀÇ Colorize.py¸¦ ¼öÁ¤ÇÑ´Ù.
¿ø·¡ ¹öÀü
def process(request, formatter, lines):
...»ý·«...
if string.strip(lines[0]) == "#!python":
del lines[0]
buff = cStringIO.StringIO()
colorizer = python.Parser(string.join(lines, '\n'), request, out = buff)
colorizer.format(formatter, {})
...»ý·«...
¼öÁ¤ ¹öÀü
def process(request, formatter, lines):
...»ý·«...
buff = cStringIO.StringIO()
colorizer = ''
if string.strip(lines[0]) == "#!python":
del lines[0]
colorizer = python.Parser(string.join(lines, '\n'), request, out = buff).format(formatter, {})
elif string.strip(lines[0]) == "#!cpp":
del lines[0]
colorizer = cpp.Parser(string.join(lines, '\n'), request, out = buff).format(formatter, {})
...»ý·«...
»ö±òÀÌ ÆÄ¼ ÄÚµå ÀÚü¿¡ ÇϵåÄÚµùµÇ¾î ÀÖÀ¸¹Ç·Î, ±âÈ£¿¡ ¸Â°Ô ÆíÁýÇØ¼ ¾²ÀÚ.
14 BOOK ¸ÅÅ©·Î Ãß°¡
[[Book(199508120012,gif)]]¿Í °°Àº ¸ð¾çÀ¸·Î
°ÄÄ¿¡¼ À̹ÌÁö¸¦ Àоî´Ù º¸¿©ÁÖ´Â ¸ÅÅ©·Î¸¦ Áý¾î³Ö¾ú´Ù.
import string
def execute(macro, args):
splitted = string.split(args, ',')
if not splitted:
return macro.formatter.rawHTML('<b>INVALID BOOK MACRO</b>')
link = '<a href=http://kangcom.com/common/bookinfo/bookinfo.asp?sku='
if (len(splitted) > 1):
link += link + splitted[0]
link += link + '><img src=http://kangcom.com/l_pic/'
link += splitted[0] + '.' + splitted[1] + '></a>'
else:
link += link + splitted
link += link + '><img src=http://kangcom.com/l_pic/'
link += link + splitted + '.gif></a>'
return macro.formatter.rawHTML(link)
15 LinkedFrom ¸ÅÅ©·Î Ãß°¡
¿ª¸µÅ©¸¦ ã¾ÆÁÖ´Â ¸ÅÅ©·Î¸¦ Ãß°¡Çß´Ù.
"""
MoinMoin - LinkedFrom Macro
Modified from the OrphanedPages Macro by J?gen Hermann
and the PartialInclude Macro written by Seth Shikora.
by Charles Crichton, Oxford University Computing Laboratory (2003)
Charles.Crichton (in the domain of) comlab.ox.ac.uk
I must say thanks to all those who have contributed to the MoinMoin markets - keep up the good work.
Copyright (c) 2001 by J?gen Hermann <jh@web.de>
All rights reserved, see COPYING for details.
Usage: [[LinkedFrom]] - List all the pages that statically link to the current page.
[[LinkedFrom(regexp)]] - Only lists the linking pages that match the regular expression.
Use this macro to show a list of all those pages that are linking to the current page. Optionally
this list can be restricted to those pages that match a particular regular expression.
I use it to keep a list of topic pages - such as ["Topic: UML"].
Each of these topics contains a [[LinkedFrom]] macro.
I then have a page for each paper which I have read. If the paper covers a particular topic I place
a link to the topic on the page related to the paper. ["Topic: UML"] for example. The page then shows
up automatically on the topic page.
"""
# Imports
from MoinMoin import config, user, wikiutil
from MoinMoin.Page import Page
from MoinMoin.i18n import _
import sys, cStringIO, re
_guard = 0
def execute(macro, args):
if not args:
pagename_re = re.compile(".*")
else:
try:
pagename_re = re.compile(args)
except re.error, e:
return '<p><strong class="error">%s</strong></p>' % _('Error in regular expression.')
# prevent recursive calls
global _guard
if _guard: return ''
_guard = 1
pages = wikiutil.getPageList(config.text_dir)
pagelist = filter(pagename_re.search, pages)
linkedfrom = {}
this_page = macro.formatter.page
for other_page_name in pagelist:
other_page = Page(other_page_name)
if other_page != this_page:
links = other_page.getPageLinks(macro.request)
for link in links:
if link == this_page.page_name:
linkedfrom[other_page.page_name] = other_page.page_name
_guard = 0
# check for the extreme case
if not linkedfrom:
return "" #"<p><b>%s</b></p>" % _("No other pages link to this page in this wiki.")
# return a list of page links
linkedfromnames = linkedfrom.keys()
linkedfromnames.sort()
#result = macro.formatter.bullet_list(1)
result = ''
for name in linkedfromnames:
if not name: continue
#result = result + macro.formatter.listitem(1)
result = result + macro.formatter.pagelink(name, generated=1)
result = result + ", "
#result = result + macro.formatter.listitem(0)
#result = result + macro.formatter.bullet_list(0)
if result.endswith(", "): result = result[:-2]
return result
16 NBSP ¸ÅÅ©·Î Ãß°¡
Å×À̺íÀ» ¸¸µé ¶§, Ä¿¡ ¾Æ¹« ³»¿ëµµ ¾øÀ» °æ¿ì, ÈäÇÏ°Ô º¸¿©¼ °£´ÜÈ÷ Ãß°¡Çß´Ù.
def execute(macro, args):
return macro.formatter.rawHTML(' ');
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)