投稿

1月, 2010の投稿を表示しています

Java クラスのサンプルコードを SSJS へ応用する方法

Xpages の開発中、サーバーサイドの JavaScript をどのように記述するか調べたくても適当なサンプルスクリプトも非常に少ないのが現状です。
これは何も日本語に限ったことではなく英語でもまだ不十分のようです。
JavaScpirt のサンプルとして、既存のJava/CORBA クラスのサンプルを利用する方法が Lotus Notes and Domino Application Development wiki に掲載されていましたのでご紹介したいと思います。原作は同 wiki の「Converting Java sample code to JavaScript code」です。

ここで取り上げられている例では ColorObject クラスの getBlue プロパティを題材にしていますが、おおよそ他のメソッドやプロパティの例でも使用できると思います。
では見ていきましょう。

import lotus.domino.*; public class JavaAgent extends AgentBase { public void NotesMain() { try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); // (Your code goes here) Database db = agentContext.getCurrentDatabase(); View view = db.getView("Main View"); ColorObject color = session.createColorObject(); color.setNotesColor(view.getBackgroundColor()); System.out.println( "Blue value of Main View background = " + color.getBlue()); } catch(Exception e) { e.printStack…

Notes 8.5.2

Notes 9 の話も待ち遠しいですが、現行のメンテナンスリリースとしての 8.5.2 の概要が徐々に Lotusphere 2010 で明らかになっているようです。

時期メンテナンスリリースの 8.5.2 については「Notes 8.5.2 First Showing @ Lotusphere」{Original Source}で紹介されています。多少内容が意訳になり本来のものと異なるかもしれませんが、抜粋して訳します。

XPages を編集する際ソースコードビューにコントロールをドラッグ/ドロップできるようになるXpages が他の設計同様に一般アクセス(Public Access)ユーザーからアクセスできるようになるデータソースからフィールドをドラッグして XPage に貼付けるとき、そのフィールドはテキストボックスのみでしたが、フォーム上のデータタイプ(日付やリッチテキストなど)に応じたタイプになります。データソースからフィールドをドラッグして XPage に貼付けるとき、フィールドがインポートされる前に順番を変更することができます。XPage のコントロールとしてラジオとチェックボックスのグループはネイティヴとして表示されることになりました。いままではコンボボックスしかなく、ラジオ/チェックボックグループのコントロールにする場合には初めにコンボボックスを貼付けてマニュアルで変更しなければなりませんでした。データベース(a database)を署名するのにデザイナーから右クリックのアクションで行うことができるようになります。ほとんどのコントロールで dojo のタブが追加され、デザイナーの UI から dojo のプロパティをセットできます。
CKEditor がリッチテキストエディタのデフォルトになります。データソースのスクリプトは Eclipse のエディタを呼び出します。@Formula のエディタに関してはまだできません。「新規アプリケーション」ダイアログは再デザインされ、ワーキングセットをアサインすることもできるようになります。XPage のコンポーネントを「ライブラリ」に追加することができ、他のアプリケーションで共有することができます。一連の「RESTful API」が利用可能になり、開発者があらゆる面で XPage アプリケーションを拡張すること…

Lotusphere 2010 のセッションより

今週は Lotusphere 2010 真っ盛りですが、ここ数年ではブロガーたちの活躍?によって OGS の様子がリアルタイムで書き込みされていたり、Twitter を使ったりでどんな様子かを想像するのが楽しみになってきています。
これから様々なセッションが行われますが、XPages に焦点をあてると約 10 ぐらいのセッションがあるでしょうか。
今回はその中からMatt White 氏と Tim Clark 氏のふたりで行われた
SHOW112「Building an XPages App from Start to Finish Session
のセッション内容が既にダウンロードできるようになっています。
いわゆる DVD のレンタルショップ向けのアプリケーションをイメージして開発を一から体験できるようになっています。
それぞれ両名のサイトからダウンロードできるようになっています。どちらのサイトからでも入手できます。
Tim Clark 氏「SHOW 112 – resources and file download
Matt White 氏「SHOW112 Building an XPages App from Start to Finish Session Downloads

ダウンロードのされたアーカイブには
プレゼンテーションの PDF ファイル作業前のサンプル・アプリケーションアプリケーションの完成版コードの snippets
があり、プレゼンテーションの資料を見てアプリケーションを開発して行けるようになっていますので Xpages のいろはを知りたい方にはとてもよい教材といえます。

プレゼンテーションのアジェンダは

アプリケーションの概要Xpages とはレイアウトと UIアプリケーション内で利用するデータについてデータの作成/読み込み/更新/削除質問補足
で構成されています。
全ページ 265 ページになりますので、初心者用とはいえかなりの量と言えます。

最後の補足では Cool Stuff として小ネタもありますので、基本を押さえている方でも一度目を通すといいと思います。

XPages Tutorial Part 54 : 終わりに

The End... {Original Source}
<< XPages Tutorial Part 53 : Search Results XPage の完成 | TOC | >>

このシリーズの最初を振りかえると、当初のアプリケーションの目的についてお話しした内容は XPages ベースの電話帳を作成すること、2 番目に ノーツクライアントアプリケーションを Java アプリケーションのようなルックアンドフィールにすること、3 番目はエージェントを作成しこの電話帳とドミノディレクトリを同期させることでした。

このシリーズで達成できたことは、当初の目的の 1 番目で、XPages 電話帳アプリケーションを作成し、IBM の 他の製品でおなじみの OneUI のルックアンドフィールを使って美しいアプリケーションに仕上げました。そして、ユーザーにはスタッフを参照する機能、編集できるロールを持つユーザーにはロケーションとスタッフの情報をメンテナンスできる機能を作成してきました。

このシリーズ全体を最初から取り組み、実際アプリケーションを作成してきたのであれば XPages のあらゆるエリアを見てきたことになります。たとえば、用意されているコントロール、自身で作成するカスタムコントロール、また簡単なコードを書くだけでそれほど JavaScript を学習する必要はなく、いままでの式や LotusScript のスキルを応用して JavaScript が書けることもわかりました。

皆さんがこのシリーズを楽しんでいただけたことを、また XPages のパワーがほんの少しでも皆さんにご理解いただけたことを願っています。このシリーズはサンプルで提供されているテンプレートから私自身がたくさん学んできたことや自身で発見したことを皆さんにもご紹介してきました。
自信を持って言えますが、これからの私のドミノの Website はこれまでの手法ではなく XPages を使用したものになることでしょう。

電話帳アプリケーションの最終版は OpenNTF のここからダウンロードできます。

Enjoy!

XPages Tutorial Part 53 : Search Results XPage の完成

イメージ
Building The Search Results XPage {Original Resource}
<< XPages Tutorial Part 52 : 検索結果の取得とその表示 | TOC | XPages Tutorial Part 54 : 終わりに >>

検索バーは完成し、何かを検索しようとするとエラーが表示されます。なぜかと言えばまだ検索の結果を表示させるページを作成していないからです。今回は検索結果表示用の XPage の作成と表示方法を見ていきます。

既存の XPage の中からコピーペーストして、名前を「Search」とします。今回は「Location」XPage をコピーすることにします。同じように「content_Location」カスタムコントロールをコピーして、「content_Search」に名前を変更してください。
その後、再度「Search」XPage に戻って、ソースビューから「content_Location」を「content_Search」に変更してください。
このように基本的なカスタムコントロールでアプリケーションのレイアウトだけを構成したページを再利用すると新しい部分を追加していくだけですばやく作業に取り掛かれます。

では「content_Search」カスタムコントロールを開いてください。検索結果を表示させる前にいくつかやってかなければならないことを済ませましょう。
まずはスクリーン上部のロケーションに関する情報とアクションバーを表示する部分をを取り除きます。
スクリーンにはページャと表(繰り返しの内部も含んで)だけが残るようにします。

カスタムコントロールのデータタブで「locationDoc」のデータソースを削除し、「peopleView」のデータソースを残すようにしてください。

またリソースセクションからサーバーサイドスクリプトライブラリを削除し、すべてのプロパティのセクションから「beforePagesLoads」のスクリプトを取り除きます。

これでこのページに対してきれいに掃除されたのであとはデータソースを指定し、検索で使用できるようにします。

このまま「すべてのプロパティ」で「データ」セクションを開きます。今回の検索がビューの中のすべての文書を対象とするので、指定されている cat…

XPages Tutorial Part 52 : 検索結果の取得とその表示

イメージ
Getting And Displaying The Search Results {Original Source}
<< XPages Tutorial Part 51 : 検索バーにファンクションを設定する | TOC | XPages Tutorial Part 53 : Search Results XPage の完成 >>

検索バーは徐々に形が出来上がり、データベースに全文索引が作成されていればスクリーン上に表示されます。
デフォルト値が編集ボックスに設定され、クリックすると消えるようになっています。
またビュースコープも設定しました。
今回は編集ボックスとリンクに対して検索結果を表示するページがどれかを設定し、Part 53 ではその結果を表示させる XPage を新たに作成していきます。

では簡単な方からやっていきますので、リンクから見ていくことにします。
あとで編集ボックスにもそのコードを再利用することができます。
「layout_PlaceBar」カスタムコントロールを開き、検索エリアのリンクコントロールを選択してください。

ユーザーがこのリンクをクリックしたら SearchResults.xsp という XPage を開き、検索の値を渡すようにしたいと思います。
これをするためにはリンクの onclick イベントを作成します。
イベントタブに切り替えて、onclick イベントを選択し「アクションの追加」をクリックしてください。
ここでのアクションは「ページを開く」です。

ここで開きたいページは計算の結果になりますので、ビュースコープを使用して計算させてみましょう。開くページの名前の引数として、ダイアモンドをクリックし、次のコードを入力します。
"Search.xsp?searchValue=" + viewScope.searchValue;
リンクに対しては以上です。
編集ボックスはもう少し複雑になってきます。
リンクをクリックしなくてもユーザーがエンターキーを押すと検索が始まるようにしたいと思います。

編集ボックスコントロールを選択して、イベントタブに切り替えてください。
対象のイベントは onkeypress イベントです。

「ページを開く」アクションは、先ほどリンクコントロールで行ったものとまっ…

XPages Tutorial Part 51 : 検索バーにファンクションを設定する

イメージ
Giving Function To The Search Bar {Original Source}
<< XPages Tutorial Part 50 : 検索機能の作成 | TOC | XPages Tutorial Part 52 : 検索結果の取得とその表示 >>

検索バーの基本は設計できましたので、実際の機能を追加していくことにします。
「layout_PlaceBar」カスタムコントロールを開いてください。

データベースの検索機能は全文索引が作成されている場合にだけ動作します。全文索引が作成されていない場合には検索バー全体を表示しないようにしたいと思います。
これを行うためには検索ボックスを含むパネルの表示を値の計算で判断させます。
ではパネルを選択し(ソースビューから選択すると簡単です)、「表示」プロパティのダイアモンドをクリックします。値の計算を選択し JavaScript のエディタを開き「database.isFTIndexed();」を入力してください。
このファンクションは全文索引が作成されていれば「true」、作成されていなければ「false」を返します。

検索用の編集ボックスに対して、このフィールドが検索ボックスだということをユーザーに分かってもらうためのヒントを提供したいと思います。
今回は「Search...」という言葉をデフォルト値として追加し、編集ボックスの中をクリックするとこのデフォルト値が消えるようにします。

編集ボックスを選択し、「すべてのプロパティ」セクションに切り替えてください。
「データ」カテゴリの中にデフォルト値を設定する場所があります。

デフォルト値を消すには「onfocus」イベントを使います。
イベントタブに切り替えて「フォーカス」カテゴリから「onfocus」イベントを探してください。
このイベントはユーザーのブラウザ上で動作するようにしたいため「クライアント」のスクリプトエディタで記述することになります。その JavaScript は下記になります。
document.getElementById("#{id:mySearchValue}").value = "";
document はブラウザで表示している現在の文書を参照します。
.getE…

XPages Tutorial Part 50 : 検索機能の作成

イメージ
Creating A Search Function {Original Source}
<< XPages Tutorial Part 49 : LocationEdit XPage を完成させる | TOC | XPages Tutorial Part 51 : 検索バーにファンクションを設定する >>

現在の電話帳アプリケーションは当初設定した目的を達成し完成している状態です。
当初設定した目的のうち残り 2 つに関しては XPages に関連した項目ではないのでこのシリーズでは取り扱いません。
これを完成として OpenNTF にリリースできる状態ではありますが、その前にもうひとつだけ機能を追加しておきたいと思います。

それは XPages アプリケーションに検索機能を追加することです。この機能ではユーザーが検索したい言葉を入力しボタンを押すと検索のプロセスを始めるものです。検索バーを画面の右側に追加したいと思います。

タイトルバーのエリアに検索バーを追加しようと思いますが、ユーザーの視点からアプリケーションのタイトルの一部ではないことはもちろん、サイドバーの一部ではないこと、また現在表示されているデータから検索をしているのかアプリケーション全体を検索しているのかが分かるような場所がふさわしいと思います。

では検索バーを追加していきましょう。「layout_PlaceBar」カスタムコントロールを開き、画面右側のコントロールペインから新しいパネルをドラッグインしてください。
ソースビューに切り替え、このパネルの記述をページの上部移動させます。
ちょうど DIV の下に配置し、下のように名前を付けて「lotusSearch」のスタイルクラスを指定します。


このパネルの中にもう 2 つのコントロールをドラッグインします。
編集ボックスコントロールとリンクコントロールです。
編集ボックスコントロールには「mySearchValue」という名前を指定し、幅を 200px に指定します。


リンクコントロールには、ラベルには分かりやすい名前を入力しておいてください。


ラベルに関しての理由は、文字の代わりにイメージを指定したいからです。
このイメージは、イメージリソースから指定するものです。お好きなイメージをアプリケーションにインポートして指定してくだ…

XPages Tutorial Part 49 : LocationEdit XPage を完成させる

イメージ
Building The LocationsEdit XPage {Original Source}
<< XPages Tutorial Part 48 : チェックボックスをアクションにリンクさせる | TOC | XPages Tutorial Part 50 : 検索機能の作成 >>

今回は以前、Part 22 と Part 23 で行ったことですので簡単に済ませることができると思います。
これまで電話帳を編集するための特別なページを作成し、Web 上からロケーション文書を作成、編集、削除できるようにしてきました。

「content_LocationAdmin」カスタムコントロールに戻ってください。ビューコントロールの最初の列の値をリンクとして表示されるようにしました。

そしてビューコントロール全体に対して、選択した文書を開くページとして「LocationEdit」XPage を指定しました。

すでに Part 46 で「LocationEdit」XPage は作成してあり、現在はレイアウトのためのカスタムコントロールとメインのコンテンツの「content_LocationEdit」カスタムコントロールがブランク状態であるだけです。
今回はこのカスタムコントロールを完成させていきたいと思います。では「content_LocationEdit」カスタムコントロールを開いてください。

まず最初にやることはデータソースを指定することです。ページのメインのプロパティを見て、データセクションに切り替えてください。
Lotus Domino 文書に対する新しいデータソースを追加し、下のように設定します。

データソースが追加されるとデータペインでラベルとフィールドの表を作成することができます。
右側のコントロールペインの上部にデータペインに切り替えるための下向きの 2 つの小さな矢印を確認してください。

データソースからすべてのフィールドを選択してカスタムコントロールの中にドラッグインしてください。

フォーム上の編集ボックスに対して妥当性検査をつけたい場合には Part 33、34、35 を参照してください。ここでは「Location」フィールドは必ず入力されていなくてはならないという検査になるでしょうか。

あと残っているのは文書を保存する、編集するというボ…

XPages Tutorial Part 48 : チェックボックスをアクションにリンクさせる

イメージ
Linking Checkboxes To An Action {Original Source}
<< XPages Tutorial Part 47 : ロケーションをリストするためのビューコントロール | TOC | XPages Tutorial Part 49 : LocationEdit XPage を完成させる >>

前回はビューコントロールの横にチェックボックスを表示させました。
今回はこのチェックボックスで選択されたすべての文書を削除するボタンとリンクさせたいと思います。
では「content_LocationAdmin」カスタムコントロールを開いてください。最初にアクションバーを作成し「Delete Documents」というボタンを配置します。
以前アクションバーを作成したのと同様にこのコントロールに以下のようなソースコードでアクションバーを作成します。
<xp:panel id="panel1" styleClass="lotusActionBar lotusBtnContainer"> <xp:link escape="true" text="New Location" id="link1" outerStyleClass="lotusBtn lotusBtnAction lotusLeft"> <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> <xp:this.action> <xp:actionGroup> <xp:openPage name="/LocationEdit.xsp" target="newDocument" /> </xp:actionGroup> </xp:this.action> </xp:eventHandler> </xp:link> <xp:link esca…

XPages Tutorial Part 47 : ロケーションをリストするためのビューコントロール

イメージ
Using A View Control To List Locations {Original Source}
<< XPages Tutorial Part 46 : ロケーション文書の追加、修正、削除の機能を完成させる | TOC | XPages Tutorial Part 48 : チェックボックスをアクションにリンクさせる >>

ロケーションの一覧をホームページに表示させる際、表の中に繰り返しコントロールを使ってきました。これは表の中のそれぞれの行にマウスを合わせると色を変えたりする効果を与えたり、行の中のどの行でもいいからクリックすると、その文書をクリックしたと認識させることができました。
今回は同じように情報を一覧表示させることができる「ビュー」コントロールをご紹介します。ではどのように設定していくかを見ていきましょう。

「content_LocationAdmin」カスタムコントロールを開いてください。
ここにはまでひとつのパネルしか存在しないブランクの状態です。ここのパネルに「ビュー」コントロールをドラッグインします。「ビュー」コントロール右側のコンテナコントロールにあります。

ドラッグしマウスを離すとダイアログボックスが表示されデータソースをビューコントロールへリンクさせることができます。
現在のアプリケーションから「vw_locations」ビューを選択します。
その下にこのビューで利用できるすべての列が表示されます。
もし XPage 上で表示させたくない列があればチェックをはずすだけです。

では OK をクリックし、ページャが既に組み込まれているビューコントロールを確認します。このカスタムコントロールを保存しブラウザでプリビューします。

この電話帳を編集できるユーザーには、ビューに表示されているロケーション文書をクリックすると自動的に編集モードでページが表示されるようにしたいと思います。
また各行にチェックボックスを追加して、一度に複数の文書を削除できるようにもしていきます。
では先ほどのビューコントロールに修正をしていきましょう。
まず、最初の列を選択し、ビューの列プロパティを見ます。
列表示のいくつかのプロパティがあると思います。

「チェックボックス」にチェックを入れ、「列の値をリンクとして表示する」にチェックを入れ、…

XPages Tutorial Part 46 : ロケーション文書の追加、修正、削除の機能を完成させる

イメージ
Setting Up To Add Edit And Delete Locations {Original Source}
<< XPages Tutorial Part 45 : 既存文書の削除方法 | TOC | XPages Tutorial Part 47 : ロケーションをリストするためのビューコントロール >>

アプリケーションは XPages に関してはほぼ完成しました。
ユーザーはロケーションを選択し、そのロケーション内のスタッフ全員がわかり、ある人を選択すればその人の詳細の情報が確認できます。
また、PhonebookEditor というロールを持っているユーザーは、Person 文書を新規作成したり、編集したり、削除できるようになっています。残すところはロケーション文書の新規作成、編集、削除というところでしょうか。

アプリケーションに必要なものは、PhonebookEditor ロールを持つユーザーが特定のロケーションを選択できるようロケーションの一覧を作成する必要があります。そしてそのロケーションを選択したらロケーション文書にリンクした Xpage を開くことができ、編集と削除ができるようにしなければなりません。そして、新規文書を作成するための「Create」アクションも必要になります。

この機能を実現するために 2 つの新規 Xpage を作成します。
ひとつは「LocationAdmin」、もうひとつは「LocationEdit」にします。
作成には既存の XPage をコピーしてから名前の変更をするといいでしょう。
それから「content_LocationAdmin」と「content_LocationEdit」の 2 つのカスタムコントロールを作成します。
この 2 つのカスタムコントロールは「lotusContent」スタイルクラスが指定されているパネルが一つだけの単純なものから始めます。
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:panel id="lotu…

XPages Tutorial Part 45 : 既存文書の削除方法

イメージ
Deleting A Document {Original Source}
<< XPages Tutorial Part 44 : フィールドにドロップダウンコンボボックスを設定する | TOC | XPages Tutorial Part 46 : ロケーション文書の追加、修正、削除の機能を完成させる >>

電話帳アプリケーションには「Person」文書を作成する機能を作りましたが、削除の機能はどうなるのでしょうか、見ていきましょう。

では「content_Person」カスタムコントロールに新しいアクションボタンを作成し、コントロールペインから新しいリンクコントロールをドラッグインし、必要なスタイルクラスを指定することになるのですが、時間を節約するために、既に作成してあるアクションボタンを再利用することにしましょう。

どれかひとつを選択しクリップボードにコピーし貼り付けます。これで必要なスタイルクラスが定義された状態でボタンを作成できました。

このボタンを選択し、プロパティの中で新しい名前を「Delete Person」と定義します。


このボタンを使用できる人や、正しいタイミングで表示させるために「表示」のプロパティに以下の値の計算コードを入力します。

var s1 = context.getUser().getRoles(); var s2 = "[PhonebookEditor]" if (personDoc.isEditable()) { return false; } else if (@Contains(s1, s2) == @True()) { return true; } else { return false; }
文書が編集モードであれば表示されません、編集モードでも ACL 設定で PhonebookEditor というロールがないユーザーには表示されません。

最後の仕上げとしてこのボタンにアクションを設定します。
イベントタブに切り替え onclick イベントを見てください。
一旦現在設定してあるものを削除して、「アクションの追加」ボタンで分類を文書、アクションを文書の削除を選択してください。

文書が削除された後に次に開く XPage の指定をし、確認テ…

XPages Tutorial Part 44 : フィールドにドロップダウンコンボボックスを設定する

イメージ
Adding A Dropdown Combobox Lookup To A Field {Original Source}
<< XPages Tutorial Part 43 : 新規文書ですべてのフィールドを利用できるようにする | TOC | XPages Tutorial Part 45 : 既存文書の削除方法 >>

「Location」フィールドに対してノーツクライアントベースの開発では、おそらく @DbColumn 式を使って有効なロケーションをドロップダウンリストのとして表示させて選択させることが考えられます。
XPages でも同じようなことが「コンボボックス」コントロールを使用して実現できます。

「content_Person」カスタムコントロールを開き、右側のコアコントロールペインより「コンボボックス」コントロールを「Location」編集ボックスと置換えるようにドラッグインします。
まず最初に以前新規文書を作成する際に実装したようなフィールドを編集するときだけこのコントロールが表示されるように「読み取り専用」プロパティに JavaScript で値の計算を行います。

データタブに切り替え、データソースを「personDoc」、バインド先を「Location」フィールドに指定します。


ここでデフォルト値を設定することができます。今回、セッションスコープの「locationfilter」変数を使用することにします。この変数はは「Creat Person」アクションボタンをクリックしたときと同じロケーションの値が設定されています。きっとエンドユーザーが作成したい「Person」のロケーションが事前にそのようにデフォルト値が設定されていると便利だと思うからです。
では、ダイアモンドをクリックして、次の JavaScript を入力します。「sessionScope.locationfilter()」

コンボボックスのプロパティには「値」というプロパティセクションがあり、ここでドロップダウンボックスで表示させたい値を指定することができます。
「項目の追加」ボタンで値オプションを直接書き込むこともできます。また、「式項目の追加」ボタンで式を書くこともできます。両方を組み合わせるともできます。


式項目を使用する際にはラベルと値がパイプ…

XPages Tutorial Part 43 : 新規文書ですべてのフィールドを利用できるようにする

イメージ
Enabling All Fields On A New Document {Original Source}
<< XPages Tutorial Part 42 : 新規の Person 文書を作成 | TOC | XPages Tutorial Part 44 : フィールドにドロップダウンコンボボックスを設定する >>

XPage を使用して新しく「Person」文書を作成できるようになりましたが、姓名やロケーションが編集モードになっていても編集できないようになっています。当事者以外のエンドユーザーに直接変更されるのを防ぐためでしたが、新規文書の作成時に限ってはこれを無効にしたいと思います。

ノーツクライアント開発では @IsNewDoc という関数があり、文書が作成されていてまだ保存がされていないかを確かめるために使用してきました。XPages では @IsNewDoc() を JavaScript で同様のことができます。

「content_Person」カスタムコントロールを開き、設計ビューから「FirstName」編集ボックスを選択します。プロパティで、「読み取り専用」プロパティをがチェックされているのが確認できます。
これを今回値の計算にし下の JavaScript を記述してください。
if(@IsNewDoc() == 1) { return false; } else { return true; }読み取り専用に設定されていたすべてのフィールドにこのコードを設定してください。
カスタムコントロールを保存し、プリビューした後、新規の「Person」文書を作成し、すべてのフィールドが編集可能か確認してください。


編集モードになると、フィールドに対するラベルが表示されないものがいくつかあります。そこでラベルを追加して、新規文書の作成のときだけ表示されるようにしましょう。

ではラベルコントロールをドラッグインします。ドラッグインしたラベルコントロールのラベルには表示プロパティがありますが、右のダイアモンドをクリックし、先ほど出てきたコードと全く反対のロジックを記述します。


「content_Person」の設計を次のような見た目にしてみましょう。

表を追加するとフィールドやラベルの配置が楽になります。