Archive for the ‘Development’ Category
April 8, 2008
Recently, we introduced the idea of building a community for those interested in implementing applications with Zoho Creator. So as promised, we’ve built the Zoho Creator Depot site. We are planning to showcase applications in the Gallery and hold virtual meetings at least once a month. From now on, if you want to use Zoho Creator for your business and need some technical assistance or if you are skilled at developing Zoho Creator applications, consider joining the Zoho Creator Depot.
This community will function as a co-op for the benefit of all those involved and it will encourage collaboration and sharing of applications. If you see value in Zoho Creator as a platform for business applications, join us and help us move this forward, and by all means, send us your suggestions and comments.
April 26 Update
- Thanks to all of you who have registered to join the ZCD. We’ll get in touch with you shortly.
- We have received some positive feedback since introducing the idea, and based on some of your suggestions, we have decided to make the Zoho Creator Depot a part of this blog, rather than as an independent site. So here’s a link to the page we will use to register as well as request a service: Zoho Creator Depot Form
March 13, 2008
With this, my first post, I want to invite our readers to comment and vote on an idea we’ve been kicking around here - that of starting the Zoho Creator Depot (ZCD). As we currently envision it, ZCD would be a good destination if you’ve made up your mind about Zoho Creator as your platform of choice to deploy an application and you’re searching for tools, materials and advise or development help .
The ZCD would include:
-
A gallery of production-quality ZC components and applications.
-
Documented Case Studies and Success Stories.
-
A list of ZC developers and consultants, with their credentials and areas of expertise.
-
A knowledge base of different topics that apply to ZC.
-
Frameworks for developing or deploying mash-ups with Zoho Creator
-
A simple way to purchase previously developed components, applications or development services.
As a client of ZCD services, you could resell the application or component and recover part of your original investment. If you sell it multiple times you could conceivably make some money too. And if you’re a developer, ZCD would be a way to connect with your potential clients.
I’m just borrowing ideas from brick-and-mortar places I find useful, like Home Depot, the Weaver Street Market and Play it Again Sports. If there is enough intest in this we’ll go ahead and build some ZC forms, get a Zoho Wiki started and see where this takes us.
February 20, 2008
I can’t say that this code actually returns an accurate value but I was impressed that I could just copy it out of an app I wrote back in July (an app that served as the subject of this blog’s first post, incidentally) and slam it into one of the new ZC function constructs to see it “just work” by returning the string value as one would expect.
The idea is to take whatever zoho.currenttime() is reporting and express it as UTC but I suspect the ZC team has since added features native to the platform that obviate the need for it:
string calculations.CalculateUTCTime()
{
// see http://answers.google.com/answers/threadview?id=560486
grab_time=zoho.currenttime;
epoch_seconds=((grab_time.toLong() / 1000)).toLong();
days=(epoch_seconds / 86400);
days_int=(days.toString().getPrefix(".")).toLong();
day_fraction=(days - days_int);
secs_left_over=(day_fraction * 86400);
hrs=(secs_left_over / 3600);
hrs_int=(hrs.toString().getPrefix(".")).toLong();
hrs_fraction=(hrs - hrs_int);
hours=hrs_int;
secs_left_over=((hrs_fraction * 3600)).toLong();
mins=(secs_left_over / 60);
mins_int=(((mins)).toString().getPrefix(".")).toLong();
mins_fraction=(mins - mins_int);
minutes="";
if((((mins_int).toString()).length() < 2))
{
minutes="0" + (mins_int);
}
else
{
minutes=(mins_int).toString();
}
secs_left_over=((mins_fraction * 60)).toLong();
secs_int=secs_left_over.toLong();
seconds="";
if(((secs_int.toString()).length() < 2))
{
seconds="0" + secs_int;
}
else
{
seconds=secs_int.toString();
}
// see: http://www.jsifaq.com/SF/Tips/Tip.aspx?id=7323
a=(days_int + 2472632);
b=(4 * a + 3);
b=((b / 146097)).toLong();
c=(((0 - b) * 146097)).toLong();
c=((c / 4)).toLong();
c=(c + a);
d=(4 * c + 3);
d=((d / 1461)).toLong();
e=((0 - 1461) * d);
e=((e / 4)).toLong();
e=(e + c);
m=(5 * e + 2);
m=((m / 153)).toLong();
dd=(153 * m + 2);
dd=((dd / 5)).toLong();
day=(0 - dd + e + 1);
mm=(((0 - m) / 10)).toLong();
mm=(mm * 12);
month=(mm + m + 3);
year=((b * 100 + d - 4800 + m / 10)).toLong();
month_str="";
if((month == 1))
{
month_str="Jan";
}
else if((month == 2))
{
month_str="Feb";
}
else if((month == 3))
{
month_str="Mar";
}
else if((month == 4))
{
month_str="Apr";
}
else if((month == 5))
{
month_str="May";
}
else if((month == 6))
{
month_str="Jun";
}
else if((month == 7))
{
month_str="Jul";
}
else if((month == 8))
{
month_str="Aug";
}
else if((month == 9))
{
month_str="Sep";
}
else if((month == 10))
{
month_str="Oct";
}
else if((month == 11))
{
month_str="Nov";
}
else if((month == 12))
{
month_str="Dec";
}
ts=((day + "-" + month_str + "-" + year + " " + hours + ":" + minutes) + ":") + seconds;
return ts;
}
February 18, 2008
We’re starting up a list of folks who want to advertise their Zoho Creator skills to potential clients. Just contact me and I’ll add your info to the the page.
February 6, 2008
After many desperate, impassioned complaints, I see on the ZC blog that there is now SSL Support in Zoho Creator.
Yep, more proof of Zoho’s remarkable commitment to and support of the customers.
January 24, 2008
I could go into a tortured explanation for what knocked us off-line for several days but why waste time telling sad stories? The important thing is that we’re back. Also, I updated the re<form>ation Wufoo wrapper for Zoho Creator and hope to add support for the Dabble DB format soon. Here are some improvements over what I last described: 
- New option to generate and copy/paste static source code for any form configuration
- New option to choose the calendar theme
- New option to specify success message upon successful form save
- Simplified configuration form
- Fixed most IE CSS problems
- Added dynamic generation of title element text based on the Zoho form label
Here are a couple new examples.
January 4, 2008
OK our wufoo-ifier is in a little better shape now. Improvements include:
- Theme preview — updates the Wufoo theme each time you select a new one from the dropdown
- Logo switcher — offers several icons to replace the “Wufoo” logo in the upper left hand corner.
- Multiple calendars — supports many date or date/time pop-up calendars on the same form
- Improved style for required fields — asterisks denoting Required fields now better match Wufoo’s style (still broken in Explorer)
- Better support for IE, Safari, and Opera
Just as an aside, I needed a way to dynamically generate a callback to Calendar.setup in a way that most browsers would support and AppJet came to the rescue in about 10 lines of code:
/* appjet:version 0.1 */
/* apject:server */
var qs = request.params;
response.setHeader('Content-type', 'text/javascript');
page.setMode("plain");
print(raw(
"""Calendar.setup({inputField : """ +
"\"" + qs.inputId + "\"" +
""", ifFormat : """ +
"\"" + qs.formatString + "\"" +
""", showsTime : true, button : """ +
"\"" + qs.buttonId + "\"" +
""", singleClick : true, step : 1});"""
));
Generating a callback with client-side JavaScript can go something like this:
//...
var queryString = '?inputId=' + escape(inputId) +
'&formatString=' + escape(formatString) +
'&buttonId=' + escape(buttonId) +
'&noCacheIE=' + escape(noCacheIE);
calScript.id = 'calendar-setup-' + jsonIds++;
calScript.src = 'http://calset.appjet.net/' + queryString;
calScript.type = 'text/javascript';
calScript.charset = 'utf-8';
// etc., etc..
No fuss, no muss. More on the woofuifier later.
January 1, 2008
ZC2WF can render most Zoho Creator forms using any of Wufoo’s 50 CSS themes. Here are a few examples using some forms from Zoho Creator’s Sample Applications:
I say “most” forms because the service uses a modified version of Zoho Creator’s JavaScript Client API which means it won’t render any File Upload fields (since the Client API itself does not support these) and any client-side Deluge scripting (including the hiding and showing of fields) set up within the “native” ZC form won’t be available in this skinned version of the form.
Another current limitation is that although Wufoo themes have great support for instructions per-field to help the user, Zoho Creator doesn’t include its instructions for the user in the JSON export of its form definitions. If the ZC team can add this info to the export, I’ll happily add it to the service.
Here’s a zip archive of the relevant files, they can be hosted anywhere without too much hassle. Feel free to experiment with your own forms and I’ll post here as more features become available.
Update: I notice the calendar pop-ups aren’t working in Safari and Opera. I’ll fix that soon…
December 20, 2007
Awhile back someone in the Zoho Creator forum asked how to best design a ZC application and I wrote back to the effect that since there isn’t much design involved, it’s best just to suffer through the documentation and play with the interface until you get something close to what you thought you wanted. I’ll now amend that sentiment slightly by stating that it can’t hurt at least to try and write Deluge code that does not induce nausea.
Version 0.01 of Zyndafeed used a kludgy series of shows and hides in conjunction with 50 statically defined form fields to support up to 50 photo uploads. This worked OK from the outside but the implementation is embarrassing and in any case prompting the user with the option to fill out up to 50 text fields on one page is probably ridiculous in the first place.
Version 0.02 takes a different approach (and reduces signficantly the size of our Deluge script) by providing a separate form devoted to image uploads. A one-listing-to-many-photos relationship is established by inserting a listing’s unique_id as a non-unique identifier for rows in the Photos table. When it comes time to generate the feed, any image in the Photos table with a listing id that matches a listing’s unique id gets appended as a a child node. With this change not only are we providing Ted and the BuggyRocket customers with more flexibility (remember that we need to support at least 25 uploads per listing) but we’re also adhering closer to the DRY principle.
Design considerations when hacking out a Zoho application? It can’t hurt. In any case we’ll see what Mark thinks of this new version when he gets a chance to try it out and reply. Some ideas for more features include a monolithic view of listing data instead of views spread over 5 separate screens and some useful filters on whatever views are in place.
December 13, 2007
The AppJet homepage says type some code into a box, and we’ll host your app on our servers which pretty much sums up what they allow you to do.
This app reads JSON from
this Zoho Creator app and converts the values to call the Google Chart API.
Here’s the source.