Hi Steve,
I have also been using Tango for a dozen years or more. There are no real
security issues with the product line. Security holes may exist in the browser,
OS, networking protocols, or in the application. For example a well coded
application will prevent users from trying SQL Injection
a sys$encodeResults setting that I think needs to be
false so you can return chars 127.
-Original Message-
From: David Shelley [mailto:[EMAIL PROTECTED]
Sent: Friday, September 07, 2007 1:42 PM
To: Witango-Talk
Subject: Witango-Talk: Secure Images
Hi,
I'm building an application
Hi,
I'm building an application where sensitive information is being stored in
jpeg images. The user can see his own jpegs, but I don't want him to be able
to guess other users jpeg filenames and see their images. So we're storing
the jpegs outside the webroot and using a taf file too retrieve
Hi,
Does anyone know how to configure Witango4 to connect to a POP3 server that
requires secure authentication?
We're using Win2003 and the POP3 server that comes with it.
The weird thing is that we can send messages out to our own domain, but not
to any other domain, such as gmail or
Message-
From: David Shelley [mailto:[EMAIL PROTECTED]
Sent: Wednesday, July 18, 2007 4:31 PM
To: Witango-Talk
Subject: Witango-Talk: FW: Witango 4 and POP3
Hi,
Does anyone know how to configure Witango4 to connect to a POP3 server
that requires secure authentication
Mike,
One way to do it would be to do a hash
encryption on the values then compare them in an IF tag. The encrypted value of
ABC will be different than the encrypted value of AbC.
I havent done it before, so there
may be other ways too.
Dave
-Original Message-
From:
Mark,
In the form tag, add an onSubmit handler, thus:
onSubmit=return(confirm('Is the date '+this.shipdate.value+' the correct
date?'))
That will bring up a javascript confirm box with OK and Cancel. If the
user clicks OK the form is submitted. If they click Cancel the form is not
submitted and
Gerard,
Add a hidden field to the form to hold the
filename, such as:
input type=file name=theFile
input type=hidden name=fileName
Then in your form tag add an onSubmit
handler that does:
>
When the form is submitted youll
get a postarg called fileName that has the full
Another way to do this would be to create an array of all the rows in array1
that are not in array2, and an array of all the rows in 2 that are not in 1,
then append them together.
@assign local$array1 @array value=1;2;4;5;6;
@assign local$array2 @array value=2;3;4;5;6;7;
@assign local$in1not2
I too will be sticking with Witango. I have
been using it since version 1.0 and love the product.
Our structured programming methodology
leads to solid, robust applications. A number of our clients have had us
rewrite unstable applications, coincidently written by some of the people on
A useful debugging technique is to break the tag to see what values are
being passed to it. Change @choicelist to @ choicelist. The tag won't
resolve and you'll see the arrays and selected value passed to it in the
html.
Dave
-Original Message-
From: Ted Wolfley [mailto:[EMAIL
Has anyone ever done Crypt::CBC data encryption in Witango?
I have a client that wants to send me data encrypted using Crypt::CBC
with Cipher Block Chaining Mode. I have to decrypt the data and upload it to a
database for processing. If anyone has done something like this I would
Very cool, yeah it looks like @results grabs all the results up
to that point in the file but where i want to assign the sql/witango to
a variable is somewhere in the middle unfortunately :P
oh well, something for the future hopefully! (:
On 11/10/05, William M Conlon [EMAIL PROTECTED] wrote:
Title: String Conversion Problem
Thats a weird bug. Its
apparently interpreting the E as an exponent, as in 104=104e0.
If you prefix the values in the IF tag with
an ascii character it should
work properly.
OPTION VALUE=@col
1@IF EXPR=('Room@col
NUM=1' = 'Room@VAR request$Room')
I wonder if some of the _javascript_
experts on this list can help me out here.
Im trying to dynamically reset the overflow=x
property on a div tag. For example, I have
[div id=mainContent style=width:600; overflow-x:scroll;
Under some circumstances I want to remove the scroll
for Business
http://custom.softwarefor.net
~ The XML-Extranet Partnership
~ P.O. Box 69006
RPO Bridlewood SW
Calgary, Alberta
Canada T2Y 4T9
-Original Message-
From: David Shelley [mailto:[EMAIL PROTECTED]
Sent: Sunday, September 11, 2005 11:04 AM
To: Witango-Talk
Subject
You should be able to get the column names from row 0. The trouble with
that is that you don't know the data types for the columns. You need to
know the data types, or be able to figure it out from the data, so that
you know which bits of data to wrap in quotes in the insert statement.
Another
I can remember seeing Dan McKenzie and
Rudy Wolfs demonstrate a pre-release version at Dans cottage. They sure
were excited about it! Less than a year later I was working with them too. Sure
seems like a long time ago.
Dave Shelley
-Original Message-
From: Steve Smith
You can trigger a request without redirecting or reloading a page,
either by targeting a hidden frame or iframe, or by appending a script
to your head tag.
The latter is a very powerful technique that can be used to execute a
taf file in the background without refreshing the page. It can be used
Title: Is this possible?
Mark,
Heres a snippet that might help:
@assign request$itemList
@tokenize value=item1,item2,item5
chars=,
select name=item size=6 multiple
option value=item1 @if
expr=@@request$itemList
contains item1 true=selecteditem1/option
option value=item2 @if
Alan,
@timer will give you elapsed milliseconds
Dave
-Original Message-
From: Alan Wolfe
[mailto:[EMAIL PROTECTED]
Sent: Monday, February 21, 2005
12:30 PM
To: witango-talk@witango.com
Subject: Witango-Talk: sub second
timing
Hi everyone!
We just put some
Title: RE: Witango-Talk: Value list Weeks and Dates dynamic
Hi Dan,
This snippet should do what you want:
@assign local$lastSunday @days date=@currentDate days=@calc expr=-@currentDate format='datetime:%w'
@for stop=52
@assign local$nextWeek @days date=@@local$lastSunday days=@calc
I've seen Witango interpret a date as 2000-20-00 00:00:00 when it's been
entered in a format other than what's defined in your timestampformat.
Maybe some app is changing the timestampformat on your server.
You could also turn quoting off and use the MySQL timestamp instead of
the Witango's
You can do this by creating two custom columns in your search action.
Call one @@local$sortAsc and the other @@local$sortDesc. Drag them both
into the Order by box and sort one ascending and the other descending.
Then at run time set local$sortAsc to the column name and local$sortDesc
to NULL
Steve,
You could do something like the break
processing that Mike Young used to teach at Everyware.
Set up a table.
Loop through the resultSet.
Every time the month changes from the
previous record start a new td
For example, if you search is like SELECT StoryID, StoryDate,
Hi Steve,
You have a copy of my Tango Debugging Tools don't you? If so, connect to
your datasource, copy your select statement from the debug code and
paste it in the SQL Command window. Then tweak it manually until you get
the syntax just right. Maybe the column UDisabled is not a text
datatype,
Gene,
Have you checked out Spitfire charts? It's designed to work with Witango
to produce a wide variety of charts.
http://www.spitfirecharts.com/
Dave
-Original Message-
From: Wolf, Gene [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 02, 2003 7:28 AM
To: [EMAIL PROTECTED]
Subject:
Gene,
Assuming you want the data in client side javascript you can do something
like this:
script language=javascript
function objDef(col1, col2)
{
this.col1=col1;
this.col2=col2;
}
myObj = new Array(@numrows);
@rows
myObj[@calc expr='@currow-1'] = new objDef('@column
Atrix,
I've
done this with Tango 4, but not yet with Witango 5. I buildtango log
analysis into my tango debugging toolset. There's a few hurdles to overcome.
First you have to copy the .log file to a .txt file before analyzing it for 2
reasons, the MS Text ODBC driver looks for files with
Dan,
If you're referring to the R:Dba tool I wrote, which was on last years
conference CD, you'll be pleased to know that I've updated it to work with
mySQL, added a number of features, like tango log analysis, and also fixed a
few bugs.
I haven't had time to build the functionality for SQL
John,
It looks like you're building the array effectively. Try sending it by name
rather than by value.
@URL LOCATION=http://www.pfmonline.net/asp_URL.taf;
POSTARGARRAY=local$SendArray
instead of
@URL LOCATION=http://www.pfmonline.net/asp_URL.taf;
POSTARGARRAY=@@local$SendArray
Dave.
Jon,
I have
recently converted several applications from another database to mySQL. Along
the way I built some tools to assist the process.
Depending on the complexity of your database it may or
may not be a simple process. I would be happy to help if you have any specific
questions.
Dave
There's a couple of ways to sort arraysby dates.
1)
format the dates as /mm/dd and do an ascii sort
2)
convert the dates to seconds in another column in your array with
@tstosecs and do a numeric sort on that one
Dave
Shelley
-Original Message-From: Atrix Wolfe
Steve,
You could fix the width of the select tag by adding style=width: 100px;
in the choicelist tag. This will truncate the lines though, rather than
wrapping them.
Dave Shelley
-Original Message-
From: Fogelson, Steve [mailto:[EMAIL PROTECTED]
Sent: Tuesday, April 01, 2003 12:49 PM
Troy,
If you run 2 tango servers you could run a URL on the second one to restart
the first one.
Setup your t4client.ini file so that the plugin only uses the first server,
and define t4cgi2.exe to hit the second server. Write a simple little taf
file to restart the first server, and run it
Title: Re: Witango-Talk: Error DOM with international Charaters on MacOS X
I'm
running into a similar problem. Our XML feed occasionally has Chinese characters
in it.
Is
there an ISO encoding that supports both Latin and Chinese character
sets?
Dave
-Original Message-From: Phil
Steve,
Here's a simple debugging technique that might help. Duplicate the line with
the @if tag, and put a space between the and @ on the first one.
@if expr=('@CGIPARAM CLIENT_IP' != '@@mypidaddress') And
('@@local$nslookup' != '@@machinename')
@if expr=('@CGIPARAM CLIENT_IP' !=
The best way to copy user variables from one server to another is through
XML. Create a taf or tml file on your main server called sendVars.tml for
example, which gets all the user scope variables (@varnames scope=user),
builds XML code with the var names and values and returns it. On your new
I don't seem to be getting messages from the list anymore. In fact I've only
seen one since Sunday, and very few before that. If anyone has asked me a
question and I did not respond, it's because I didn't see the message.
Several people have forwarded this to me directly. Thanks.
OK, My first
Jon,
Here's
a little exampleof a"smart look up" I put together to demonstrate
the first technique I mentioned. See the attached TML file. I had a good example
of the second technique several years ago. I think it was posted on Zaphod. I'm
not sure where it is now.
Dave
Shelley
I've
built several applications that incorporated functionality like this. How you do
it depends in part on how many clients is "too many" for a drop down list.
If
it's a few hundred, you could populate a _javascript_ array with all of them.
Provide the user with a text input box and a
-- Dan SteinDigital Software Solutions799
Evergreen CircleTelford PA 18969Land: 215-799-0192Mobile:
610-256-2843Fax 413-410-9682FMP, WiTango, EDI,SQL
2000[EMAIL PROTECTED]www.dss-db.com
From: "David Shelley"
[EMAIL PROTECTED]Reply-To:
[EMAIL PROTECTED]Date: Thu, 13 Feb 200
Try
encoding=metahtml
That
way the metatags will be evaluated by the server. However if you have any
characters that _javascript_ will choke on, then you may need to wrap a @format
tag around it with encoding=_javascript_.
Dave
Shelley
-Original Message-From: Gerard
Title: Re: Witango-Talk: Re: Receiving Email
Hi,
I'm
building a little tool to analyze tango and witango log files, and I'm looking
for suggestions as to features to build into it.
Currently it willdisplay distinct userReferences or clientIP, the
number of hits and elapsed time for each,
Steve,
You might consider using a direct dbms action instead of a search action.
That way you have complete control over the where clause.
Or, if you have 2 price columns, say retail and wholesale, you could put
both in the criteria:
Products.retail = @if expr='@@user$U_Price_Display=retail'
Aseem,
That 50 lines of ASP code can be done in 3 lines in Witango (thought the
first one is kinda ugly). This will wrap in unseemly places:
@assign local$postArgList @array
value=x_Password,testing;x_ADC_Delim_Data,True;x_ADC_Delim_Character,|;x_Lo
gin,@arg x_Login;x_Card_Num,@arg
Steve,
On the search action criteria tab, set Quote Value to true for the
B_ShopperID column since it's now a text column instead of an integer.
That should do it.
Dave Shelley
-Original Message-
From: Fogelson, Steve [mailto:[EMAIL PROTECTED]]
Sent: Monday, February 03, 2003 1:21 PM
Thanks
everyone for all the assistance, both on the list and off, and for the updated
documentation. I figured it out and have it working properly
now.
Dave
-Original Message-From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
Behalf Of Fergal DonlonSent: Friday, January
Here's a simple little load test tool I put together for my own use.
Feel free to use it if you want.
Dave Shelley
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of John McGowan
Sent: Friday, January 24, 2003 9:39 AM
To: Multiple recipients of list
I'm also working on a project that involves pulling email from a POP3
server. I've found that the lack of good documentation on the subject makes
it a bit of a challange.
Does anyone have any examples they could share?
Thanks.
Dave Shelley
-Original Message-
From: [EMAIL PROTECTED]
Chris,
You can't directly insert an array into a db table.
You may be able to write the array out to a file and use a database IMPORT
command to load it into a table. I doubt that the ODBC driver supports an
IMPORT command but you might be able to call it from a stored procedure,
external action
799 Evergreen Circle
Telford PA 18969
Land: 215-799-0192
Mobile: 610-256-2843
Fax 413-410-9682
FMP, WiTango, EDI,SQL 2000
[EMAIL PROTECTED]
www.dss-db.com
From: David Shelley [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
Date: Wed, 18 Dec 2002 11:21:50 -0500
To: Multiple recipients of list
Steve,
Check your C:\PVSW\Tango2000\Configuration\T4Events.log
You should see something like:
[ 992] 2002-12-14 22:46:43 INFO Parsed 6 entries in crontab
C:\PVSW\Tango2000\Configuration\Crontab.txt.
If you don't see that, check C:\PVSW\Tango2000\Configuration\t4server.ini.
Look for:
Brad,
If you
really want stuff that doesn't appear in either array, @random will
usually work. :)
If you
want elements from one array that are not in the other array you can use
@filter.
@filter array=array1 expr="!(@@array2 contains #1)" (this
assumes both arrays have 1 column )
If you
/Witango or JavaScript code to calculate holidays,
not to look them up from a DBMS?
Would you be willing to share with me/with the list?
Anthony -
- Original Message -
From: David Shelley [EMAIL PROTECTED]
To: Multiple recipients of list witango-talk [EMAIL PROTECTED]
Sent: Thursday
Hi Anthony,
I assume you want to find X business days from a certain date. I wrote
something like that once. You still need to keep track of holidays in a
table or array though. Here's the pseudo code. I'm sure you can write it in
Witango tags. :)
populate an array of holidays
counter = 0
Here's a little snippet that I keep in my snippets folder. It creates a
creates a dropdown of all the subsequent pages. I use it instead of the 110
lines of code in the next X / previous X buttons. It doesn't show links like
you wanted, but the idea is the same. It could be easily modified to make
Garth,
Here's the code for the repeatArgs method. It takes 1 parameter,
excludeArgs, a comma delimited list of args you don't want to repeat, ie
_start in the example below. I mainly use it for multipage forms, but it's
also helpful in this example. A slightly more complex version will handle
It may be a bug in the server related to the order in which the tags are
processed. It looks like it's doing the calc tag before the var tag.
You may be able to work around it by building the whole calc tag in a var
and evaluating that:
@assign local$calcTag value='@literal @calc expr='here fido'
Steve,
You
could put an onSubmit handler in the form tag to refresh the other
frame.
form ...
onSubmit="parent.otherFrame.history.go(0)"
Dave
Shelley
[EMAIL PROTECTED]
-Original Message-From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
Behalf Of Campbell, Steve V.Sent:
Unchecks aren't that hard. Make a group of hidden input fields called
unCheckList with the id of all the records in the resultset, and a group of
checkboxes called checkedList, also with the id's.
@rows
input type=hidden name=unCheckList value=yourIDColumn
input type=hidden
Oops. That second input tag should be type=checkbox. Oh the perils of cut
and paste.
-Original Message-
From: David Shelley [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, December 03, 2002 3:42 PM
To: [EMAIL PROTECTED]
Subject: RE: RE: Witango-Talk: updating multiple records
Unchecks aren't
that ARE
checked.
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of David Shelley
Sent: Tuesday, December 03, 2002 3:42 PM
To: Multiple recipients of list witango-talk
Subject: RE: RE: Witango-Talk: updating multiple records
Unchecks aren't that hard. Make
Jose,
Try this:
@calc expr=prod(@@method$QuantArrayTemp[*,1])
If it's possible that the array may be empty then you should put a 1 in the
prod to avoid an error:
prod(1 @@method$QuantArrayTemp[*,1])
Dave Shelley
[EMAIL PROTECTED]
-Original Message-
From: [EMAIL PROTECTED]
Brad,
The
easiest way to put a blank option at the top of a @choicelist is to add an empty
row to the array before it isused to populate the
choicelist.
@addrows array=local$yourArray value='@array rows=1
cols=@numcols array=local$yourArray'
position=0
Dave
Shelley
[EMAIL PROTECTED]
Rick,
I
think you want a select tag rather than a @choicelist
select name=whatever
@for stop=yourValue
option@currow/@for
/select
Dave
Shelley
[EMAIL PROTECTED]
-Original Message-From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
Behalf Of Rick HadenSent: Sunday,
Peter,
One
way is to track active users in your database. Create a table called ActiveUsers
with columns UserRef, UserName, LastHitTime. On every page you update a user
record in the users record:
UPDATE
ActiveUsers SET LastHitTime = @currentTimestamp WHERE UserRef =
@UserReference
If
category will in turn display a list of avail. items in the 3rd list
and so on.
I am trying to do this with a hidden frame and code that I downloaded by
David Shelley. Creating a frame set like such:
FRAMESET ROWS=100%,0% FRAMEBORDER=1 FRAMESPACING=0 BORDER=0
FRAME SRC=@appfile?function
David,
Assuming that the two arrays have the same number of columns and same column
names, you could add the arrays together:
@addrows array=array1 value=@@array2
then loop through the columns in array 2 and reassign the column headers:
@for stop=@numcols array=array2
@assign
Steve,
We also have a new .ca domain name, tango.ca, and have recieved no negative
feedback from clients in the US or elsewhere.
We have a different problem, we're getting 1000's of hits every day from
people looking for Tango Airlines.
Dave Shelley
[EMAIL PROTECTED]
-Original Message-
Tom,
I use a function called limitLength(). Like this:
function limitLength(field,maxLength) {
if (field.value.length maxLength)
{
field.value = field.value.substring(0,maxLength);
alert('This field will only hold '+maxLength+' characters.');
I prefer to build apps such that it doesn't matter if the user hits the back
button. There is no way I know to ensure that the user can't go back.
Toolbar=no can be bypassed with ctrl-n to open a new window with a toolbar.
And someone here had some software that prevents disabling right click. It
Steve,
The text with html tags is likely being inserted into the database
correctly. The problem is in retrieving it. By default witango will encode
the text to display as html, converting to lt; to gt; etc. Try putting
encoding=none on the column tag that displays the data with html in it.
Tango
3.6 was a FileMaker only version on a Mac. It won't connect to ODBC
datasources.
Dave
Shelley
-Original Message-From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
Behalf Of Samuel NdipSent: Wednesday, October 30, 2002 11:29
AMTo: Multiple recipients of list
Brad,
If I
understand you, my Witango debugging tool does what you're looking for. It
displays records from your database in a spreadsheet like form. Each field has
an onChange handler that fires off a url in a hidden frame to do an update on
the database. So when you change a field and
You could convert both the column reference and postarg to upper case or
lower case.
Specify a custom column reference in your search criteria and enter
upper(colName) = @upper @arg argName.
This assumes of course that PostgreSQL supports the upper() function.
Dave Shelley
-Original
Troy,
The problem is that javascript is run on the client and metatags are run on
the server before the html is sent to the client. If you want to run a taf
every time a JS function is executed, there's a couple of ways to do it.
1) have the JS function fire off a url in a hidden frame.
2) 1
Cornelius,
Try this:
@filter local$array2 expr=!(@var local$array1[*,1] contains #1)
Dave Shelley
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Cornelius Conboy
Sent: Monday, October 14, 2002 11:55 AM
To: Multiple recipients of list witango-talk
Actually you can set up an IIS web server to pass .html files to the Witango
server.
Go to your web server properties/Home Directory/Configuration/App Mappings
and map .html to C:\Inetpub\scripts\t4iis.dll
All your html files will go through the Witango server, if that's really
what you want.
I'm building a Compliance Management System and one of the subsystems
involves assigning tasks to individuals. There's over 400 users, so it's way
too many for a dropdown. What other methods do the experts here use for
selecting one of a large number of users?
In other applications I've used a
I think Ben Johansen has the archives at http://www.witango.ws
To get a file length you could read the file with a file read action and
check its length with @length or @calc expr=len(...) but if it's a
binary file or a very big file this could cause problems. A better way is to
run a DOS dir
Eric,
You could test for that particular userReference, and refresh the page with
a different one if you get it.
As a more generic solution you could check if the referer is empty (or other
than your site), then repost the page with a new userreference.
Dave
-Original Message-
From:
If you're running a secure application it's a good idea to check the referer
on every hit, and if it's not from your site, then purge the user scope and
call your login method. This helps to prevent people from hacking your forms
and changing values. If your application is structured to use a
Binary files will break metatags sometimes.
Try @ifempty @left str=@arg Cat_Banner_Image numchars=5
This will test if the first 5 characters are not empty. Since the file
starts with GIF87a the offending characters should be omitted.
Dave
-Original Message-
From: [EMAIL PROTECTED]
84 matches
Mail list logo