:date: 2004-11-20 16:26:35
:tags: Zope, python

===============================
Zope縺ァ繝翫ン繧イ繝シ繧キ繝ァ繝ウ
===============================

#縺ァ縺吶∪縺呵ェソ縺ォ逍イ繧後◆縺ョ縺ァ縲√□縺ァ縺ゅk隱ソ縺ォ螟画峩縺励∪縺吶〒縺呻シ育ャ�

譛€霑代�繝翫ン繧イ繝シ繧キ繝ァ繝ウ縺ォ蟇セ蠢懊@縺溘ヶ繝ゥ繧ヲ繧カ繧ょ「励∴縺ヲ縺阪◆縺ョ縺ァ縲∬�繧オ繧、繝医b繝翫ン繧イ繝シ繧キ繝ァ繝ウ逕ィ縺ョ繧ソ繧ー繧貞ー主�縺励※縺ソ繧医≧縺ィ諤昴≧縲ゅリ繝薙ご繝シ繧キ繝ァ繝ウ繧ソ繧ー縺ッ *<head></head>* 蜀�↓::

  <head>
    <link rel="home" href="...." /> 
    <link rel="up" href="...." /> 
    <link rel="index" href="...." /> 
  </head>

縺ィ險€縺�─縺倥↓險倩ソー縺吶k繧峨@縺�€�

縺帙▲縺九¥Zope繧剃スソ縺」縺ヲ縺�k縺ョ縺ァ縲∝推繝壹�繧ク縺ォ蝓九a霎シ縺セ縺壹↓縺薙l繧貞ョ溽樟縺吶k譁ケ豕輔r閠�∴縺ヲ縺ソ縺溘€ゆサ雁屓諤昴>縺、縺�◆縺ョ縺ッ縲《tandard_html_header縺ョ荳ュ縺九ipython繧ケ繧ッ繝ェ繝励ヨ繧貞他縺ウ蜃コ縺励※縲� **迯イ蠕�** 繧剃スソ縺」縺ヲ蠢�ヲ√↑繝翫ン繧イ繝シ繧キ繝ァ繝ウ(萓九∴縺ーup)繧呈爾縺励€∬ヲ九▽縺九▲縺溘i縺昴l縺ョURL繧� *<link rel...>* 縺ァ蝓九a霎シ繧€譁ケ豕輔□縲�

縺セ縺嘖tandard_html_header縺ォ莉・荳九�譁�r蝓九a霎シ繧薙〒縺翫¥::

  <dtml-var "navigation('index')">
  <dtml-var "navigation('author')">
  <dtml-var "navigation('home')">
  <dtml-var "navigation('contents')">
  <dtml-var "navigation('search')">
  <dtml-var "navigation('help')">
  <dtml-var "navigation('copyright')">
  <dtml-var "navigation('alternate')">
  <dtml-var "navigation('parent')"><!--same as up-->
  <dtml-var "navigation('up')">
  <dtml-var "navigation('first')"><!--same as begin-->
  <dtml-var "navigation('begin')">
  <dtml-var "navigation('prev')">
  <dtml-var "navigation('next')">
  <dtml-var "navigation('last')"><!--same as end-->
  <dtml-var "navigation('end')">

谺。縺ォ縲√%縺薙〒蜻シ縺ウ蜃コ縺輔l繧杵avigation縺ィ縺�≧繧ェ繝悶ず繧ァ繧ッ繝医rPythonScript縺ァ繝ォ繝シ繝医ヵ繧ゥ繝ォ繝€縺ォ逕ィ諢上€ゆクュ霄ォ縺ッ縺薙s縺ェ諢溘§::

  try:
    # target縺ッscript縺ョ蠑墓焚縲�"home"縺ィ縺�"up"縺ィ縺九′蜈・縺」縺ヲ縺上k
    # 莉願ヲ九※縺�k繝壹�繧ク縺九itarget縺ョ迯イ蠕励↓謖第姶縲ょ、ア謨励☆繧九→except縺ク縲�
    attr = getattr(context,target)

    # target縺ィ蜷後§蜷榊燕縺ョ繝励Ο繝代ユ繧」繝シ縺ィ縺九r謐輔∪縺医◆蝣エ蜷医€√→繧翫≠縺医★螟ア謨励€�
    if not hasattr(attr,"meta_type"):
      return '<!--find same name as %s-->' % target

    # 縺ソ縺、縺代◆target縺茎cript縺ョ蝣エ蜷医�蛟、繧偵b繧峨▲縺ヲ縺昴�縺セ縺セ霑斐☆
    if attr.meta_type == "Script (Python)":
      return attr()

    # script莉・螟悶′隕九▽縺九▲縺溘i縲∬ヲ九▽縺代◆target縺ョurl繧定ソ斐☆
    return '<link rel="%s" href="%s" />' % (target,attr.absolute_url())

  except:
    pass

  # 螟ア謨励@縺溘i荳€蠢懊さ繝。繝ウ繝医い繧ヲ繝医@縺滓枚蟄怜�縺�縺題ソ斐☆
  return '<!--link rel="%s"-->' % target

