Monthly Archives: August 2005
Proverbs 29:11
But a wise man holds them back.
Dynamic Domino Web Form Design
There would be three different forms and one agent:
- The agent would read the post back and create/update the document with the field values
- Basic web form shell – would contain the style sheets and the agents for saving and lookups to determine the fields. It would contain a table with two columns when rendered, the first column would be the field description and the second would be the value.
- Form definition – would define the title and the dynamic form alias.
- Field form – Defines the fields that appear on the form. Here is the list of the fields and a brief description
| Form | Multi-value selection of the forms that the field would appear on |
| Order | A number field that would determine what order the field would appear in |
| Enabled | Yes/No |
| Description | Shown in the first column of the table |
| Name | Name used to store the value on the Notes document |
| Visible | Yes/No |
| Editable | Yes/No |
| Default Value | If editable, Use Formula language to determine value |
| Computed Value | If not editable, Use Formula language to determine value |
| Type | Type of field: drop down, list box, check box, radio button, Text, number, Date, Multi-line text |
| Type Attributes | |
| HTML attributes | Style, width, rows … |
| Show calendar selector | Yes/No – Shows the calendar icon next to the field (Date Only) |
| Columns | The number of columns displayed ( check box, radio button) |
| Lookup | Only available for drop down, list box, check box, radio button |
| Reference Lookup Name | The name of the reference lookup (See:http://www.chadsmiley.com/ReferenceLookup for more detail) for more detail) |
| View | Name of the view |
| Filter | For Lookups the value to limit the results (Formula allowed) |
| Return Column/Field Name | The value to return |
| Return Mapping | The field to set when result is returned (Formula allowed) |
| Format (Regular Expressions) | Used for values like numbers, and dates |
| Format Message | Message when value does not match expression, this would be used on the blur of the field |
| Validate | Used for values like numbers, and dates |
| Validate Message | Message when value does not match expression, when trying to submit |
| Goto Field | Yes/No |
| Goto Field Name | If validation failed this would be used to set the focus of the field that failed |
The Form field would now point at the basic web shell form but there would be a second field maybe called FormDynamic that would be used to look up the dynamic form and field information. When composing a new form the URL would look as follows which would load the Team defined fields:
SomeDatabase.nsf?DynamicFormShell?OpenForm&DynamicForm=Team
I would greatly appreciate any feedback/comments on this initial design.
Start LotusScript.doc from Designer
server := ""; database := "lsdoc_beta.nsf" ; FromDBTitle := @DbTitle + "|" + @Implode( @DbName ; "!!" ); @StatusBar( "LotusScript.doc for : " + @Left( FromDBTitle ; "|" )) ; @If( @Text( @DbLookup( "" : "NoCache" ; Server : database ; "Designer Launch"; @RightBack( FromDBTitle ; "|" ) ; 1 ) ) = @RightBack( FromDBTitle ; "|" ); @Return( @Command( [FileOpenDatabase]; server : database ; "Designer Launch" ; @RightBack( FromDBTitle ; "|" ) ; false ; true ) : @Command([ToolsRunMacro]; "(ACTION - Build LotusScript.doc for selected configuration)" ) ) ; "" ); @Command([Compose]; server : database ; "lsdoc_config" ) ; @UpdateFormulaContext; FIELD Title := @Left( FromDBTitle ; "|" ) ; FIELD Server := @Left( @RightBack( FromDBTitle ; "|" ) ; "!!" ); FIELD FilePath := @RightBack( @RightBack( FromDBTitle ; "|" ) ; "!!" ); @Command([ViewRefreshFields]); @UpdateFormulaContext; @Command([FileSave] ); @Command([ToolsRunMacro]; "(ACTION - Build LotusScript.doc for selected configuration)"); @Command([FileCloseWindow])
@UpdateFormulaContext and @Command([Compose])
FromTitle := @DbTitle; FromServerPath := @DbName ; FromDB := @DbTitle + " | " + @Implode( @DbName ; "!!" ); @StatusBar( "From title " + FromTitle ); @StatusBar( "From path " + @Implode( FromServerPath ; "!!" ) ); @StatusBar( "From DB " + FromDB ); @StatusBar( "Before compose " ); @Command( [Compose] ;"" : "names.nsf" ; "Person" ); @StatusBar( "After compose " ); @StatusBar( "After compose From title " + FromTitle ); @StatusBar( "After compose From path " + @Implode( FromServerPath ; "!!" ) ); @StatusBar( "After compose From DB " + FromDB ); @UpdateFormulaContext; @StatusBar( "After Update Formula Context " ); @StatusBar( "After Update Formula Context From title " + FromTitle ); @StatusBar( "After Update Formula Context From path " + @Implode( FromServerPath ; "!!" ) ); @StatusBar( "After Update Formula Context From DB " + FromDB ); @StatusBar( "Names title " + @DbTitle ); @StatusBar( "Names path " + @Implode( @DbName ; "!!" ) ); @StatusBar( "Names DB " + @DbTitle + " | " + @Implode( @DbName ; "!!" ) );
Set Template Version without browsing
As I started working with this more I realized users of Quick Elementer had the same type of request. Which is to be able to access the application using the currently selected template instead of having to browse. The code below will all you to set the Template Version based on the currently selected template.
Here is another Tool that I have I have added to the Tools menu in Designer next to Quick Elementer and Quick Elementer Code.
server := ""; database := "TemplateVersion.nsf" ; TemplateVersion := @DbTitle + "|" + @Implode( @DbName ; "!!" ) ; @UpdateFormulaContext; @StatusBar( "Set template version for " + @Left( TemplateVersion ; "|" ) ); @Command([FileOpenDatabase] ;server : database ; "" ; "" ; @True ; @True ) ; @UpdateFormulaContext; @Command([ViewRefreshFields]); FIELD RecentFilesTX := @Unique( RecentFilesTX : TemplateVersion ); @Command([ViewRefreshFields]); FIELD SelectFileTX := @RightBack( TemplateVersion ; "|" ); @UpdateFormulaContext; @Command([RunAgent] ;"Set Template Version" )
Code formatted using Format Formula as HTML
Why Europeans Hate Americans
I find this hard to believe.
via: The Command T.O.C.
Using Version Numbers to Manage Database Designs
Welcome Chris Doig . I don’t even know Chris but I do like the first couple of posts though. I will be Using Version Numbers to Manage Database Designs for all of my templates. I would like to see one additional feature, the ability to use Template Version from the template I want to version. Chris, I have implemented this in Quick Elementer using toolbar or the Tools menu bar. If started from Designer then I can select templates not just databases like Notes.
Template Version has been offically added to my list of free Domino development tools:
- Template Version (Chris Doig)
- Edit Document Fields (Chad Schelfhout)
- Teamstudio ScriptBrowser (TeamStudio)
- Quick Elementer (openNTF – Chad Schelfhout)
- Trigger Happy (openNTF – Damien_Katz)
- LotusScript.doc (Mikkel Heisterberg)
This is not like the Application Development Tools list that Alan has created but there are a few new ones.
Here are a couple of ideas on how these tools could work together more.
- Having ScriptBrowser and display some of the LotusScript.doc information
- LotusScript.doc report the template version information
Quick Elementer and PickLists
I have been working on new design for the Quick Elementer. My original goal was to have a small foot print, which has grown with the addition of some tags, and Quick Elementer Code. So I have abandoned that goal and now looking for a simpler UI. The selecting of design elements is the trickiest/unusual part of Quick Elementer.
The new design will use views to select design elements instead of text. This will add a little more color and functionality. I am also looking at a Quick Elementer Form which would act like the Quick Elmenter Code but work with Forms or Subforms. Finally, I will be taking a look at the underlining code to see what improvements I can make. I am sure there is some, there always is.
Just need more time, time, more time.
Proverbs 3:27-30
When it is in the power of your hand to do so.
28-Do not say to your neighbor,
“Go, and come back,
And tomorrow I will give it,”
When you have it with you.
29-Do not devise evil against your neighbor,
For he dwells by you for safety’s sake.
30-Do not strive with a man without cause,
If he has done you no harm.