Forum Replies Created
-
AuthorReplies
-
Advansys has posted a free Formativ Express 1.6 installer update to our Web site, which is now available for download here. This release replaces a Beta version which expired on December 30, 2003. The update does not have an expiry date.
If your version of Formativ Express has expired, to use the latest release version, please uninstall the existing version of Formativ, download and run the new Formativ Express installer (formativexpress.exe).
Please do not hesitate to contact us if you have any questions or problems.
Advansys Support
Thank you for your question. Below is a code sample to creates a search results folder that I think matches your requirement.
'------------------------------------------------------------------------ Const FOLDER_NAME_QUERY = "Unopened Items" Sub Main(Client, GWEvent) dim oQuery dim oFolder call GroupWise.Account.Refresh On Error Resume Next set oFolder = GroupWise.Account.RootFolder.Folders.ItemByName(FOLDER_NAME_QUERY) ' Exit, if the folder is exists if IsObject(oFolder) Then MsgBox ("The folder '" & FOLDER_NAME_QUERY & "' already exists in your Cabinet. " &_ "If required, you can rename the existing search folder and run this applet again.") exit sub end if ' Creates a new Query object set oQuery = GroupWise.Account.CreateQuery ' Set up a Filter expression. oQuery.Expression = "(MAIL) AND (NOT OPENED) AND (BOX_TYPE = INCOMING)" call oQuery.Locations.Add(GroupWise.Account.Mailbox) ' Run the query whenever the folder is selected. oQuery.StartOnOpen = true call oQuery.CreateFolder(FOLDER_NAME_QUERY, GroupWise.Account.RootFolder) call GroupWise.Account.Refresh call MsgBox ("The folder '" & FOLDER_NAME_QUERY & "' was created under the root folder.") set oQuery = Nothing set oFolder = Nothing End Sub '------------------------------------------------------------------------
I hope this helps.
Advansys Support
I gather you refer to GroupWise 6.5, which has a Send button on the message view toolbar. Unlike earlier versions, there is no longer a column of Action buttons (including Send) on the right-hand side.
It is not possible to automate the removal/addition of toolbar buttons on this GroupWise View, whether using Formativ or some other GroupWise C3PO (Custom 3rd Party Object). This is because GroupWise does not expose APIs to do so.
Advansys Support
We do not have a sample of JavaScript that improves on sort.htc.
Another way to do this is to sort the tasks in the applet VBScript, rather than using dynamic HTML. You could use a StringList, which has a .Sorted property. In this case, add task data to the .Strings and .Objects properties as follows:
Sort by | String | Object ------------------------------------------------- Prio | .Priority | .Subject Subject | .Subject | .Priority Prio & Subject | .Priority + .Subject |
Once the StringList is filled, simply use it as your source data for the HTML table.
This approach is less interactive than DHTML; it requires re-executing the applet to see the tasks sorted in a different order.
Advansys Support
The following version of your Portal code takes advantage of a DHTML component that you can download from here. To work with this applet, copy the file into your common Application Data folder, eg. C:Documents and SettingsAll UsersApplication Data.
For more information about this, see the article Fun with Tables.
I have used the _ operator to shorten source code lines in the VBScript code, to make it more readable.
In the HTML table, I have added tags
<thead>
,
<tbody>
and replaced the tag
<th>
by
<td>
in order to make the DHTML Behavior work.
Notice the Portal property .HTML is no longer used; .URL is used instead. I have done this to make the DHTML Behavior work correctly. You could still use the .HTML property, which requires embedding the JavaScript in the DHTML component into your source HTML – therefore also into your applet source code.
'------------------------------------------------------------------------------- Const LINK_START = "<A HREF=" Const UID_MARKER = "UID:" Const TABLE_END = "</table>" Const FONT_STYLE = "<FONT STYLE=""TEXT-DECORATION:NONE;FONT-FAMILY:ARIAL;COLOR:RED;FONT-SIZE=8PT"">" Const FONT_END = "</FONT>" Sub Main(Client, GWEvent) Dim iTABLE_BEGIN Dim iHRT Dim iMsg Dim iPortal Dim iPortals Dim iHTML dim iFilter dim iFileName dim oFileSystem dim oMessage dim oMessages iHRT = Chr(13) & Chr(10) Set iPortals = GroupWise.PortalManager.Portals Set iPortal = iPortals.Item("TaskManager") if iPortal is nothing then Set iPortal = iPortals.add iPortal.ID = "TaskManager" iPortal.OpenMessages = TRUE iPortal.NavigationControlsEnabled = FALSE end if iTABLE_BEGIN = "<table style=""behavior:url(sort.htc);"" border=""1"" cellpadding=""0"" cellspacing=""1"">" iHTML = iTABLE_BEGIN & "<thead><tr><td>Prio</td><td align=""left"">Subject</td></tr></thead>" iHTML = iHTML & iHRT & "<tbody>" iFilter = "(TASK AND NOT COMPLETED)" set oMessages = groupwise.account.calendar.messages.find(iFilter) for each oMessage in oMessages iHTML = iHTML & iHRT & "<tr><td align=""center"">" & _ FONT_STYLE & oMessage.TaskPriority & FONT_END & "</td><td>" & _ FONT_STYLE & " " & "<A HREF=UID:" & oMessage.MessageID & _ " STYLE=""TEXT-DECORATION:NONE"">" & oMessage.Subject & "</A>" & _ FONT_END & "</td></tr>" next set oMessages = nothing iHTML = iHTML & "</tbody>" & TABLE_END iHTML = "<HTML><BODY>" & iHTML & "</BODY></HTML>" set oFileSystem = Utilities.FileSystem call oFileSystem.CopyFile(oFileSystem.PathCommonAppData & "sort.htc", _ Utilities.TempFiles & "sort.htc", true) set oFileSystem = nothing iFileName = Utilities.TempFiles & "sort.htm" call Utilities.SaveStringToFile(iHTML, iFileName, true) iPortal.URL = iFileName iPortal.Show iPortals.ActivePortal = iPortal.ID End Sub
You can modify the JavaScript in the DHTML component to suit your needs, eg. sort by more than one table column.
I hope this helps.
Advansys Support
To access the subjects of messages via the GroupWise Object API, use something like the following code sample:
Sub Main(Client, GWEvent) dim iFilter dim oMessage dim oMessages iFilter = "(TASK AND NOT COMPLETED)" set oMessages = Groupwise.Account.Calendar.Messages.Find(iFilter) msgbox oMessages.Count ' The two following FOR statements are equivalent. for i = 1 to oMessages.Count msgbox oMessages.Item(i).Subject next 'for each oMessage in oMessages ' msgbox oMessage.Subject 'next set oMessage = nothing set oMessages = nothing End Sub
On choosing an appropriate user interface, note the significant difference between the HTML dialog and HTML portal. The dialog is modal while the portal is modeless. Be sure to read through the Formativ Programmer’s Guide, on the Portal Manager and/or HTML Dialogs. I suggest you study some example applets that use the Formativ Portal, and that generate HTML to be loaded into a Portal. A good one to start with is the Formativ Applet: Print Message. I hope this helps.
Advansys Support
You may wish to look into the Advansys Message Saver Pack. This solution creates a portable copy of your GroupWise message in a disk file. It includes a Viewer that does not require GroupWise to be installed, and prints both plain-text and HTML format messages.
Best wishes for the holiday season!
Advansys Support
Context menu items are not supported by RemoveMenuItem. However, certain commands can be disabled by blocking their associated tokens (if available), as in the following code sample.
dim iText iText = "Disable (Document | Check In...) command from GroupWise?" if (msgbox(iText, vbYesNo, "Enable/disable menu item") = vbYes) then ' 106 is the token ID for DocumentCheckInDlg() GroupWise.DisableCommand(106) else call GroupWise.EnableCommand(106) end if
We do not know of a way to hide the Documents folder. It may be possible to remove it using the Folder object Delete method, but we do not recommend deleting default GroupWise folders; it might have unpredictable or very nasty results.
Advansys Support
[This message was edited by Support 3 on December 11, 2003 at 04:11 PM.]
I recommend you look at Examples of Valid Filter Expressions. Unfortunately, Novell’s filter reference Filter Expression Syntax is not very helpful.
The filter for all tasks is:
iFilter = "(TASK)"
The filter for all uncompleted tasks is:
iFilter = "(TASK AND NOT COMPLETED)"
You can display tasks in one of the following user interfaces:
- a Formativ dialog (use a ListBoxControl, TabListBoxControl or StringGridControl);
- a HTML dialog, for which you build the HTML dynamically;
- a HTML portal, for which you build the HTML dynamically.
I hope this helps.
Advansys Support
[This message was edited by Support 3 on December 11, 2003 at 03:15 PM.]
Glad to be of some help.
Advansys Support
Always happy to help.
Advansys Support
The menu context for RemoveMenuItem changed in GroupWise 6.5.1. We will update the applet on Cool Solutions very soon. In addition, we will update the documentation on RemoveMenuItem in our Formativ Language Guide.
Here is some sample code that works with all GroupWise versions.
dim iText iText = "Disable (File | New | Document) menu items on the GroupWise client menus?" if (msgbox(iText, vbYesNo, "Enable/disable menu item") = vbYes) then ' GroupWise 6.5.1 or later uses the short menu path. if (GroupWise.EnvVersionName >= "6.5.1") then call GroupWise.RemoveMenuItem("GW.CLIENTFileNewDocument") else call GroupWise.RemoveMenuItem("GW.CLIENT.WINDOW.BROWSERFileNewDocument") end if else call GroupWise.ResetMenuItems call GroupWise.EnableCommand(858) 'AddNewDocument() end if call msgbox("Restart GroupWise to see the changes.")
Advansys Support
Use the Document property of the Portal object. This is the same Document object exposed by the Internet Explorer browser to scripting languages like JavaScript and VBScript. The reference for this object model is at HTML and DHTML Reference.
As for obtaining the HTML for a specific FRAME, I have not done this. In fact, this is not a Formativ issue, rather it involves programming with the HTML document object model (DOM). I would look at Working with Windows, Frames and Dialog Boxes, especially the frames(i).document property (where i is the index of the relevant frame in the web page frames collection).
Advansys Support
We have done a lot of research into this behaviour of the Internet Explorer ActiveX control. The error page seems to appear under different circumstances, often when multiple web site portals are being loaded at once. But it does not always appear for the same URL or set of URLs. It is the browser that cancels the page load. We have not found a way to prevent this behaviour.
The reason the page eventually loads is that the Formativ Portal captures the canceled load, and reloads the page. This is our workaround/cosmetic fix – imperfect, but better than nothing!
We would appreciate it if you could inform us of scenarios that cause this in a repeatable way. We may be able to improve on the existing workaround with the benefit of more data on this behaviour.
Advansys Support
We can send you a sample applet. Please send an email to support@advansyscorp.com so we can post to your email address.
Advansys Support
-
AuthorReplies