Archive for the ‘Development’ Category

The Zoho Creator Depot - Turning ideas into Action

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

Groundbreaking for the Zoho Creator Depot

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.

What’s Your Function?

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;
}

Paid Zoho Creator Gigs?

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.

SSLick Feature Addition, Much Anticipated

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.

Land of the Lost

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: Lotl

  • 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.

Wufoo Themes Revisited

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.

Wufoo Themes meet Zoho Creator Forms

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…

Zynd in the Clowns

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.

JSON Export and Google Chart API

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 AppJetthis Zoho Creator app and converts the values to call the Google Chart API.

Here’s the source.