ここで紹介しているカスタマイズ方法は TeamPage 5.0 時代のものです。現行の TeamPage 6.2 でも動作しますが、推奨されません。TeamPage 6.2 でのカスタマイズ方法は、下記リンク先ページで解説しています。
ここで作成する「inquiryticket」は、「タスクの一種であるが、標準のタスクとは別のもの」になります。標準のタスクをそのまま残し、新たに「改造版タスク」を追加するカスタマイズです。一方、下記のリンク先記事では、「標準のプロジェクトを改造する方法(別の改造版プロジェクトを作らない方法)」を解説しています。
注意: ここでは TeamPage 6.0.06 を使って説明します。他のバージョンでは、設定ファイルの記述や必要なファイルの名前などが異なる場合があります。
display_name=Inquiry Ticket Form Example
description=This plug-in allows you to use the inquiry ticket form and widget.
name=com.traction.form.inquiryticket
version=1.0
db_config=false
db_settings=
server_config=false
server_settings=
project_config=false
project_settings=
user_config=false
user_settings=
# メモ
# 行頭に「#」を付けるとコメントになります。
# 変更履歴や参照URLなどを書いておくと後々のためになります。
__inherits=taskdialog
# フォームの表示名
display_name=Inquiry Ticket
# フォームの XML 定義ファイル (SDL ファイル)
xml=config.data.forms.inquiry-model
# フォームの HTML レンダリング定義ファイル (SDL ファイル)
sdl=config.data.forms.inquiry-view
# フォームで投稿されたエントリ(記事)の「種類」の定義
entry_custom_type=task
entry_class=inquiry
# フォームで投稿された記事本文に自動的に埋め込むトークンを指定
entry_content_append=[[ /token inquiry_info ]]
xml=config.data.forms.inquiry-model
<?xml version="1.0"?>
<form title="Inquiry Ticket Editor" class="task-form-dialog fm-html fm-inquiry" save="#{Save}" width="800px" templates="true">
<#fields />
</form>
<sdl.function name="fields">
<config.data.forms.taskinline#fields-basic />
<config.data.forms.taskinline#fields-details />
<property.defined name="fqid">
<field tabindex="2026" type="text" name="property_edit_desc"></field>
</property.defined>
<#fields-inquiry />
</sdl.function>
<sdl.function name="fields-inquiry">
<field tabindex="2007" type="text" name="property_inquiryid" size="16"></field>
<field tabindex="2008" type="text" name="property_inquirername" size="16"></field>
</sdl.function>
<config.data.forms.taskinline#fields-basic />
は、「server ディレクトリの下の、config の下の、data の下の、forms の中にある、taskinline.sdl の『fields-basic』という関数を呼び出せ」という意味です。<#fields-inquiry />
は、「同じファイルの中の『fields-inquiry』関数を呼び出せ」という意味です。
<#form>
<sdl.function name="form">
<gwt.rpc.form form="inquiryticket">
<#form-layout>
</gwt.rpc.form>
</sdl.function>
<sdl.function name="form-layout">
<div class="task-form expanded">
<com.traction.sdl.tasks.taskform#field-error />
<com.traction.sdl.tasks.taskform#destination classname="fm-loc">
<div class="o">
<com.traction.sdl.tasks.taskdialog#form-minimal />
<#form-expanded />
</div>
</div>
</sdl.function>
<sdl.function name="form-expanded">
<table width="100%" class="task-formlayout">
<com.traction.sdl.tasks.taskform#row-description>
<#row-inquiryid-inquirer />
<com.traction.sdl.tasks.taskform#row-labels-attachments>
<com.traction.sdl.tasks.taskform#row-assignee-priority-with-default>
<com.traction.sdl.tasks.taskform#row-subscribed-estimate>
<com.traction.sdl.tasks.taskform#row-start-duration>
<com.traction.sdl.tasks.taskform#row-due>
</table>
</sdl.function>
<sdl.function name="row-inquiryid-inquirer">
<tr>
<td class="td1 g"><label>Inquiry ID</label></td>
<td class="td2 g">
<gwt.rpc.field name="property_inquiryid"></gwt.rpc.field>
</td>
<td class="td3 g"><label>Inquirer Name</label></td>
<td class="td4 g">
<gwt.rpc.field name="property_inquirername"></gwt.rpc.field>
</td>
</tr>
</sdl.function>
form="inquiryticket"
として指定しています。つまり、この inquiry-view.sdl で「●●フィールドを表示せよ」と指定すると、「inquiryticket」という名前のフォームは inquiryticket.properties で定義されているので、その inquiryticket.properties の xml= で定義された inquiry-model.sdl の中の「●●フィールド」が参照されます。<com.traction.sdl.tasks.taskdialog#form-minimal />
は、「server ディレクトリの下の、src の下の、com の下の、traction の下の、sdl の下の、tasks の下の、taskdialog.sdl の中の、『form-minimal』関数を呼び出せ」という意味です。<#row-inquiryid-inquirer />
という行は例外で、これは「同じファイル内の『row-inquiryid-inquirer』関数を呼び出せ」という意味です。<gwt.rpc.field name="フィールド名"></gwt.rpc.field>
で、フォームに表示するフィールドを指定しています。上述の通り、ここで指定されたフィールドは、inquiryticket.properties の xml= で定義された inquiry-model.sdl の中のフィールドになります。entry_class=inquiry
__inherits=task
display_name=Inquiry Ticket
# The config/data/forms FormFactory that is the default for creating
# entries that will have this custom entry type.
newentry_form=inquiryticket
# The config/data/forms FormFactory to use to edit entries that have
# this custom entry type.
editentry_form=inquiryticket
# The default link text to show for the new link or button.
newentry_link_text=New Inquiry Ticket
# The default link text to show for the edit link or button.
editentry_link_text=Edit Inquiry Ticket
__inherits=NewTask
entryclass=inquiry
<sdl.function name="addmenu-options">
<##addmenu-options />
<#addmenu-inquiry />
</sdl.function>
<sdl.function name="addmenu-inquiry">
<#addmenu-action actionName="NewInquiry" actionKey="inquiry" />
</sdl.function>
<##addmenu-options>
は、「元々の addmenu-options 関数、すなわち標準の(src/com/traction/sdl/gwtpc にある) shared.sdl の中の addmenu-options 関数を参照せよ」という意味です。その下の <#addmenu-inquiry /> は、「同じファイル内の addmenu-inquiry 関数を参照せよ」という意味です。
# フォームで投稿された記事本文に自動的に埋め込むトークンを指定
entry_content_append=[[ /token inquiry_info ]]
sdl=com.traction.sdl.token.inquiry#bodyinfo
<sdl.function name="bodyinfo">
<#info-table />
</sdl.function>
<sdl.function name="info-table">
<table class="normaltable inquiry-info">
<#table-row text="Inquiry ID" eprop="inquiryid" >
<#table-row text="Inquirer Name" eprop="inquirername" >
</table>
</sdl.function>
<sdl.function name="table-row">
<tr>
<td class="heading">
#$text$
</td>
<td class="value">
<entry.property.value name="#$eprop$" />
</td>
</tr>
</sdl.function>
<#info-table />
は、「同じファイル内の『info-table』関数を呼び出せ」という意味です。<table>〜</table>
タグの中で「table-row」関数を 2 回呼び出しています。パラメーター「text」で画面に表示するテキストを、パラメーター「eprop」でエントリープロパティの名前を「table-row」関数に渡していることに注目してください。#$パラメーター名$
で取得できます。エントリープロパティの値は <entry.property.value name="パラメーター名" />
で取得しています。
class=com.traction.sdk.IndexEntryType
match_entry_class_name=true
display_name=Inquiry Ticket
type_filter_display_name=Inquiry Tickets
query_short_type_name=inquiry
20.3 KB | com.traction.form.inquiryticket-1.0.1.zip | 2014/07/31 | 23:56:05 JST |
create_plugin_subfolder.pngShared Files for DocSDK45
plugin_definition.png
after_clearing_cache.png
form_properties.png
copy_sdl_file.png
entry_class_definition.png
section_add_EntryClass.png
Screenshot-forms.png
inquiry_add_button.png
form_example.png
single_entry.png
inquiry.sdl.png
inquiry_information_table.png
activities.png
idex_entry_type_config.png
restart_with_rebuild.png
edit_action_prop_file.png
create_actions_folder.png
create_gwtrpc_folder.png
addmenu_inquiry_ticket.png