縺ゅ→縺ッ迯イ蠕怜庄閭ス縺ェ蝣エ謇€縺ォ index 縺ィ縺� copyright 縺ィ縺九�蜷榊燕縺ァDTML Document縺ェ縺ゥ繧堤スョ縺�※縺翫¢縺ー縲√リ繝薙ご繝シ繧キ繝ァ繝ウ繝舌�縺ァ蟇セ雎。繝峨く繝・繝。繝ウ繝医↓鬟帙�縺薙→縺悟�譚・繧九h縺�↓縺ェ繧九€√→縺�≧蟇ク豕輔€ゅ◆縺�縲∫音螳壹�繝峨く繝・繝。繝ウ繝医r陦ィ遉コ縺励◆縺上↑縺��エ蜷医€√◆縺ィ縺医� up(隕ェ髫主ア、) 縺ェ縺ゥ縺ョ蝣エ蜷医�DTML Document縺ァ縺ッ髱「蛟偵↑縺ョ縺ァ縲 ̄ython Script繧� up 縺ィ縺�≧蜷榊燕縺ァ鄂ョ縺�※縺翫>縺ヲ縲√せ繧ッ繝ェ繝励ヨ縺ァ隕ェ髫主ア、縺ョURL繧貞性繧€ <link rel...> 譁�ュ怜�繧定ソ斐☆繧医≧縺ォ菴懊l縺ー縺�>繧医≧縺ォ縺励※縺ゅk縲�

up 縺ョPython Script縺ョ荳ュ霄ォ縺ッ莉・荳九�繧医≧縺ェ諢溘§::

  request = container.REQUEST

  url = request.URL1

  # 莉翫�繝壹�繧ク縺梧怙荳贋ス阪〒縺ゅl縺ー繧ウ繝。繝ウ繝域枚蟄怜�繧定ソ斐@縺ヲ邨ゆコ�
  if url == request.BASE0:
    return '<!--link rel="up" href="/"-->'

  # 荳€縺、隕ェ縺ョ蛹コ蛻�j繧呈爾縺�
  col = url.rfind("/")

  # 繧オ繝シ繝舌�蜷阪∪縺ァ豬ク鬟溘&繧後◆繧牙、ア謨�
  if col < url.find("//")+1:
    return '<!--link rel="up" href="/"-->'

  # 髫主ア、荳€縺、蛻�炎縺」縺ヲ link 繧ソ繧ー繧定ソ斐☆
  return '<link rel="up" href="%s">' % url[:col]

find縺励↑縺�〒split("/")縺ィjoin縺ァ讒狗ッ峨@繧医≧縺ィ諤昴▲縺溘�縺�縺後€√↑縺懊°join( s, "/")縺ァ螟ア謨励@縺ヲ縺励∪縺�◆繧√€∵妙蠢オ縲Qython縺ョ繝倥Ν繝礼ュ峨↓縺ッ *隨ャ莠悟シ墓焚縺ァ騾」邨宣Κ蛻�↓蜈・繧後k譁�ュ励r謖�ョ�* 縺ィ譖ク縺�※縺ゅk縺ョ縺ォ縲√↑縺懊°::

  join() takes exactly one argument (2 given)

縺ィ縺�▲縺ヲ諤偵i繧後k蟋区忰縲ゆク肴€晁ュー縺�縲�

莉雁屓縺ョ譁ケ蠑上�繧ヲ繝ェ縺ッ縲∫佐蠕励r菴ソ縺」縺ヲ縺�k縺ョ縺ァ蠢�ヲ√↑縺ィ縺薙m縺ァ繧ェ繝シ繝舌�繝ゥ繧、繝峨☆繧九%縺ィ縺悟�譚・繧九%縺ィ縲ゅ→縺�≧縺九%繧後′蜃コ譚・縺ェ縺�→Web繧オ繝シ繝舌�縺ィ縺�≧諤ァ雉ェ荳願ゥア縺ォ縺ェ繧峨↑縺�€Oext繧аrev縺ョ繝ェ繝ウ繧ッ蜈医′Web繧オ繝シ繝舌�荳翫�蜑阪�繝シ繧ク縺ァ蝗コ螳壹〒繧りェー繧ょャ峨@縺上↑縺�€�

縺ゅ→縺ョ蝠城。後�縲∽サ雁屓縺ョ譁ケ蠑上〒繝翫ン繧イ繝シ繧キ繝ァ繝ウ縺ョ繝ェ繝ウ繧ッ蜈医r逕ィ諢上☆繧九→縲√Ν繝シ繝医ヵ繧ゥ繝ォ繝€遲峨↓繝翫ン逕ィ縺ョ繧ェ繝悶ず繧ァ繧ッ繝医′謨」荵ア縺吶k縺薙→縲ゅ>縺。縺翫≧謇句�縺ョ縺ッ繧オ繝悶ヵ繧ゥ繝ォ繝€繧呈欠螳壹〒縺阪k繧医≧縺ォ縺励※縺ソ縺溘¢縺ゥ縲√≠繧薙∪繧顔セ弱@縺上↑縺�€・窶・縲ゅ%縺ョ蠕後�隱イ鬘後→縺�≧縺薙→縺ォ縺励※縺翫%縺�€�




.. :extend type: text/plain
.. :extend: